Burp插件之Turbo_Intruder

安装

可以在 burpsuite 的 BApp Store 直接安装该插件,也可以在它的 github 地址下载手动安装插件。

GitHub : https://github.com/PortSwigger/turbo-intruder
BApp Store : https://portswigger.net/bappstore/9abaa233088242e8be252cd4ff534988

Turbo Intruder 低层原理

Turbo Intruder 使用自定义的 HTTP 栈来和服务器进行通信。
首先它会使 Connection: keepalive 头发起 HTTP 请求,如果是使用默认的 Connection: close 头,那么每次和服务器建立 HTTP 请求时都要重新建立一条 TCP 连接,这样比较浪费时间。
Connection: keepalive 头可以复用同一条 TCP 连接来发送多个 HTTP 请求, 这样就可以节省重复建立 TCP 连接的时间,使用 Connection: keepalive 头后速度是原来的 400% 。
另外, 它还使用了 HTTP Pipelining (HTTP 管道)的方式来发送 HTTP 请求,这种方式会一次性发送几十个 HTTP 请求到服务器, 然后再一次性读取几十个请求响应。通过 HTTP 管道的方式,速度是一开始的 6000% !

使用

选中数据包右键选择 Extensions - Turbo Intruder - Send to turbo intruder
学习笔记/Hacker/Burp/assets/Pasted image 20240919141245.png

此时会打开一个新的窗口,该窗口上半部分区域为原始的HTTP请求包,下半部分为操作代码,中间部分可以根据场景从下拉框中选择具体操作代码。每次打开时此处默认为Last code used,即为上次使用的代码。
学习笔记/Hacker/Burp/assets/Pasted image 20240919141316.png
代码区需要使用%s 字符来代替需要进行Fuzz的部分。选择对应的操作代码点击最下方Attack即可开始攻击。

模板

并发测试

在请求包任意位置添加 %s

操作代码如下:

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)

参考

https://blog.csdn.net/ma963852/article/details/129585309
https://blog.csdn.net/qq_28205153/article/details/113832488
https://www.cnblogs.com/backlion/p/18088702
https://sanshiok.com/archive/16.html