Burp Suite Pro 高级用法:Repeater / Intruder / Turbo Intruder

前言

Burp 是 Web 渗透的瑞士军刀。免费版够用但 Pro 版才是完全体。本文聚焦 Pro 版独有功能和高级技巧。


一、Repeater 高效工作流

快捷键清单

Ctrl+I       发送到 Intruder
Ctrl+R       发送到 Repeater
Ctrl+Shift+I 发送到 Organizer
Ctrl+Tab     切换 Repeater 标签
Ctrl+D       添加 payload 标记
Ctrl+F       查找
Ctrl+H       Burp 主菜单
Ctrl+K       把 Repeater 请求拆成多个
Ctrl+M       手动设置数据边界
Ctrl+T       把响应发给 Comparer

高级技巧

技巧 1:快速参数切换
鼠标悬停在参数上,按左右箭头快速切换值

技巧 2:自动解析 JSON / gzip
Options -> Display -> Unpack gzip / deflate
右键 "Pretty print" 格式化 JSON

技巧 3:多标签批量重发
右键 Repeater 标签 -> "Duplicate tab"
改成不同的 payload 分别测试

技巧 4:宏(Macros)自动处理
Project options -> Sessions -> Macros
每次请求前先刷新 token

技巧 5:Organizer(Pro 独有)
批量管理请求,设置并发数、延迟、失败重试

二、Intruder 高级用法

攻击类型

Sniper(狙击手)
- 一个 payload 位置,一个 payload 列表
- 一次只替换一个标记位置
- 适合同一参数的批量测试

Battering ram(破城锤)
- 多个 payload 位置,同一个 payload 列表
- 所有位置用同一个 payload

Pitchfork(干草叉)
- 多个 payload 位置,多个 payload 列表
- 每个位置用自己的 payload 列表,按行对齐

Cluster bomb(集束炸弹)
- 多个 payload 位置,多个 payload 列表
- 笛卡尔积(所有组合都试)
- 暴力破解标配

Payload 类型 + 处理链

Payload 生成器:
1. Simple list          自己写 payload 列表
2. Runtime file         从文件动态读
3. Custom iterator      自定义迭代(日期、IP 范围)
4. Character ranges     字符范围
5. Numbers              数字范围
6. Case modifications   大小写变体
7. Recursive grep       从响应里 grep 新 payload 再递归注入

Payload Processing(关键):
Payload 进入位置前会经过 Processing 链

实战 1:SQLi 需要 base64 编码
Payload: ' OR 1=1 --
Processing: URL encode -> Base64 encode

实战 2:登录暴力破解
位置 1: username (Simple list)
位置 2: password (Simple list -> Add prefix "P@" -> MD5)

Turbo Intruder(Pro 独有)

# Turbo Intruder 是 Pro 版的极速 Intruder
# 用 Python 脚本写攻击逻辑,支持 1000+ 并发

# Example 1: 简单字典爆破
def queueRequests(target, wordlists):
    engine = RequestEngine(endpoint=target.endpoint,
                          concurrentConnections=10,
                          requestsPerConnection=100,
                          pipeline=False)
    for word in open("/path/to/wordlist.txt"):
        engine.queue(target.req, word.rstrip())

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

# Example 2: 登录爆破 + 成功检测
def queueRequests(target, wordlists):
    engine = RequestEngine(endpoint=target.endpoint,
                          concurrentConnections=20,
                          requestsPerConnection=100)
    for user in open("usernames.txt"):
        for pwd in open("passwords.txt"):
            body = "username=" + user.strip() + "&password=" + pwd.strip()
            engine.queue(target.req, body)

def handleResponse(req, interesting):
    if "Login successful" in req.response or req.response.status == 302:
        table.add(req)

# Example 3: IDOR 越权批量测试
def queueRequests(target, wordlists):
    engine = RequestEngine(endpoint=target.endpoint,
                          concurrentConnections=50,
                          requestsPerConnection=200)
    for user_id in range(1, 10000):
        # 请求里把 user ID 标记成 §user_id§
        engine.queue(target.req, str(user_id))

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

三、Scanner 配置(Pro 独有)

主动扫描(Active): 修改请求 -> 可能造成业务影响
被动扫描(Passive): 只看响应 -> 安全

