来源:自学PHP网 时间:2015-04-17 11:59 作者: 阅读:次
[导读] 1.这是是买卖宝的主站哦,进入买卖宝的账号登陆页面:http://www.mmb.cn/wap/login.do?uuniq=1359436782529555当然我们这里不登陆,而是点击【忘记密码?】按钮,进入密码重置流程:http://www.mmb....
1.这是是买卖宝的主站哦,进入买卖宝的账号登陆页面:
http://www.mmb.cn/wap/login.do?uuniq=1359436782529555
当然我们这里不登陆,而是点击【忘记密码?】按钮,进入密码重置流程:
http://www.mmb.cn/wap/findpassword/sendBandPhoneNum.do?findPasswordIndex=1&uuniq=1359436785443054
2.注册过的用户都得用手机验证,才能用手机号进行密码找回。
填写需要重置的账号,即验证的手机号码,由于只是测试漏洞存在,这里只用了我自己的账号:
3.点击提交,此时已经给我的手机号发送了重置密码的短信验证码了:
4.查看手机收到的短信码为【0788】,我首先输入任意的4位纯数字短信码1234,点击提交,则返回如下错误,记得此时设置好浏览器代理:
5.同时,看到的抓包请求为:
POST /wap/findpassword/sendCheckCode.do?uuniq=1359437254334359 HTTP/1.1
Host: www.mmb.cn
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.mmb.cn/wap/findpassword/sendCheckCode.do?uuniq=1359437104139014
Cookie: JSESSIONID=D*******************56DD6F039F-1.e; JSESSIONID=2F582EE5*****************5935.e; newOpu=92caf70*****************************9e1
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 58
phone=150********&checkCode=1234&button=%E6%8F%90%E4%BA%A4
上面的参数checkCode=1234为短信码,而参数phone=150********为手机号码。
6.写了那么多,开始吧:设置好参数code为需要爆破的参数,开始暴力猜测
7.通过返回的字节数或者返回的内容得出正确的短信码:
短信码错误时,返回的字节数为7471,而短信码正确时字节数为6645
这里成功破解短信验证码为0788.
8.那么使用爆破完的短信码重置账号吧!
9.成功重置密码:
修复方案:
1.还有一个很严重的bug,上述途中也可以看见,他说有两种方法重置密码:
a.点击短信中的链接,修改密码
b.输入收到的验证码,修改密码
在发送手机验证码时,还发送有一个连接,http://www.mmb.cn:80/wap/c.do?r=3IWB,此链接可直接重置密码,而且从连接中看出,只要破解出r参数的值就可重置密码,搞不懂这是什么方法。。。
只要拿了上述链接,不用走重置密码的流程即可重新更新密码;
2.4位纯数字短信码的爆破,即平均1万次的请求,我使用了burpsuite测试单台机器100线程,1分钟不到即可重置任意一个手机账号!危险啊
3.短信码可以为4位纯数字;可以不设置图片验证码;甚至可以不用在这里设置短信码的30分钟有效期。但是为什么不设置连续几次尝试失败就锁定本次密码重置的请求呢?
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com