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

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

缺陷编号:wooyun-2013-032559

漏洞标题:团800重置任意用户密码(绕过限制)

相关厂商:团800

漏洞作者: xfkxfk

提交时间:2013-07-28 09:14

修复时间:2013-09-11 09:15

公开时间:2013-09-11 09:15

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-07-28: 细节已通知厂商并且等待厂商处理中
2013-07-29: 厂商已经确认,细节仅向厂商公开
2013-08-08: 细节向核心白帽子及相关领域专家公开
2013-08-18: 细节向普通白帽子公开
2013-08-28: 细节向实习白帽子公开
2013-09-11: 细节向公众公开

简要描述:

测试了好久,团800重置任意用户密码,终于成功绕过限制

详细说明:

测试分析:
在发送6位数字验证码到手机上后,会同时发送一个请求连接,这个连接有个参数timestamp,如timestamp=1374858328263,这个是发送验证码时的当前时间戳。
然后会发送另一个请求,这个请求是返回到输入验证码的页面,这个请求里面就包含三个参数sms[expired_at],sms[frequency],sms[retry_at],他们的值分别是过期时间戳,频率默认为120,重试时间戳。
但是,这个里面的sms[expired_at]和sms[retry_at]的值,也就是时间戳,是随着前一个请求中的timestamp的值确定的。如timestamp=1374858328263,则sms[retry_at]的值就是1374859528263,timestamp和sms[retry_at]之间相差120秒。然后sms[expired_at]的值就是1374861328263,sms[retry_at]和sms[expired_at]相差180秒。
通过两天的测试,在不改任何数据的情况下,到达sms[expired_at]中的时间后,验证码就会过期,但是当你把时间戳改大后,验证码的有效时间也就会响应的变长。但是这里的sms[frequency]不知道是干什么的,原先以为是timestamp和sms[retry_at]之间相差120秒,这个120秒相关,或者是限制的测试次数,但是改成1后,一样成功爆破,也许上面两种猜测都不正确。
所以通过上面的分析,我们在第一次请求的timestamp中就把值,把时间戳设置大一些,然后,sms[expired_at]的值,也就是过期时间也会变得很大,这样可以绕过现在,进行破解验证码,方法过程如下。
输入手机号:

1.png


选择通过手机找回方式。6位数字验证码就会发送到手机:

2.png


然后抓包,改包,更改第一次请求的时间戳:

2-1.png


然后看到过去时间也改变了,然后把频率改为1:

2-2.png


然后随便输入一个验证码,抓包进行爆破:

3.png


3-1.png


通过返回信息长度以及返回的信息可以确定成功爆破验证码,这里的验证码只能用一次,所以不用返回页面在输入正确的验证码,这里爆破正确后,返回的信息里面就是重置密码的连接:

3-2.png


错的页面如下:

3-3.png


复制返回的连接,可以输入新密码了:

4.png


成功重置:

5.png

漏洞证明:

见详细说明

修复方案:

验证码有效期限制参数不可控即可

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2013-07-29 15:30

厂商回复:

感谢对我们的关注,该漏洞会尽快修复;稍会后送上小礼品,以表谢意;

最新状态:

暂无