我是如何重置爱爱医任意用户密码的

漏洞概要

缺陷编号:WooYun-2013-017916

漏洞标题:我是如何重置爱爱医任意用户密码的

相关厂商:爱爱医

漏洞作者:se55i0n

提交时间:2013-01-26 12:54

公开时间:2013-03-12 12:55

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

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

Tags标签:

漏洞详情

披露状态:

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

简要描述:

rank不给力,礼物要给力呀!

详细说明:

问题缺陷在“通过手机重置用户密码”,虽然爱爱医的同学在这方面还是下了不少功夫的(限制ip日操作次数、同帐号操作请求次数),且看我是如何突破限制重置任意用户密码的;1)手机注册用户一枚,通过之前的测试发现系统会限制ip日操作次数、同帐号操作请求次数,但是系统没有对手机验证码校验的错误次数做限制;

2)我们可使用爆破的方式获取到用户真实校验码(根据系统response字节长度确定),但是系统限制了校验码使用次数(使用一次即过期),我们无法通过常规渠道利用获取到的真实验证码来重置用户密码;

3)但是我们同时注意到,在爆破到真实验证码时,系统返回了这样一段内容;

4)哈哈,聪明的同学可能都想到了,系统可能会以“ckey”、“rcode”参数值为凭证来进行下一步的密码重置校验,但是我们如何知道是怎样一种逻辑呢,很简单,直接进行一次真正的密码重置并在过程中抓包来分析系统的逻辑;5)通过抓包我们发现,当我们输入真正的验证码时系统会将"ckey"、“rcode”的参数值分别传递给“kcode”和“tcode”参数,并生成如下url请求;

6)如此看来,我们的推断基本正确,那么我们只要爆破到真实验证码就可以获取到“ckey”、“rcode”参数值,当然也就知道了“kcode”和“tcode”参数值,有了上面的参数值我们就能直接重置用户密码了,let's go;7)获取到我们需要的相关参数值;

8)利用上面获取到的参数值构造url请求,直接来到了密码重置环节;

9)输入我们需要重置的密码即可(突破限制利用漏洞演示完成);

漏洞证明:

见详细说明~

修复方案:

漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2013-01-26 14:00

厂商回复:

感谢

最新状态:

暂无

评价

  1. 2010-01-01 00:00 D&G 白帽子 | Rank:404 漏洞数:49)

    怎么突破限制ip日操作次数、同帐号操作请求次数的呢