由内存过期失效引起的密码爆破

事件描述

有一漏洞为某大型购书网的密码爆破重置。初一看没在意,因为今天是在看了各种爆破。后经提醒是业务主站的,漏洞存在的话实在是严重,我甚至能从我认识的人中找出几个来拿到他们的账号和购书记录、电子书笔记等。

漏洞描述

密码重置的手机验证码是四位的,保证了时间上足够爆破成功。

但是网站本身是有次数限制的, burpsuite截取数据包,repeater三次后第四次repeater显示验证码失效,看起来似乎是次数限制,没法成功了(然而)。

之后对验证码进行爆破,因为网站限制了频率,线程过高会503,所以线程设置为2。

前三个一直显示密码错误,在爆破到第四个的时候,显示验证码过期,继续爆破,到了七千左右的时候,intruder卡住了,之后突然又通畅了,显示密码错误。

由此将需要爆破的 0000-9999 一万个验证码重复两遍,也就是两万个叠加在一起爆破,在第二遍的时候基本就没有限制了,可以成功爆破,重置密码。

原理推测

如果重置密码的当前session 次数太多,送入风控系统中封锁一下,但是放在内存中不会一直放着,大概过一段时间就过期了。过期后也不会再因为爆破而进入池子封锁,就能顺利爆破了

测试方法

将一万个验证码重复成两三万,慢慢跑,压低线程突破频率现在,耐心让他跑到最后。

最重要的是,分析返回码不同的原因,看看最后返回码会不会变回来。

修复方法

错误次数达标了,直接这个号封了半小时一小时

-664

原文地址:https://www.cnblogs.com/huim/p/8215235.html