哎呦!凡客是屌丝去的购物网站啊!女神去哪里网上购物呢?麦考林那!所以,屌丝们如果你想了解更多关于女神的生活中的细节信息,请关注这里!
1.进入麦考林的主站吧!第一步找到登录的界面,这里是否仍有你多么熟悉的【忘记密码?】链接,那么轻点这里:
2.填写需要重置的账号,由于只是测试 漏洞 存在,这里只用了我自己的账号:
3.填写好手机号码与图片验证码后,点击【提交】。于是给我的手机号发送了重置密码的短信码(为了与图片验证码区别,这里成为短信码)为【551660】,这里随意的填写了一个短信码100000,点击【重设密码】之前设置好 浏览器 的代理为burpsuite!
4.抓包的POST请求如下:
Host: login.m18测试数据
Proxy-Connection: keep-alive
Origin: http://login.m18测试数据
X-Requested-With: XMLHttpRequest
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*
Accept-Encoding: gzip,deflate,sdch
MobilePhone=1*********9&CheckCode=284262从传输的参数容易判断出来MobilePhone是需要重置密码的手机号,CheckCode参数即为短信码。
5.那么开始爆破吧!设置好需要爆破的参数为CheckCode,设置爆破的线程数为100,看看需要多长时间即可爆破成功。我这里为测试只从100000开始:
6.通过返回的字节数或者返回的内容得出正确的短信码:
短信码错误时,返回的字节数为313,而短信码正确时字节数为387;
当然也可从返回的内容来判断是否获取正确的短信码,短信码错误时返回内容包含"检验记录不存在"的字样,短信码正确时返回的内容非常重要,后面会用到!
7.经测试仅仅使用8分多钟就 破解 出短信码,可见危害之大!我拿破解的短信码去重置时,报错了,说短信码错误,难道只能使用一次?
8.木有关系,还记得第6步拿到的返回内容么!
HTTP/1.1 200 OK HdhCmsTest2cto测试数据
Cache-Control: no-cache
Pragma: no-cache
X-Powered-By: ASP.NET
Date: Fri, 09 Nov 2012 10:46:41 GMT
{msgCode:0,msgStr:'操作成功',urlParam:'code=9c0a3c3392991ca77fbd20391040a170&cellphonenum=1*********9&no=4959'}
构造如下链接:
http://login.m18测试数据/contact/contactsetnewpassword.aspx?type=GetPwdByPhone&code=9c0a3c3392991ca77fbd2039********&cellphonenum=*********9&no=4959点击访问,即可进入重置密码的页面!
9.屌丝再次逆袭成功!
修复方案: 1.还有一个很严重的bug,一次取回账号长久可用,我的重置链接如下(怎么获得呢,看第8步),但是评估我的账号被恶意重置以及泄露个人信息的风险,隐去几位字符:
只要拿了上述链接,不用走重置密码的流程即可重新更新密码,另外多次取回密码时的链接时不一样的,但是这些链接都可以同时重置密码,奇葩;
2.6位纯数字短信码的爆破,即平均50万次的请求,我使用了burpsuite测试单台机器100线程,8分多钟即可重置任意一个手机账号!危险啊
3.短信码可以为6位纯数字,甚至可以缩短为4为纯数字;可以不设置图片验证码,甚至可以不用设置短信码的有效期。但是为什么不设置连续5次尝试失败就锁定本次密码重置的请求呢?
查看更多关于麦考林网站修改任意妹子账号密码漏洞 - 网站安的详细内容...