介绍

“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