越权漏洞

JavaScript034

越权漏洞,第1张

什么是越权漏洞?

越权漏洞是一种很常见的逻辑安全漏洞,是服务器端对客户提出的数据操作请求过分信任,而忽略了对该用户操作权限的判定,导致修改相关参数就可以拥有了其他帐号的增删改查功能,从而导致越权漏洞。

目前存在两种越权方式:横向越权(水平越权)和纵向越权(垂直越权)。

还有一种是交叉越权,交叉越权就是既可以横向越权,也可以纵向越权。

水平越权是指相同权限下不同的账户可以互相访问。

垂直越权是指权限低的用户可以访问权限较高的用户。

水平越权测试方法主要就是看看能否通过A用户操作影响到B用户。

垂直越权的测试思路就是低权限用户越权使用高权限用户的功能,比如普通用户可使用管理员功能。

越权测试流程

把握住传参就能把握住逻辑漏洞的命脉

越权测试

登录A用户时,正常更改或者是查看A用户信息,然后抓取数据包,将传参ID修改为其他用户,如果成功查看或者修改了同权限其他用户的信息就属于水平越权测试。(如果可以影响到高权限用户就是垂直越权),传参ID参数需要自己检测(常见:uid=  id= user= 等)通常使用burp进行爆破传参(传参可能在GET POST COOKIE)

常见越权漏洞

常见平行越权

不需要输入原密码的修改密码,抓包改用户名或者用户id修改他人密码

修改资料的时候修改用户id

查看订单的时候,遍历订单id

未授权访问(关闭前端js)

今天测试时发现一个任意用户登录漏洞,简单记录一下(em...写得真的很简单的那种!)

登录成功后的一个请求,里面包含了当前登录用户的用户名和user_id:

后面紧接着一个包含敏感信息的数据包,如下:

可以看到返回信息中包含了当前用户的密码MD5,且可以正常解密。更换为其他的user_id:

可以看到,返回了其他user_id的密码,但是,正常情况下,只有在成功登录一个用户后才能获取用户的user_id,所以要想登录他人账户,必须要知道user_id值对应的用户名.....,既然系统会有一个返回密码的数据包,那就可能有其他的敏感信息返回数据包,于是打开burp的hsitory,底部搜索user_id,终于在茫茫数据包中发现了一个接口:

一个请求,通过登录用户名,返回信息包含了该用户名对应的user_id:

通过id获取密码:

不断遍历用户名可以获得更多的user_id,也就可以通过上面的请求获取更多的用户密码MD5,通过解密后的用户名密码即可登录任意用户:

漏洞挖掘类型总结

如果你刚刚好是一个刚刚学完基础的小白,如果你刚刚好没有参加各种培训,完全自学。

那么你的漏洞清单可能是这样的。

暴力破解漏洞

sql注入漏洞

命令执行漏洞

xss漏洞(跨站脚本)

csrf漏洞(跨站伪造请求)

xxe漏洞

文件上传漏洞

文件包含漏洞

各cms的公开漏洞

没错差不多就是这样的。当然也有可能一些没用写到,因人而异。

如果你有幸看到一个大佬的漏洞清单。那么有可能除了上面那些,还多了下面这几项     逻辑漏洞

ssrf漏洞

信息泄露 

js文件可能存在的未授权访问

组合漏洞

……

然而这些也只是一部分,不过我不是大佬,不过欢迎大佬补存,下面我就单讲一下我补充的几种漏洞类型吧。

3: 漏洞类型详解

正式开始前插一条,我之前对漏洞的定义有一点点误解,以为只有上面列表上的才是漏洞,其实不然,只要可以给厂商带来损失的全都是漏洞。逻辑漏洞也是基于这条。回顾一下自己的挖掘过程,其实漏掉了很多。

逻辑漏洞

逻辑漏洞也是一个经久不衰的话题,不过逻辑漏洞并不像前面几种漏洞,可以用扫描器去扫,逻辑漏洞目前,据我所知是没有一个扫描器可以敢说自己能扫到逻辑漏洞的。或许有的厂家敢说自己没有一个sql注入,但是没人敢说自己没有逻辑漏洞(我想也没有厂家敢说自己没有sql注入吧,哈哈哈)。而且,由于现在waf,和防火墙的逐渐完善,sql注入,上传等漏洞,也越来越难以查找和利用,而逻辑漏洞则不存在这种问题。

