业务安全之短信&邮箱验证码
业务安全之短信&邮箱验证码
短信&邮箱验证码轰炸
本文对目前网络上与业务安全相关的短信&邮箱验证码进行整理。
收集自:
国外BountyTips
乌云漏洞库
各大安全类媒体(论坛、公众号等)
0x01 特殊符号绕过短信&邮箱轰炸限制
Request
1 | phone=111*****123 或 email=test@aa.com |
Response
1 | {"status":"0","message":"发送太过频繁"} |
特殊符号绕过
Request
1 | phone=111*****123 或 email=test@aa.com |
1 | 00 |
0x02 修改返回值绕过短信&邮箱轰炸限制
Request
1 | phone=111*****123 或 email=test@aa.com |
Response
1 | {"status":"0","message":"发送太过频繁"} |
修改返回值绕过
拦截返回包,将Response中的status值修改为1
1 | {"status":"1","message":"发送太过频繁"} |
0x03 修改IP绕过短信&邮箱轰炸限制
Request
1 | phone=111*****123 或 email=test@aa.com |
Response
1 | {"status":"0","message":"发送太过频繁"} |
修改IP绕过
推一个burp插件
1 | burpFakeIP是一个伪造ip地址进行服务器爆破的burpsuite插件,主要用来躲避防火墙封锁 |
使用请看以下文章
(71条消息) 【渗透测试】—如何用burpsuite伪造IP_通地塔的博客-CSDN博客_burpsuite ip伪造
Request
1 | phone=111*****123 或 email=test@aa.com |
Response
1 | {"status":"1","message":"发送成功"} |
0x04 修改Cookie绕过短信&邮箱轰炸限制
Request
1 | Cookie:JSESSIONID=xxxxxxxxxx |
Response
1 | {"status":"0","message":"发送太过频繁"} |
修改Cookie绕过
①删除cookie
Request
1 |
|
②重新获取一个新的cookie
换个浏览器重新获取就行了
Request
1 | Cookie:JSESSIONID=yyyyyyyyyy |
0x05 参数污染绕过短信&邮箱轰炸限制
Request
1 | phone=111*****123 或 email=test@aa.com |
Response
1 | {"status":"0","message":"发送太过频繁"} |
参数污染绕过
Request
1 | phone=111*****123&phone=111*****456&phone=111*****789 |
可能一次性3个手机号都接收到验证码
也可以都写同一个手机号试试能不能接收到3次短信
之前看到过一个案例
还可以这样
1 | phone=111*****123,111*****456,111*****789 |
或
将参数改为数组形式绕过短信轰炸限制
Request
1 | phone[]=111*****123 或 email[]=test@aa.com |
0x06 并发绕过短信&邮箱轰炸限制
推一个burp插件
turbo intruder
可在 burpsuite 的 BApp Store 直接安装该插件
团员成员十二的案例里有
1 | https://www.yuque.com/shier-mfbht/qh4bgb/zcee3k |
注意下数据包里要加个 req:%s
0x07 通过写脚本定时发包绕过短信&邮箱轰炸限制
Request
1 | phone=111****1234 或 email=test@aa.com |
Response
1 | {"status":"0","message":"请60s后再发送"} |
用python写个脚本加个 time.sleep(60) 每60s后发包即可
短信&邮箱验证码转发
两个案例来自团队成员十二
0x01 修改请求包实现短信&邮箱验证码转发
案例一
用户绑定了手机号,正常来说是获取绑定手机号的短信,通过burp修改成其他手机号
把这个手机号改成其他手机号的
点击提交,抓包改成其他刚刚接收短信的手机号
0x02 特殊字符实现短信&邮箱验证码转发
案例二
加个逗号后面接上需要转发的手机号,因为开发可能使用数组就导致同时把验证码发给两个手机号
参数污染也可能实现转发
Request
1 | phone=111*****123&phone=111*****456&phone=111*****789 |
还有数组的方式
Request
1 | phone=111****1234 或 email=test@aa.com |
修改为
1 | phone=[111****1234,111****4567] 或 email=[test@aa.com,test@bb.com] |
短信&邮箱验证码弱耦合
0x01 验证码未与请求宿主绑定
手机号1点击获取验证码,得到验证码未ZXCV。
手机号2输入验证码ZXCV,成功通过验证。
0x02 验证码未与特定功能点绑定
找回密码处获取短信验证码
然后到登陆处使用刚刚获取的短信验证码,成功通过验证。
短信&邮箱验证码回显
案例来自十二
短信&邮箱验证码DDOS
这个例子是个特例
案例如下
一张验证码引发对DOS的思考 - 简书 (jianshu.com)
(71条消息) 渗透测试之验证码参数可控造成的 DDOS 攻击漏洞_Adminxe的博客-CSDN博客
刷新验证码,若发现在请求头中有对验证码参数可控的操作,可以尝试是否能引发DDOS
短信&邮箱验证码内容可控
经典TikTok案例
https://www.freebuf.com/vuls/224963.html
乌云案例
https://wooyun.website/show.php?uid=bI5ic82NWiGyJ0N2LJqTerytFYVGC6CPj4oNOH3b
额外的补充
漏洞挖掘在于细心尝试,可能前台登陆处发送短信验证码不存在任何漏洞,但是可以尝试登陆后查看后台中是否有与发送短信&邮箱验证码相关的功能点,例如投诉、反馈、绑定、换绑、礼品兑换等等。
参考:
国外:
https://blog.deteact.com/common-flaws-of-sms-auth/
国内: