最近看到十二师傅写了篇关于验证码漏洞的文章,觉得总结得很好,也学到了一些新思路,让我受益匪浅,原文链接:

https://www.yuque.com/shier-mfbht/qh4bgb/zcee3k

一、短信轰炸

这类漏洞存在的原因是没有对短信验证码的发送时间、用户及其IP作一些限制。

1、正常的短信轰炸

img

burp一直发包即可

img

img

2、并发绕过

做了限制咋办?可以试试并发(万物皆可并发)

img

img 使用turbo intruder插件进行并发。

img

img

img

并发次数越大是不是轰炸就越多

3、删除Cookie绕过

img

可以尝试把cookie删掉,有些开发就可能根据cookie判断验证码是否获取过

img

4、特殊格式绕过

  1. 手机号码前后加空格,86,086,0086,+86,0,00,/r,/n, 以及特殊符号等
  2. 修改cookie,变量,返回
  3. 138888888889 12位经过短信网关取前11位,导致短信轰炸
  4. 进行能解析的编码。

img

img

二、暴力破解(任意用户登录注册)

服务端未对验证时间、次数作出限制,存在爆破的可能性。简单的系统存在可以直接爆破的可能性,但做过一些防护的系统还得进行一些绕过才能进行爆破。

burpsuite对纯数字验证码爆破时间估计:

  • 对于4位纯数字验证码:从0000~9999的10000种可能用多线程在5分钟内跑完并不是很难。
  • 对于6位纯数字验证码:六位数的验证码1000000位,单从爆破时间上来看就比4位数的多100倍。

img

img

img

三、验证码回显

验证码在返回包,观察包即可

img

img

四、验证码绕过

用户绑定了手机号,正常来说是获取绑定手机号的短信,通过burp修改成其他手机号

img

img

把这个手机号改成其他手机号的

img

点击提交,抓包改成其他刚刚接收短信的手机号

img

img

img

五、验证码转发

img

加个逗号后面接上需要转发的手机号,因为开发可能使用数组就导致同时把验证码发给两个手机号

img

img