PortSwigger/http-request-smuggler
GitHub: PortSwigger/http-request-smuggler
一款用于检测和利用 HTTP 请求走私漏洞的 Burp Suite 扩展,支持 HTTP/1.1 和 HTTP/2 协议的去同步攻击。
Stars: 1188 | Forks: 125
# HTTP Request Smuggler
这款 Burp Suite 扩展利用 PortSwigger 研究员 James Kettle 开发的高级去同步技术,自动检测并利用 [HTTP Request Smuggling](https://portswigger.net/web-security/request-smuggling) 漏洞。它支持对 HTTP/1.1 和 HTTP/2 降级去同步漏洞、客户端去同步以及连接状态攻击进行全面扫描。
3.0 版本于 2025 年发布,增加了解析器差异检测功能,可以绕过广泛存在的去同步防御,使其效能显著提升。有关此内容的更多信息,请参阅白皮书 [HTTP/1.1 Must Die: The Desync Endgame](https://portswigger.net/research/http1-must-die)。
它完全兼容 Burp Suite DAST、Professional 和 Community 版本。Pro 和 Community 版本具有“研究模式”,用于探索新颖的技术;如果您希望通过定期扫描在新型威胁发布时立即标记它们,DAST 集成将非常有用。
### 功能特性
- 基于对底层解析差异的根本原因检测,这显著更可靠且能抵抗目标特定的异常情况。
- 多种排列技术,用于绕过不同的服务器配置
- HTTP/1.1 CL.TE 和 TE.CL 去同步检测,并基于超时进行确认
- HTTP/2 请求走私,包括隧道和 header 注入攻击
- 针对浏览器驱动攻击的客户端去同步检测
- Header 走私和移除漏洞检测
- 连接状态操纵和基于暂停的去同步技术
- 集成 Turbo Intruder 的自动漏洞利用生成
- 通过多种验证技术减少误报
### 安装
最简单的安装方式是在 Burp Suite 中,通过 `Extender -> BApp Store` 进行。
如果您希望手动加载 jar,请在 Burp Suite (community 或 pro) 中,使用 `Extender -> Extensions -> Add` 加载 `build/libs/http-request-smuggler-all.jar`
### 编译
[Turbo Intruder](https://github.com/PortSwigger/turbo-intruder) 是本项目的依赖项,请将其作为 `turbo-intruder-all.jar` 添加到此源码树的根目录下。
使用以下命令构建:
Linux: `./gradlew build fatjar`
Windows: `gradlew.bat build fatjar`
从 `build/libs/desynchronize-all.jar` 获取输出
### 使用
右键点击一个请求并点击 `Launch Smuggle probe`,然后观察 Organizer 以及 `Extender->Extensions->HTTP Request Smuggler` 下的扩展输出面板。
如果您使用的是 Burp Pro,任何发现也将作为扫描问题报告。
如果您右键点击一个使用 chunked 编码的请求,您会看到另一个标记为 `Launch Smuggle attack` 的选项。这将打开一个 Turbo Intruder 窗口,您可以在其中通过编辑 `prefix` 变量来尝试各种攻击。
关于更多高级用法,请观看 [视频](https://portswigger.net/blog/http-desync-attacks)。
### 练习
我们发布了一套 [免费的在线实验供练习](https://portswigger.net/web-security/request-smuggling)。以下是如何使用该工具解决第一个实验 —— [HTTP request smuggling, basic CL.TE vulnerability](https://portswigger.net/web-security/request-smuggling/lab-basic-cl-te):
1. 使用 Extender->BApp store 选项卡安装 'HTTP Request Smuggler' 扩展。
2. 加载实验主页,在代理历史记录中找到该请求,右键点击并选择 'Launch smuggle probe',然后点击 'OK'。
3. 等待探测完成,扩展的输出选项卡中出现 'Completed 1 of 1' 即表示完成。
4. 如果您使用的是 Burp Suite Pro,请在仪表板中找到报告的漏洞并打开第一个附加的请求。
5. 如果您使用的是 Burp Suite Community,请从输出选项卡复制请求并将其粘贴到 Repeater 中,然后在右上角完成 'Target' 详细信息。
6. 右键点击该请求并选择 'Smuggle attack (CL.TE)'。
7. 将 'prefix' 变量的值更改为 'G',然后点击 'Attack' 并确认有一个响应显示 'Unrecognised method GPOST'。
通过更改第 7 步中的 'prefix' 变量,您可以解决所有实验以及几乎所有的现实场景。
标签:Burp Suite插件, CISA项目, CL.TE, DAST, HTTP/1.1, HTTP/2, HTTP Desync, HTTP请求走私, JS文件枚举, PortSwigger, Request Smuggling, TE.CL, Turbo Intruder, Web安全, 中间人攻击, 后台面板检测, 域名枚举, 客户端Desync, 应用层攻击, 恶意软件分析, 标头注入, 网络安全, 蓝队分析, 连接状态攻击, 隐私保护