【SRC】Burp Suite 高并发重放测试的三种实战方法详解

admin 2025年6月5日15:21:00评论28 views字数 3797阅读12分39秒阅读模式

 

文章作者:adman

文章来源:https://xz.aliyun.com/news/17643

Burp Suite 高并发重放测试的三种实战方法详解

声明

本文所述内容仅用技术研究与学习目的。请勿将文中技术用于任何未授权的渗透测试或违法活动,因不当使用所引发的一切后果由使用者自行承担。

前言

在渗透测试过程中,我们有时需要以高并发的方式向目标系统发送大量请求,以绕过一些行为限制。例如,在短信验证码接口中,可能存在“一分钟内每个手机号只能请求一次”的限制,此时可以尝试通过高并发手段突破此类防护机制。

本文将介绍三种常用的高并发重放方法,并对其原理与实现方式进行深入解析:

  • 方法一:Turbo Intruder 插件
  • 方法二:Last-byte Synchronization technique
  • 方法三:Single-packet Attack technique

原理介绍

Turbo Intruder

Turbo Intruder 是由 PortSwigger 官方开发的 Burp 插件,基于 Jython 实现,底层利用 Java 的 NIO(非阻塞 I/O)机制,可在极短时间内完成大量请求的发送。该插件支持复杂逻辑编排和响应处理,能够在数秒内发出上万请求,是进行高并发测试的利器。

Last-byte synchronization technique

Last-byte synchronization 是一种经典的并发利用技术,其核心思想是将每个 HTTP 请求分为两个部分发送:大部分内容作为“请求头部”,最后一个字节作为“触发器”。攻击者先将所有请求的“请求头部”发送到服务器,使服务器处于阻塞等待状态(未接收完整请求)。待所有请求就绪后,再同时发送最后一个字节,使服务器在几乎同一时刻处理所有请求,从而可能绕过某些并发判断逻辑或竞争条件。

适用协议分析:

协议 是否支持 说明
HTTP/1.1 支持 允许精确控制字节流
HTTP/2 不支持 由于帧封装和多路复用,无法实现字节级控制

Single-packet Attack Technique

Single-packet attack 是指将多个 HTTP 请求拼接在一个 TCP 包中发送,从而实现“一包多请求”的效果。该方法依赖于 HTTP/1.1 的 pipelining 特性,或 HTTP/2 的多路复用机制,能够有效提升并发速率并规避部分请求级别的检测。

适用协议分析:

协议 是否支持 说明
HTTP/1.1 支持 需开启 pipelining(串行无等待发送多个请求)
HTTP/2 支持 多路复用天然支持并行请求发送

使用方法

使用Burp Suite 官方靶场中《Lab: Limit overrun race conditions》实验进行演示。该实验是要让用户购买一个价值$1337的商品,购买商品时可以使用一张20%折扣优惠券,用户账户只有$50,按照常规思路是无法购买,需要通过高并发操作完成购买。

Turbo Intruder

1、账户余额无法购买商品

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

2、核销优惠券时拦截数据包,发至Turbo Intruder 插件,调整脚本进行高并发重放。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解
【SRC】Burp Suite 高并发重放测试的三种实战方法详解

3、最总以低价成功购买。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

脚本解释如下:

def queueRequests(target, wordlists):

    engine = RequestEngine(endpoint=target.endpoint,
                           concurrentConnections=10,
                           engine=Engine.BURP2
                          )

    for i in range(20):
        engine.queue(target.req, gate='race1')

    engine.openGate('race1')


def handleResponse(req, interesting):
    table.add(req) 

关键参数说明:

参数 必选 类型 说明
endpoint string 请求目标的主机和端口
concurrentConnections int 并发连接数
requestsPerConnection int 每个连接上发送的请求数量
engine string 请求发送引擎(如 BURP、BURP2、THREADED)
pipeline bool 是否启用 HTTP pipelining(仅适用于 HTTP/1.1)