何为逻辑漏洞,就是由于开发者在开发过程中,由于代码逻辑不严,而造成的一系列可以被攻击者加以恶意利用的漏洞。而逻辑漏洞也是一类漏洞的总称。

举个例子最为常见的就是以低价购买任意价格的东西的支付漏洞,或者找回密码流程控制不严格,导致的可以修改任意用户的登陆密码,还有越权,越权查看他人订单,越权查看他人个人信息等等。

当然这只是一部分,我这里也只是一个引子,具体漏洞的原理以及介绍大家可以去自行搜索关键字,有很多大佬的文章就写得比较好,不然我这篇文章就要写个几十页了。一些漏洞详情大家可以去看乌云。

信息泄露

信息泄露漏洞顾名思义就是信息泄露,信息泄露也分好多种,如。

对于源码泄露,大家可以去github上找,很多程序员会把源码开放在github上,甚至有的人用户名密码都不改的,数据库连接密码啊直接存在源码中,当然想我这种菜鸡找到这种源码泄露就直接提交了,有能力的大佬,直接就是一波审计,然后嘿嘿嘿。而对于员工信息泄露,可以在收集信息的时候收集账号,然后放在社工库跑跑,或者记录下来账号用来爆破。

组合漏洞

组合漏洞是一个可以吧低危漏洞变成高危漏洞的一个神奇的东西。比如你找到一个xss漏洞和一个csrf漏洞,如果两个漏洞单独提交,或许是两个低危,或许是两个忽略。但是如果你把你的xss和csrf组合起来就有可能变成一个高危漏洞,打组合拳,key师傅组合拳打的很厉害,向师傅看齐,key师傅给我说,挖到低危不要着急提交,存起来,万一某一天碰见一另一个漏洞,组合一下,就可以一发入魂了。

说个小技巧,如果你想要详细的漏洞列表,可以去多收集几家src的漏洞说明手册,然后去重,就是一份完美的漏洞列表。

4:个人提高漏洞挖掘能力的方法

这一节讲一下挖掘漏洞应该如何提高和应该有哪些好的习惯。

细心放在第一位,是因为细心真的是非常非常非常重要,我有幸请教过很多大佬成功的秘籍,他们告诉我的第一个词语就是细心,正所谓心细则挖天下。很多漏洞都是需要细心才可以发现,不放过数据包中的任何一个参数,不放过网站的任意一个点,我曾问过团队的小石师傅,如何挖掘那些很多人都挖过的src,这么多人都挖过,一些功能点我还要在测一遍吗。小石师傅并没有给我直接回答,而是讲了他一个漏洞的挖掘经历,那是挖美团的时候,小石师傅直接主站开始挖,并且在个人资料一个很明显的地方,挖到了一个储存xss的高危漏洞。所以,在我们进行漏洞挖掘的时候,不要放弃任何一个可能存在漏洞的地方,每个人都有不同的挖掘方式,网站这么大,总会有几个漏测的地方,并且一个漏洞修复了,谁敢保证,修复完了,就不能再修一个漏洞出来了呢。

耐心

耐心同细心一样,可以说是一对cp。如果你本身就足够信心,那么我想你的耐心也不会差。如果说细心是你漏洞挖掘的利剑,那么耐心就是你的磨刀石,很多时候,碰到一个破站盯几天才能挖到一个漏洞,你坚持下来了就是胜利者,有人说挖洞,也是个运气活,运气好了随随便便就是几个高危,运气不好,几天也挖不到一个。虽然有一定的道理,但是当你的能力足够强,有了自己的套路,想挖漏洞还是轻松加愉快。

会看、会记

会看,会记。这个就简单了,就是要多看多记,多看漏洞详情,多看技术文章,漏洞详情可以在乌云看,还有网上很多人分享的案例,主要是乌云。看完就要记,要让你看的东西真正的成为你的东西,如果你面对一个厂商,还是有无从下手的感觉,就去乌云看漏洞详情,一个一个看,然后把漏洞出现的位置,以及使用的一些技巧记下来,成为属于自己的漏洞挖掘手册,这也是我最近在做的一个事情。还有一些好的文章,好的技巧,或许你一时半会也用不到,但是你要学会记,总有用到的一天。

