事件描述
有一漏洞为XX(公司主业务,一知名网站)的密码爆破重置。初一看没在意,因为今天是在看了各种爆破。后经提醒是XX的,漏洞存在的话实在是严重,我甚至能从我认识的人中找出几个来拿到他们的账号和里面的信息。
漏洞描述
密码重置的手机验证码是四位的,保证了时间上足够爆破成功。
但是网站本身是有次数限制的, burpsuite截取数据包,repeater三次后第四次repeater显示验证码失效,看起来似乎是次数限制,没法成功了(然而)。
之后对验证码进行爆破,因为网站限制了频率,线程过高会503,所以线程设置为2。
前三个一直显示密码错误,在爆破到第四个的时候,显示验证码过期,继续爆破,到了七千左右的时候,intruder卡住了,之后突然又通畅了,显示密码错误。
由此将需要爆破的 0000-9999 一万个验证码重复两遍,也就是两万个叠加在一起爆破,在第二遍的时候基本就没有限制了,可以成功爆破,重置密码。
原理推测
如果重置密码的当前session 次数太多,送入风控系统中封锁一下,但是放在内存中不会一直放着,大概过一段时间就过期了。过期后也不会再因为爆破而进入池子封锁,就能顺利爆破了
测试方法
将一万个验证码重复成两三万,慢慢跑,压低线程突破频率现在,耐心让他跑到最后。
最重要的是,分析返回码不同的原因,看看最后返回码会不会变回来。
修复方法
错误次数达标了,直接这个号封了半小时一小时