注意:使用 gate 标签(如 gate='race1')可以将多个请求暂存,等 openGate('race1') 被调用时一并发出,实现高并发的效果。

Last-byte synchronization technique

Burp Suite 2023.9 为 Burp Repeater添加了这些高并发功能。可以使用Burp Suite自带功能完成高并发操作,不用安装插件。Burp Suite 官方靶场是HTTP2协议,HTTP2不支持该种技术。特开发本 HTTP/1.1 协议的短信发送模拟服务。

# 每个手机号一分钟内只能发送一条
from flask import Flask, request, jsonify
import time
import threading

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False

# 模拟短信发送记录:{手机号: 上次发送时间}
send_records = {}
# 模拟短信发送函数
def send_sms(phone_number, content):
    print(f"向 {phone_number} 发送短信: {content}")
    # 实际场景中这里会调用短信服务商API
    return True

@app.route('/send_sms', methods=['POST'])
def flawed_send_sms():
    phone = request.json.get('phone')
    if not phone:
        return jsonify({'code': 400, 'msg': 'Phone No is Null'}), 400

    now = time.time()

    # 检查是否1分钟内发送过
    if phone in send_records:
        last_time = send_records[phone]
        # 缺陷点:非原子性检查和更新操作
        if now - last_time < 60:
            return jsonify({'code': 429, 'msg': 'Frequent sending, please try again later.'}), 429

    # 模拟短信发送耗时
    time.sleep(0.1)

    # 记录发送时间
    send_records[phone] = now

    # 发送短信
    if send_sms(phone, "Your Code :123456"):
        return jsonify({'code': 200, 'msg': 'Send SMS Success'})
    else:
        return jsonify({'code': 500, 'msg': 'Send SMS Failed'}), 500

if __name__ == '__main__':
    app.run(debug=True)

1、先创建一个组,用于存放高并发的请求。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

2、在组内添加高并发的请求,例如创建10个高并发请求。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

3、选择高并发技术,该网站是HTTP1.1协议,因此可以选择Last-byte synchronization。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

4、点击“send group (parallel)”即可高并发访问10次。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

 Single-packet Attack Technique

Burp Suite 2023.9 为 Burp Repeater添加了这些高并发功能。可以使用Burp Suite自带功能完成高并发操作,避免插件安装。Burp Suite 官方靶场是HTTP2协议,以下使用Burp Suite 官方靶场中《Lab: Limit overrun race conditions》实验进行演示。

1、先创建一个组,用于存放高并发的请求。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

2、在组内添加高并发的请求,例如创建20个高并发请求。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

3、选择高并发技术,该网站是HTTP2协议,因此可以选择Single-packet Attack Technique。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

4、点击“send group (parallel)”即可高并发访问20次。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

5、高并发共成功使用19次折扣券,1次未使用成功。

【SRC】Burp Suite 高并发重放测试的三种实战方法详解

总结

高并发重放测试在渗透实践中具有重要意义,能够有效检验系统对并发场景的抗压能力与边界条件。本文介绍的三种方法各具特点,适用于不同的协议与测试需求:

技术 并发方式 适用协议 特点
Turbo Intruder 使用线程/引擎高并发 HTTP/1.1 & HTTP/2 简单高效、可脚本化,需要安装插件
Last-byte Sync 拆分字节延迟发送 HTTP/1.1 Burp Suite 2023.9 以后得版本支持,无需借助第三方插件。
Single-packet Attack 拼接请求包同时发出 HTTP/1.1 & HTTP/2 Burp Suite 2023.9 以后得版本支持,无需借助第三方插件。

根据具体测试目标和协议环境选择合适方案,可以极大提升测试效率与成功率。

参考链接

  • 官方靶场
  • Turbo Intruder 官方文档
  • 官方参考文章

原文始发于微信公众号(神农Sec):【SRC】Burp Suite 高并发重放测试的三种实战方法详解

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月5日15:21:00
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【SRC】Burp Suite 高并发重放测试的三种实战方法详解https://cn-sec.com/archives/4135622.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息