介绍
“Turbo Intruder”是一个用于Web应用程序渗透测试的工具,它是Burp Suite的一个插件,用于进行高效的并发HTTP请求。Burp Suite是一个流行的Web应用程序渗透测试工具集,而Turbo Intruder则是其中的一个功能强大的插件。
Turbo Intruder的主要功能包括:
- 高效的并发请求:能够同时发送大量的HTTP请求。
- 定制化的Payload:可以定制HTTP请求的Payload,支持字典攻击、暴力破解等多种方式。
- 高级的响应分析:可以分析HTTP响应,识别潜在的漏洞。
- 自定义脚本:支持编写自定义的Python脚本,以扩展其功能。
使用Turbo Intruder可以帮助安全研究人员和渗透测试人员发现Web应用程序中的安全漏洞,如注入攻击、身份验证问题、逻辑漏洞等。
安装 Turbo Intruder 插件
Burpsuite->Extensions->BApp Store->Turbo intruder->install

抓包并发送到 turbo Intruder

并发配置

可拷贝下面的代码进行配置
https://gist.github.com/Xib3rR4dAr/4bbd6b06cb59efd1a75aa433df22f1f2
def queueRequests(target, wordlists):
engine = RequestEngine(endpoint=target.endpoint,
concurrentConnections=30,
requestsPerConnection=100,
pipeline=False
)
template = target.baseInput
# the 'gate' argument blocks the final byte of each request until openGate is invoked
for i in range(15):
modified_request = i
engine.queue(target.req, modified_request, gate='race1')
# wait until every 'race1' tagged request is ready
# then send the final byte of each request
# (this method is non-blocking, just like queue)
engine.openGate('race1')
engine.complete(timeout=60)
def handleResponse(req, interesting):
table.add(req)
如果我们只是简单的并发请求,不需要替换任何值怎么办?可以增加一个任意的请求头,或者随便增加一个没用的参数,设置它的值是%s
就行了。比如有一些教程里面,使用它进行并发测试要加上一个 req: %s
的请求头,就是这个原因。
执行并发
点击下方的 Attack 发送


原理其实挺简单,我们把请求放到队列里面后,不马上执行,都被堵在gate后面,全部准备好了,直接开门放请求,这时所有的请求就会全部一瞬间过去,实现并发
将响应结果保存到文件
def handleResponse(req, interesting):
with open('/Users/demo/result.txt',"a") as file:
file.write(req.response)
file.flush()
满足条件,自动停止
def handleResponse(req, interesting):
if req.status == 503:
多个占位符
按顺序放到列表中

并发漏洞可以使用分布式锁解决,具体可以查看这篇文章
总结
上面完整演示了一次并发请求的过程
Github
https://github.com/PortSwigger/turbo-intruder#payload-markers
官方文档
https://portswigger.net/research/turbo-intruder-embracing-the-billion-request-attack