最近在重新学习使用 Burp Suite,此物确实乃 Web 安全测试的一大利器。总结了一些较有用设置选项,可用于 SSL 抓包等。
0x00 Burp Suite 工作流程

0x01 设置选项
Proxy 标签页
参考官方文档 Burp Proxy Options
Proxy Listeners
1 Binding
IP 和端口绑定设置,绑定 IP 地址分仅本地回路、所有接口、指定地址三种模式。
2 Request handling

Redict to host:
将 request 转发到指定主机。若该主机与 Host 不同可添加一条 Match and Replace 配置。
Force use of SSL:
强制使用 SSL。适用于开启了 HTST 的站点(在 Response Modification 中对 HTTPS 进行了降级,或使用了 ssltrip)。
Support invisiable proxying:
启用透明代理,详情参考官方文档 Burp Proxy: Invisible Proxying。适用于 non-proxy-aware 客户端(通过改本地 hosts 文件,或 DLL 劫持等方式进行的代理)。
默认从请求的 Host 字段中识别目标主机并转发,若使用了改 hosts 的方式进行代理,则需在 Project options - Connections - Hostname Resolution 中添加该域名的正确记录;若无法识别 Host 字段,则需在 Listioners 中设置上述的 Redict to host。
对于 SSL 流量,若客户端会对服务端进行验证,则会使用该 hostname 生成证书;若不进行认证,则使用自签名证书。若设置了 Redict to host,则可在该 Listener 设置对应 hostname 的 CA-signed 证书;若代理的请求中含有多个目标域名,则可设置多个虚拟网卡与 Listener 并分别生成证书。
3 Certificate

self-signed certificate:
CA 的根证书、使用 openssl 生成的证书为自签名证书,客户端不信任(内置 CA 除外)。
CA-signed certificate:
由 CA 颁发的证书为签名证书。
CA-signed certificate with specific hostname:
适用于使用了 invisiable proxying 或 Redict to host 的 Listener。
custom certificate:
官网有使用 openssl 生成该证书教程 Creating a Custom CA Certificate
4 SSL Pass Through
对于列表中所设置的 域名 / IP / 端口 范围内的 SSL 流量不进行拦截。适用于 SSL 报错影响正常连接、无法消除的场景,例如移动端 APP 产生的请求。
automatically add entries on client SSL negotiation failure:
若 SSL 连接建立失败,则自动将该目标加入到列表中(下次忽略)。
Intruder 标签页
Intruder 在原始请求数据的基础上,通过修改各种请求参数,以获取不同的请求应答。每一次请求中,Intruder 通常会携带一个或多个 Payload,在不同的位置进行攻击重放,通过应答数据的比对分析来获得需要的特征数据。
Positions
1 Attack type
Sniper:
它使用一组 Payload 集合,依次替换 Payload 位置上(一次攻击只能使用一个 Payload 位置)被 § 标志的文本(而没有被 § 标志的文本将不受影响),对服务器端进行请求,通常用于测试请求参数是否存在漏洞。
Battering ram:
它使用单一的 Payload 集合,依次替换 Payload 位置上被 § 标志的文本(而没有被 § 标志的文本将不受影响),对服务器端进行请求,与 Sniper 模式的区别在于,如果有多个参数且都为 Payload 位置标志时,使用的 Payload 值是相同的,而 Sniper 模式只能使用一个 Payload 位置标志。
Pitchfork:
它可以使用多组 Payload 集合,在每一个不同的 Payload 标志位置上(最多 20 个),遍历所有的 Payload。举例来说,如果有两个 Payload 标志位置,第一个 Payload 值为 A 和 B,第二个 Payload 值为 C 和 D,则发起攻击时,将共发起两次攻击,第一次使用的 Payload 分别为 A 和C,第二次使用的 Payload 分别为 B 和D。
Cluster bomb:
它可以使用多组 Payload 集合,在每一个不同的 Payload 标志位置上(最多 20 个),依次遍历所有的 Payload。它与 Pitchfork 模式的主要区别在于,所发送请求中的 Payload 组合为各不同位置 Payload 值的笛卡尔乘积。举例来说,如果有两个 Payload 标志位置,第一个 Payload 值为 A 和 B,第二个 Payload 值为 C 和 D,则发起攻击时,将共发起四次攻击,第一次使用的 Payload 分别为 A 和 C,第二次使用的 Payload 分别为 A 和 D,第三次使用的 Payload 分别为 B 和 C,第四次使用的 Payload 分别为 B 和 D。
Payloads
1 Payloads type

Simple list:
最简单的 Payload 类型,通过配置一个字符串列表作为 Payload,也可以手工添加字符串列表或从文件加载字符串列表。在 Add from list... 中可以添加内置的 Payload 列表,包括 XSS、SQL注入、数字、大小写字母、用户名、密码和目录名等等。
Runtime file:
指定文件,作为相对应 Payload 位置上的 Payload 列表。
Custom iterator:
一共可指定 8 个 position,每个 position 可以指定 Simple list 类型的 Payload,然后所有指定过的 position 进行笛卡尔积,生成最终的 Payload 列表。
Character substitution:
对预定义的字符串进行替换后生成新的 Payload。
Case modification:
对预定义的字符串,按照大小写规则,进行替换。
Recursive grep:
适用于所发送的 Payload 需要提供部分服务端响应的内容(如 CSRF token 等)的场景。对响应内容的提取规则可在 Options -> Grep - Extract 中设置。
Illegal Unicode:
用于基于原始字符串,并由多种规则生成不合法的 Unicode Payloads 绕过基于字符匹配的防御机制。
Character blocks:
用于缓冲区溢出或边界测试。将根据设置的长度、增长步长产生不同大小的字符块 Payload。
Number、Dates:
顾名思义,生成数字、日期形式的 Payload。
Brute forcer:
使用预定字符,基于长度设置生成其全排列作为 Payload。
Null payloads:
不产生任何 Payload,Intruder 将重放指定次数请求。可用于维持 Session 或对具有竞争条件漏洞的应用进行攻击。
Character frobber:
依次修改指定字符串在每个字符位置的值,每次都是在原字符上递增一个该字符的 ASCII 码。可用于测试请求令牌中的不同字符对应用功能的影响。
Bit flipper:
对预设的 Payload 原始值,按照比特位,依次进行修改。
Username generator:
用于基于指定规则,自动生成用户名和 Email 帐号。
ECB block shuffler:
用于测试基于 ECB 加密模式的请求数据,通过改变分组数据的位置方式来验证应用程序是否易受到攻击。
Extension-generated:
基于 Burp 插件来生成 Payload,因此使用前必须安装配置 Burp 插件。在插件中注册一个Intruder payload 生成器,供此处调用。
Copy other payload:
将其他位置的参数复制到当前 Payload 位置上,作为新的 Payload 值,通常适用于多个参数的请求消息中。
其他
更多的设置选项在 这篇文档 中有很详细的记载。不过部分内容感觉是机翻的,阅读起来有些问题,还是建议参考官方文档。
参考资料
- https://www.gitbook.com/book/t0data/burpsuite
- https://portswigger.net/burp/help/contents

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。