搜索
查看: 983|回复: 0

任意用户密码重置漏洞挖掘之路(一)

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2017-3-20 17:02:55 | 显示全部楼层 |阅读模式
仅供学习交流
首先要注册两个账号,为什么要注册两个账号呢?
因为一个账号是用来走正常找回密码流程(Fuzz),另外一个账号是用来作测试的!(我通常都是这样做,如果有不正确的地方还请大家指点,不要因为我让大家误入歧途
漏洞产生的原因:
开发人员将服务器返回的值作为更改密码的校验,没有做二次验证,所以我们可以通过抓包改包工具(burpsuite)来修改服务器返回的值(因为他是在前端验证的,所以我们还可以通过修改前端代码来绕过)
重置姿势:
修改前端代码绕过
改包
Fuzz思路:
0x01 正常找回
0x02 利用缺陷修改密码
0x01 正常找回
我们先正常的走下找回密码的流程(我有一个习惯就是,喜欢用network)先获取验证码
通过查看,验证码并没有像http://www.xxxx.com/mobile?=132***&?code=123456一样,将验证码显示在URL里,也没有返回值中。那么我们继续往下测
当我们输入正确的验证码之后,它成功给我们跳转到了第二步!

成功修改密码!

0x02 利用缺陷修改密码
在0x01 正常流程中,我们是先获取验证码,然后再验证,如果正确,那么就跳转到第二步,如果不正确,就断在了第一步!在这里的话,我们跳过获取验证码,直接下一步! 因为我们要绕过这个验证啊。。获取不获取都无所谓了!
先输入一个错误的验证码,和正常流程中做比较
如下图


既然这样,我们用burpsuite改下response包,看下他是否跳转到步骤二!
然后放包,看下是否跳转

成功跳转到步骤二!并且成功修改了密码
我们再来看看它前端的代码

跟一下nextDo2()
关键在跳转第二步,如果status 等于0 那么跳转第二步,如果不等于0 那么就提示验证码不正确!
只要 status 等于0 它就跳转第二步(经过黑盒测试,发现他并没有二次验证),那么我们可以这样改if(data.status != 0 )当status不为0的时候跳转步骤二

放包之后,我们验证码随便输!就当作是你给妹子带了个眼罩,谁上都一样!

验证失败又怎样?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表