关注我们

从挖掘任意用户注册学习BurpSuite

网友投稿网友投稿 渗透测试 2019-02-01 148359 0

任意用户注册

通过抓包发现,某网站存在设计缺陷,将用户注册验证码或者密码找回的验证码下发到了客户端。如下图

从挖掘任意用户注册学习BurpSuite

此时,拿到验证码正当我兴高采烈的去注册这个土豪手机号的时候,系统提示我验证码错误。根据我多年的挖洞(吹牛)经验我觉得问题出在我将服务器返回的验证码通过burpsuite拦截以后并未将这段json数据返回给ajax(网页异步刷新)。查看前端代码发现确是如此。

从挖掘任意用户注册学习BurpSuite

那么问题就来了,如果直接使用Forward的话我们的json数据确实是传给了前端,但是如何拦截并且查看它的验证码?@xz小妹妹给我了一种方法就是在Proxy的options里面有一个replace的功能,它可以匹配到我们设置好的正则表达式然后去替换。因为burp我没有发现可以直接在response增加语句的功能,所以暂且使用这种方法。

从挖掘任意用户注册学习BurpSuite

这个功能还是很强大的,以前竟然没发现- -
针对这个漏洞,这里我们只需要将服务器返回的reponse中的关键代码给替换了,使其从response获取到json的内容,并且通过操纵dom数,输出验证码到指定位置。通过观察代码,我们只需要如下设置:
匹配Response body模块,然后:

Match: json['mobileCode']

Replace: json['mobileCode']); document.getElementsByClassName('btn-set-code')[0].textContent = json['mobileCode'];//

这样一来,就使验证码直接输出到了前端。效果见下图。

从挖掘任意用户注册学习BurpSuite

可以看到更改后的代码

从挖掘任意用户注册学习BurpSuite

任意用户密码重置

在挖到任意用户注册以后,本能的去看了下它的找回密码功能,是通过获取验证码来重置的,不出我所料,这个点也是把验证码下发到了客户端。

从挖掘任意用户注册学习BurpSuite

但是让我奇怪的是这里它的一行关键代码竟然加了注释符号。不过无关紧要,我们照样使用这种方法,最终将验证码输出到前端以便于我们利用。

Match://$

Replace:$("#mobilecode").val(json['mobileCode']);document.getElementsByClassName('btn-set-code2')[0].textContent = json['mobileCode'];//

最终效果如下

从挖掘任意用户注册学习BurpSuite

后面成功重置密码XD

版权声明

本文仅代表作者观点,不代表黑白网立场。
如文章侵犯了您的权利,请通过邮箱联系我们删除
E-Mail:server@heibai.org

喜欢2发布评论

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址