懂收集

key师傅说过,漏洞挖掘说白了就是一个fuzz的过程,而fuzz最关键的是什么,就是一本高效的字典,没错我们要学会收集字典,想公开的字典有fuzzdb,是一个非常好的fuzz字典合集,当然我们在收集他人字典的同时我们也要自己收集字典,曾经看到一个大佬,搜集了github大量的开发项目的路径,然后组成字典。我也不要求小白可以写程序然后自动收集字典,但是,我们在平时的漏洞挖掘过程中,遇到的一些东西还是要多多的去收集一下,逐步慢慢的形成自己的一本专用字典,绝对可以提高你的漏洞挖掘效率。当你有一本自己收集的字典时,相信你也成为一名大佬了。

勤动手

当你看了大量漏洞,记了大量笔记,这个时候,我相信你最需要的,就是实战,实战是可以把所学所看融会贯通的最快方法,没有之一,只有实战可以锻炼自己的挖洞能力,和效率。看到新的漏洞多去搭建环境复现,这也是对能力的一种提升。

 

、注入点及万能密码登录

2、登录时,不安全的用户提示:比如提示用户名不存在或者密码验证码错误

3、查看登录页面源代码,看是否存在敏感信息泄露

4、不安全的验证码

5、在注册账号的时候,是否存在不安全的提示

6、不安全的密码,在注册账号的时候密码没有限制复杂度

7、任意无限注册账号

8、在暴力破解的时候不会限制ip,锁定用户

9、一个账号可以在多地登录,没有安全提示

10、账户登录之后,没有具备超时功能

11、OA,邮件,默认账号等相关系统,在不是自己注册的情况下,应该在登录之后强制要求更改密码

12、逻辑漏洞,任意更改密码

13、越权漏洞,纵向、横向越权

14、数据包含有风险信息泄露,比如COOKIE

15、不安全的数字传输,密码为明文,未使用https证书

16、任意文件下载

登陆页面渗透测试常见的几种思路与总结

我们在进行渗透测试的时候,常常会遇到许多网站站点,而有的网站仅仅是基于一个登陆接口进行处理的。尤其是在内网环境的渗透测试中,客户常常丢给你一个登陆网站页面,没有测试账号,让你自己进行渗透测试,一开始经验不足的话,可能会无从下手。今天就来简单说一下如何在只有一个登陆页面的情况下,来进行渗透测试。

1、在条件允许的情况下,我们可以拿在渗透测试的开始之前拿出我们的扫描器来进行扫描,目前我们最常用的就是AWVS和Nessus,除此之外,我们还可以使用一些别的自动化测试工具,例如Nikto扫描器,Appscan,W3af,以及最近长亭科技的Xray扫描器,都可以试试。尤其是Xray扫描器,据说有许多小伙伴靠它挖到了许多漏洞。

2、SQL注入

万能密码绕过

如果我们能够直接绕过登录,来直接访问系统内部资源,那自然是最好不过的了。万能密码就是其中一最好用的一种,虽然存在的可能性不大,但是偶尔也是存在的,稍微尝试一下也不会浪费太多时间。

例如admin'or 1=1 --

"or "a"="a

万能密码在网上非常多,随便搜一下就有

例如这样,就能直接访问后台

3、登录口SQL注入

有的系统在登录口就存在SQL注入,目前我遇到过比较多的是Oracle以及MySQL的登录口注入,我们可以在登录处先抓一个包,然后根据抓包信息来构造Payload。值得一提的是,有时候我们需要在Burp里修改一下发包格式(change body encoding),才能成功注入。

4、明文传输/用户名可枚举/爆破弱口令

明文传输

可能是我们做渗透测试中,最常见的一种漏洞,实际上它并不能算得上是一种漏洞,仅仅只能说是一种不足之处而已,明文传输在网站上随处可见,除了银行网站,很有可能每一个密码都是经过特殊加密然后再进行传输的。

用户名可枚举

