【实战篇】任意密码重置之验证码爆破

2020-05-09 11:58:27 浏览数 (1)

五一前刚打完一次攻防演习,挖到一个挺有代表性的漏洞。

算是一次对登陆窗口的突破,之前也写过一期,大家可以回顾一下:

【实战篇】记一次登陆窗口的漏洞挖掘

话不多说,直接开始今天的内容吧~

Part.1

任意密码重置

任意密码重置

首先通过信息收集,我们找到了一个管理后台:

随意输入用户名/密码,点击“获取安全码”:

会发现只有在用户名/密码正确的情况下,才能顺利获取到安全码。

不知道密码,我们就先来看看“重置密码”功能是否有漏洞可以利用:

打开后界面如下:

可以看到这里只要求输入短信验证码,并不需要输入旧密码。

输入账号/任意验证码,尝试爆破,抓包如下:

发送到intruder模块,设置verfitycode为变量:

选择Brute forcer模式,字符为纯数字,长度为4位数:

//这里如果选number模式,就无法出现0XXX的组合

//刚开始尝试的6位验证码,爆破了半天没反应,后面才试试是否为4位。

爆破了一小会儿后,成功重置用户密码:

Part.2

爆破安全码登陆

爆破安全码登陆

这里我们已经成功重置了一个账号的密码~

去到登陆窗口,发现还需要输入一次验证码:

同样的套路,抓包爆破验证码:

爆破成功,验证码为8624:

但是观察这个响应包,并没有返回“set-cookie”字段来下发cookie。

取而代之的是一串token:

我们拿这个验证码去登陆,也只会提示验证码错误或失效。

这里可以再尝试一下替换响应包,首先开启响应包拦截:

输入任意验证码,发包之后把拦截到的响应包替换为前面登陆成功的包:

发包后成功进入后台,直接是超级管理员权限:

成功突破~

Part.3

扩展

扩展

其实替换响应包这个事,在其他项目里也干过。

比如下面这个,要求输入手机验证码才能查看:

这里输入任意验证码并开启响应包拦截。

将原本的状态码“false”修改为“success”即可绕过:

0 人点赞