Burp Suite 使用教程:从入门到精通
什么是 Burp Suite?
Burp Suite 是一款用于 Web 应用安全测试的集成平台,由 PortSwigger 公司开发,它集成了多种渗透测试工具,形成一个协同工作的环境,安全专家可以使用它来执行各种任务,如:

- 侦察和信息收集
- 漏洞扫描
- 手动渗透测试
- 自动化攻击
Burp Suite 的核心思想是作为一个中间人代理,拦截你浏览器和目标服务器之间的所有网络流量,并允许你查看、修改和重放这些请求。
Burp Suite 的版本
Burp Suite 主要分为四个版本,了解它们的区别很重要:
-
Community (社区版):
- 免费,适合初学者学习基本概念。
- 功能限制:没有 Intruder、Repeater、Decoder、Comparer 等核心工具,功能非常有限。
-
Professional (专业版):
(图片来源网络,侵删)- 付费,这是渗透测试人员使用最广泛的版本。
- 功能齐全:包含了所有核心工具,是进行专业渗透测试的标准。
-
Enterprise (企业版):
- 付费,在专业版基础上增加了团队协作、扫描策略管理、报告生成等企业级功能。
-
Intruder (攻击者):
- 注意:这不是一个独立的版本,而是 Professional 版本中的一个核心工具。
本教程将以 Professional 版本为基础进行讲解。
安装与配置
-
下载:
- 访问 Burp Suite 官网。
- 下载并安装 Community 版或购买并安装 Professional 版。
-
安装 Java 环境:
- Burp Suite 是一个 Java 应用,确保你的系统已安装 Java 运行环境,你可以从 Oracle 官网 下载并安装。
-
启动与首次配置:
- 运行
burp-suite-ce.jar(社区版) 或burp-suite-pro.jar(专业版)。 - 配置浏览器代理:
- 目标:让浏览器的所有流量都通过 Burp。
- 步骤:
- 在 Burp Suite 的 "Proxy" -> "Options" 选项卡中,确认监听端口(默认
8080)和监听地址(默认0.0.1)。 - 打开你的浏览器(推荐使用 Firefox 或 Chrome,并安装
SwitchyOmega插件,方便管理代理)。 - 在浏览器或 SwitchyOmega 的代理设置中,配置 HTTP 和 HTTPS 代理为
0.0.1,端口为8080。 - 重要:为了能解密 HTTPS 流量,你需要在 Burp 的 "Proxy" -> "Options" -> "SSL" 选项卡中,勾选 "Decrypt HTTPS traffic",这会生成一个 CA 证书,你需要将这个证书安装到你的浏览器中,否则 HTTPS 网站会显示不安全。
- 在 Burp Suite 的 "Proxy" -> "Options" 选项卡中,确认监听端口(默认
- 测试:配置完成后,在浏览器中访问
http://burp,如果能看到 Burp 的证书安装页面,说明代理配置成功。
- 运行
核心功能模块详解
Burp Suite 的界面由多个标签页组成,每个标签页代表一个功能强大的工具。
Proxy (代理) - 流量拦截器
这是 Burp Suite 的核心,所有浏览器流量都会经过这里。
- Intercept:流量拦截开关,开启时,所有请求都会被暂停,等待你的处理。
- Forward:放行当前请求。
- Drop:丢弃当前请求。
- Action:对请求进行各种操作(发送到其他工具、保存等)。
- HTTP history:记录所有经过代理的请求和响应,你可以在这里查看、搜索和分析历史记录。
- Options:代理配置,如监听端口、SSL 解密等。
使用场景:当你手动浏览网站时,可以实时看到每一个后端 API 请求和服务器响应,这是理解应用工作方式的第一步。
Intruder (攻击者) - 自动化攻击器
用于自动化地对一个或多个位置发起攻击,是 Burp 最强大的工具之一。
-
Positions (攻击位置):
- 你需要先在请求中标记要攻击的位置,标记方式有四种:
- 简单标记,替换整个值。
- 标记为空,用于在前后插入 payload。
§g§:标记为 grep,用于在 payload 中包含特殊字符。- 自定义标记:使用
§custom§。
- 使用技巧:选中要替换的部分,右键选择 "Add to positions" 或使用快捷键
Ctrl+Shift+U。
- 你需要先在请求中标记要攻击的位置,标记方式有四种:
-
Payloads (攻击载荷):
- 这是攻击的核心,即你要用来替换标记位置的“字典”。
- Burp 提供了多种 Payload Set 类型:
- Simple list:简单的列表,一行一个 payload。
- Runtime file:从文件中动态读取 payload。
- Numbers:生成数字序列。
- Brute forcer:暴力破解,组合字符。
- Character blocks:用于模糊测试。
- Payload Generator:生成特定格式的 payload。
- Sniper:单位置攻击,对每个 payload,只替换一个标记位置。
- Battering ram:对每个 payload,同时替换所有标记位置(使用同一个 payload)。
- Pitchfork:多位置攻击,使用多个 payload 列表,按位置一一对应替换。
- Cluster bomb:多位置攻击,使用多个 payload 列表,进行笛卡尔积式组合替换。
-
Options (攻击选项):
- Grep - Match:定义匹配规则,当响应中包含这些内容时,认为攻击成功("用户名已存在"、"登录成功"等)。
- Grep - Extract:定义提取规则,从响应中提取特定信息(从
Set-Cookie头中提取 session ID)。 - Request:配置攻击时的一些细节,如线程数、重定向等。
使用场景:暴力破解密码、SQL 注入、XSS 漏洞探测、目录遍历等。
Repeater (重放器) - 手动测试工具
用于手动修改和发送单个 HTTP 请求,并查看服务器的响应。
- 使用流程:
- 在 "Proxy" 或 "Target" 标签页中,找到一个你感兴趣的请求。
- 右键点击,选择 "Send to Repeater"。
- 在 "Repeater" 界面中,左侧是请求,右侧是响应。
- 你可以随意修改请求中的任何部分(URL、参数、Header、Body 等),然后点击 "Go" 按钮发送,并观察响应的变化。
使用场景:手动验证漏洞、测试业务逻辑、修改请求参数进行越权操作等。
Decoder (解码器) - 编解码工具
用于对数据进行各种编码和解码操作。
- 编码/解码类型:Base64, HTML, URL, Hex, etc.
- 使用方式:将数据输入到 "Input" 框,选择操作类型,点击 "Decode" 或 "Encode"。
使用场景:处理经过编码的参数、绕过 WAF 过滤、理解数据格式。
Comparer (比较器) - 响应比较工具
用于并排比较两个 HTTP 响应,找出其中的差异。
- 使用方式:
- 从 "Repeater" 或 "HTTP history" 中,将两个响应文本分别拖到 "Comparer" 的左右两个窗口。
- 点击 "Compare" 按钮,Burp 会高亮显示不同之处。
使用场景:在模糊测试或注入测试中,比较正常响应和异常响应,找出注入点。
Extender (扩展器) - 扩展平台
允许你加载第三方扩展或自己编写的 Java 扩展,以增强 Burp 的功能。
- BApp Store:一个内置的应用商店,可以安装各种社区开发的免费和付费扩展。
- 常见扩展:
- Autorize:自动化的越权测试工具。
- Turbo Intruder:比原生 Intruder 速度快得多的攻击工具,用 Python 编写。
- Copy as cURL:将请求复制为 cURL 命令。
使用场景:自动化特定任务、提高测试效率、利用社区智慧。
Decoder (解码器) - (同上)
Scanner (扫描器) - 自动化漏洞扫描器
可以自动对目标网站进行漏洞扫描,发现常见的安全问题。
- 扫描类型:
- Passive scanning:被动扫描,不主动发送请求,只分析通过 Proxy 的流量,速度很快,风险低。
- Active scanning:主动扫描,会主动向服务器发送大量构造好的请求来寻找漏洞,速度慢,可能会对服务器造成压力,甚至被 WAF 拦截。
- 扫描配置:可以设置扫描范围、扫描策略(排除某些路径或参数)、并发数等。
使用场景:快速发现网站的低垂果实漏洞,如 XSS、SQLi、路径泄露、弱密码等。
实战演练:一个简单的渗透测试流程
假设我们要测试一个登录页面 http://test.com/login。
-
配置代理:确保浏览器和 Burp 的代理都已正确配置。
-
流量拦截 (Proxy):
- 在浏览器中打开
http://test.com/login,输入用户名admin和密码password,点击登录。 - Burp 的 "Proxy" -> "Intercept" 会捕获到登录请求。
- 点击 "Forward" 放行,你就能在 "HTTP history" 中看到这个登录请求和服务器返回的响应。
- 在浏览器中打开
-
分析请求 (Target/HTTP history):
- 在 "HTTP history" 中找到登录请求,观察请求方法、URL、参数(通常是
username和password)。
- 在 "HTTP history" 中找到登录请求,观察请求方法、URL、参数(通常是
-
暴力破解密码:
- 右键点击登录请求,选择 "Send to Intruder"。
- 在 "Intruder" 的 "Positions" 选项卡中,清空所有标记,然后选中
password参数的值,点击 "Add §" 将其标记为攻击位置。 - 切换到 "Payloads" 选项卡,选择 "Simple list",将一个包含常见密码的字典粘贴进去(
password123,admin,123456,qwerty等)。 - 切换到 "Options" -> "Grep - Match",添加一个标记,内容为 "Login successful" 或类似的成功提示。
- 点击 "Start attack" 开始攻击,攻击结束后,查看结果,响应长度最短或包含 "Login failed" 的 payload 可能是错误的,而响应长度较长或包含 "Login successful" 的 payload 就是正确的密码。
-
手动注入测试:
- 在 "HTTP history" 中再次找到登录请求,右键选择 "Send to Repeater"。
- 在 "Repeater" 中,修改
password参数为' OR '1'='1(一个简单的 SQL 注入payload)。 - 点击 "Go",观察响应,如果返回了所有用户的信息或登录成功,则可能存在 SQL 注入漏洞。
-
自动化扫描:
- 在 "Target" 标签页的 "Site map" 中,右键点击整个站点
http://test.com,选择 "Active scan"。 - 配置扫描范围和策略,然后开始扫描,等待扫描完成后,在 "Scanner" 标签页中查看扫描报告,了解发现的漏洞详情。
- 在 "Target" 标签页的 "Site map" 中,右键点击整个站点
高级技巧与最佳实践
- 使用
SwitchyOmega:方便地在“使用代理”和“直连”之间切换。 - 善用标记:在 Intruder 中,精确的标记是成功的一半。
- 关注响应长度:在暴力破解或模糊测试中,响应长度是判断结果最直观的指标之一。
- 学习正则表达式:在 Grep Match 和 Grep Extract 中,熟练使用正则表达式可以让你更精确地定位信息。
- 编写自己的扩展:Burp 的现有功能无法满足你的需求,可以学习使用 Burp 的 Extender API 来编写自己的 Java 或 Python 扩展。
- 保持更新:Burp Suite 和其扩展会不断更新,以应对新的技术和漏洞。
Burp Suite 是 Web 渗透测试的“瑞士军刀”,掌握它需要大量的实践,本教程提供了一个全面的框架,但真正的技巧来自于你在真实世界应用中的不断摸索和尝试。
建议学习路径:
- 从 Community 版开始,熟悉 Proxy 和 Repeater。
- 尝试在本地搭建一个 DVWA (Damn Vulnerable Web Application) 靶场,进行无破坏性的安全测试。
- 逐步学习 Intruder 和 Scanner 的高级用法。
- 探索 Extender,安装一些流行的扩展,提升效率。
祝你学习愉快,早日成为 Burp Suite 大师!