此漏洞存在主要是因为页面对所输入的账号密码进行的判断所回显的数据不一样,我们可以通过这点来进行用户名的枚举,然后通过枚举后的账户名来进行弱口令的爆破。防御手段的话仅需要将用户名与密码出错的回显变成一样即可,例如用户名或密码出错。

爆破弱口令

弱口令可以说是渗透测试中,最最常见,也是危害“最大”的一种漏洞,因为毫无技术性,毫无新意,但是却充满了“破坏性”,尤其是在内网环境中,弱口令更是无处不在。Web页面最常用的爆破工具为Burp,我们通常使用Nmap扫描也可能扫出其他端口存在,例如3389,SSH等。

5、扫描

目录扫描

JS扫描

JS文件我们在渗透测试中也是经常用到的东西,有时候我们可以在JS文件中找到我们平时看不到的东西,例如重置密码的JS,发送短信的JS,都是有可能未授权可访问的。

nmap扫描

Nmap的强大功能能让我们第一时间获取网站的端口信息,而这些端口信息中常常可以给予我们非常大的帮助,例如开放了3389端口,或者一些敏感端口的探测,Nmap的使用方法相比不需要我再多说,每个安全工程师都必须要精通的一种工具,以下是我的一些端口小总结,希望可以给与大家一点儿帮助。

注册页面

注册页面批量注册

注册覆盖(重复注册他人账号)

短信邮件炸弹

手机验证码是否可爆破(老生常谈,Burpsuite抓包爆破四位验证码)

图片验证码是否可绕过(验证码缺失、验证码失效数据包重放、万能验证码0000、验证码空绕过、验证码前端获取(极少数情况))

登录页面

弱密码、无验证码爆破、万能密码(后台登录,用户登录次数限制)

手机验证码登录是否可以进行短信炸弹

url跳转漏洞(主要用来钓鱼,对于绕过和利用百度搜索已有大量文章,不赘述)

登录处是否可绕过(对于大多数没有cookie的网站)

用户名枚举(观察返回包提示或者返回包参数变化)

忘记密码

手机验证码是否可爆破

修改密码流程是否可跳过

任意用户密码重置

短信邮件炸弹

一个“登录框“引发的安全问题_zhangge3663的博客-CSDN博客_登录安全问题前言搞安全的小伙伴只有一个登录框你都能测试哪些漏洞?通常大家测试的都会测试关键部分,为了有更好的测试效果,小厂会提供给你用户名密码;但是一些比较重要的企业,而这个环境却是正式环境,里面存放着一些数据不希望被你看到的时候,是不会提供给你登录账号的。这个时候,考研你基础知识是否扎实的时刻来临了。用户名枚举漏洞描述:存在于系统登录页面,利用登录时输入系统存在的用户名错误密码和不存在的用户名错误密码,返回不同的出错信息可枚举出系统中存在的账号信息。测试方法:找到网站或者web系统登

https://blog.csdn.net/zhangge3663/article/details/117417064登陆页面渗透测试常见的几种思路与总结! - linuxsec - 博客园

https://www.cnblogs.com/linuxsec/articles/11519196.html

业务逻辑漏洞--注册-登录-改密码页面总结 - 求知鱼 - 博客园

https://www.cnblogs.com/Qiuzhiyu/p/12530698.html登录界面-渗透测试 - 超人还可以飞 - 博客园由图展开思路: 登陆页面的渗透测试 首先 在进入登陆界面时,一般都是先用万能密码什么的测下输入框有没有注入(现在很少见了)。如果没有,那就先拿admin,123456什么的测试下弱口令,不求

https://www.cnblogs.com/Risk2S/p/11447279.html

登录页面渗透测试思路总结_gududeajun的博客-CSDN博客_登录页面渗透测试登录页面可能产生哪些漏洞呢?1、注入点及万能密码登录2、登录时,不安全的用户提示:比如提示用户名不存在或者密码验证码错误3、查看登录页面源代码,看是否存在敏感信息泄露4、不安全的验证码5、在注册账号的时候,是否存在不安全的提示6、不安全的密码,在注册账号的时候密码没有限制复杂度7、任意无限注册账号8、在暴力破解的时候不会限制ip,锁定用户9、一个账号可以在多地登录,没有安全提示10、账户登录之后,没有具备超时功能11、OA,邮件,默认账号等相关系统