什么时候主动扫?
- 开发测试环境
- 客户明确授权
- API 接口有限范围测试

什么时候被动扫?
- 生产环境(默认)
- 客户有严格限制

主动扫描配置:
1. Target -> Live scanning -> 添加目标
2. Scan configuration -> Scan
   Crawl strategy: fast / deepest
   Link depth limit: 5
3. Audit strategy -> Scope
   Only audit selected endpoints
4. Issues -> Filter
   只扫 Critical 和 High
   忽略某些参数(search 框会造成 XSS 误报)

自定义扫描规则:
- 只扫特定参数名(id, user_id, order_id)
- 添加自定义 payload 到 Burp Payload Library
- 右键误报 -> "Suppress this issue" 自动记住

四、必装扩展

核心(必装):
1. Logger++          比自带 HTTP history 强 10 倍
2. Turbo Intruder     极速 Intruder(Pro 版)
3. Authorize          自动化越权测试(Pro 版)
4. Param Miner        自动发现隐藏参数
5. Shine Burp         关键按钮置顶

渗透辅助:
6. Retire.js          识别过时 JS 库及其 CVE
7. Wappalyzer Integration  直接看技术栈
8. Header Analysis    分析响应头安全配置
9. JSON Web Tokens    JWT 查看器 + 编辑器 + 攻击
10. Attack Surface Detector  反编译 JAR 找攻击面

五、实战场景

场景 1:登录暴力破解

1. Proxy 抓登录请求
2. 发到 Turbo Intruder
3. 写脚本(见上方 Example 2)
4. 20 并发跑 1000 用户名 x 1000 密码
5. 发现成功登录(返回 dashboard 或 302)

场景 2:越权批量测试

1. 登录低权限用户
2. Burp Suite -> Authorize 扩展
3. 设置两个身份:User A(低权限)、User B(高权限)
4. Authorize 自动替换 Cookie 重发所有请求
5. 看 User B 能不能看到 User A 的数据

场景 3:参数枚举

1. 打开 Param Miner
2. "Guess the parameters"
3. Param Miner 用布尔盲注原理:
   在请求里加 ?debug=1 看响应变化
4. 找到隐藏参数后手动测试注入

六、推荐资源


七、Burp 快捷键速查卡

主菜单:
Ctrl+Shift+R   主菜单
Ctrl+Shift+H   切换顶部工具栏
Ctrl+Tab       在标签页中切换
Ctrl+Shift+Tab 反向切换
Ctrl+T         新建 Repeater

Repeater:
Ctrl+R         发送请求
Ctrl+Shift+R   从文件加载
Ctrl+Shift+P   保存请求
Ctrl+D         添加 payload 标记
Ctrl+E         展开/折叠参数
Ctrl+F         查找
Ctrl+M         手动设置边界

Intruder / Scanner:
Ctrl+I         发送到 Intruder
Ctrl+Shift+I   发送到 Organizer

Payload 处理:
Ctrl+U         URL 编码
Ctrl+Shift+U   URL 解码
Ctrl+B         Base64 编码
Ctrl+Shift+B   Base64 解码
Ctrl+H         HTML 编码
Ctrl+J         JSON 格式化

八、Burp 常见问题

Q: Pro 版值得买吗?
A: 做渗透或 Bug Bounty 绝对值得。
   Pro 独有:Turbo Intruder、Scanner、Organizer、Authorize、Param Miner。
   一个 Critical 漏洞赏金就能覆盖一年 license。

Q: Mac 上 Burp 很慢?
A: Java 17 + -Xmx4096m + 关闭不常用扩展 + 清理 History。

Q: 自动处理动态 Token?
A: Sessions -> Session handling rules:
   1. Run a macro 自动重新登录
   2. Check session is valid 过期自动刷新
   比如:请求前调 /api/login 拿新 token 替换到当前请求

Q: JSON Body 注入?
A: 右键 -> Content-Type -> JSON
   选中值按 Ctrl+D 标记
   发到 Intruder / Repeater

Q: Burp 能当批量扫描器用吗?
A: 不太适合。扫描用 Nuclei + ffuf。
   Burp 适合手工精细化调整。

Q: Scanner 误报太多?
A: 右键误报 -> Suppress this issue
   Scan configuration -> Issues -> Filter 只扫特定类型