漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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]的值,也就是过期时间也会变得很大,这样可以绕过现在,进行破解验证码,方法过程如下。
输入手机号:
选择通过手机找回方式。6位数字验证码就会发送到手机:
然后抓包,改包,更改第一次请求的时间戳:
然后看到过去时间也改变了,然后把频率改为1:
然后随便输入一个验证码,抓包进行爆破:
通过返回信息长度以及返回的信息可以确定成功爆破验证码,这里的验证码只能用一次,所以不用返回页面在输入正确的验证码,这里爆破正确后,返回的信息里面就是重置密码的连接:
错的页面如下:
复制返回的连接,可以输入新密码了:
成功重置:
漏洞证明:
见详细说明
修复方案:
验证码有效期限制参数不可控即可
版权声明:转载请注明来源 xfkxfk@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2013-07-29 15:30
厂商回复:
感谢对我们的关注,该漏洞会尽快修复;稍会后送上小礼品,以表谢意;
最新状态:
暂无