前言:
在测试甲方业务或者挖 SRC 等业务的时候,经常碰到发送短信验证的地方,我们可以联想到的就是任意用户登陆、短信轰炸、任意用户修改密码等逻辑性的漏洞, 简单的漏洞也是需要清晰的思维分析,拿几个短信轰炸多个绕过案例分享,高危挖不动低危拿来凑。
1. 参数污染绕过
参数污染,就是说后台发送短信的时候会取数字那部分,当你混入其他字符之后绕过了对已经发送的手机号码的限制的校验:
2. 变量污染绕过
所谓变量污染呢, 大概因为后台校验了第一个变量的内容都当成了值处理,但是当数据包在传递到后台过去的时候,如果参数名是一样的时候,是会以第二个、第三个、第四个…最后那个参数为基准去传递,因此绕过了后台的限制
3. 数据长度绕过
手机号码的定义是 11 位数,但是后台没有对传递的手机号码做校验长度,比如123=0123=00123,通过该方法来进行一个手机号码的绕过: 【狗的一个漏洞】
4. 修改变量参数绕过
比较常见就是发送验证码的时候前端带入一个状态,通过修改这个状态可以来绕过系统的限制,如已注册的用户不能发送短信或者相反未注册的用户不能发送短信
Flase 改成 true
5. Cookie 替换绕过
换汤不换药,校验用户的凭证放在了 cookie 中,通过修改 cookie 中的某些参数可以打到绕过对以发送/已注册的手机号码进行发送短信:
6. 【空格绕过短信轰炸】【无图】
发送短信的时候是 11 位数,但是数据库没有限制字段长度为 11,通过添加空格绕过了原有的校验,但是后台发送号码的时候,取有效字符前面的字段,导致了出现被绕过的方法。
7. 【验证码可复用导致短信轰炸漏洞】【无图】
在吃了用户名爆破或者密码爆破漏洞亏之后,加入了验证码的校验,但是验证码在发送的时候抓包不放行, 验证码不会失效,引起的短信轰炸漏洞。
8. 【基于 API 接口绕过】 【无图】
这一个漏洞的话, 一般是前台输入手机号码, 发送请求 1 到后台判断是否可以执行发送请求
2, 否的话返回 False 或者 error, 成功的话返回一个 true 或者 success, 只要找到返回的这
个接口, 说不定也可以找到这种漏洞。