五一前刚打完一次攻防演习,挖到一个挺有代表性的漏洞。
算是一次对登陆窗口的突破,之前也写过一期,大家可以回顾一下:
【实战篇】记一次登陆窗口的漏洞挖掘
话不多说,直接开始今天的内容吧~
Part.1
任意密码重置
任意密码重置
首先通过信息收集,我们找到了一个管理后台:
随意输入用户名/密码,点击“获取安全码”:
会发现只有在用户名/密码正确的情况下,才能顺利获取到安全码。
不知道密码,我们就先来看看“重置密码”功能是否有漏洞可以利用:
打开后界面如下:
可以看到这里只要求输入短信验证码,并不需要输入旧密码。
输入账号/任意验证码,尝试爆破,抓包如下:
发送到intruder模块,设置verfitycode为变量:
选择Brute forcer模式,字符为纯数字,长度为4位数:
//这里如果选number模式,就无法出现0XXX的组合
//刚开始尝试的6位验证码,爆破了半天没反应,后面才试试是否为4位。
爆破了一小会儿后,成功重置用户密码:
Part.2
爆破安全码登陆
爆破安全码登陆
这里我们已经成功重置了一个账号的密码~
去到登陆窗口,发现还需要输入一次验证码:
同样的套路,抓包爆破验证码:
爆破成功,验证码为8624:
但是观察这个响应包,并没有返回“set-cookie”字段来下发cookie。
取而代之的是一串token:
我们拿这个验证码去登陆,也只会提示验证码错误或失效。
这里可以再尝试一下替换响应包,首先开启响应包拦截:
输入任意验证码,发包之后把拦截到的响应包替换为前面登陆成功的包:
发包后成功进入后台,直接是超级管理员权限:
成功突破~
Part.3
扩展
扩展
其实替换响应包这个事,在其他项目里也干过。
比如下面这个,要求输入手机验证码才能查看:
这里输入任意验证码并开启响应包拦截。
将原本的状态码“false”修改为“success”即可绕过: