关于 pentest-http-smuggling
面向获授权安全评估的 HTTP 请求走私测试技能,涵盖主机头与缓存攻击。它引导测试人员识别代理链路、执行协议测试并验证影响。
主要功能
- 01代理与技术栈指纹识别
- 02CL.TE、TE.CL 和 TE.TE 测试
- 03HTTP/2 降级测试
- 04缓存投毒与 Host 头测试
- 05通过概念验证确认影响
适用场景
- 01评估代理与后端的解析差异
- 02测试 HTTP/2 到 HTTP/1 的转换
- 03验证缓存投毒风险
- 04记录请求劫持影响
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jd-opensource/ joysafeter --skill pentest-http-smuggling安装后在 Claude Code 中输入/pentest-http-smuggling确认已加载。
附带文件references/tools.mdreferences/workflows.md
详细介绍
渗透测试 HTTP 请求走私
目的
检测并利用前端代理与后端服务器在 HTTP 请求解析方面的差异。这些攻击可绕过安全控制、污染缓存并劫持请求——而标准污点分析流程完全无法检测此类问题。
前提条件
授权要求
- 书面授权,明确包含协议级测试范围
- 基础设施情况——识别链路中的所有反向代理、CDN 和负载均衡器
- 回滚计划,适用于缓存污染测试(可访问 CDN 清除功能)
- 紧急联系人,供基础设施团队联系(请求走私可能影响其他用户)
环境设置
- 具备原始套接字功能的 Python 3.x,用于构造 HTTP 请求
- Burp Suite Professional 和 HTTP Request Smuggler 扩展
- 支持 HTTP/2 的 curl(
--http2-prior-knowledge) - 用于时序敏感攻击的 Turbo Intruder
- 用于响应分析的网络抓包工具(Wireshark/tcpdump)
核心工作流
- 技术栈指纹识别:识别反向代理(nginx、HAProxy、Cloudflare、AWS ALB)、CDN 和负载均衡器。确定对 HTTP 版本(HTTP/1.1、HTTP/2)的支持情况及解析行为。
- CL.TE 请求走私:构造前端使用 Content-Length、后端使用 Transfer-Encoding 的请求。观察解析差异及请求边界混淆。
- TE.CL 请求走私:反向场景——前端使用 Transfer-Encoding,后端使用 Content-Length。使用混淆的 TE 标头进行测试。
- TE.TE 请求走私:两端都使用 Transfer-Encoding,但可通过标头混淆(大小写、空白字符、重复标头)使其中一端产生错误解析。
- HTTP/2 降级:利用反向代理将 H2 转换为 H1 的过程。通过伪标头进行标头注入、在 H2 标头中进行 CRLF 注入,以及通过 H2 CONTINUATION 帧拆分请求。
- 缓存投毒:使用攻击者控制的内容污染缓存响应。测试缓存键与缓存内容之间的差异。通过不同的客户端会话进行验证。
- Host 标头攻击:Host 标头注入、密码重置投毒、基于路由的 SSRF,以及通过含糊不清的 Host 标头进行 Web 缓存投毒(WSTG-INPV-17)。
- 影响验证:以概念验证(PoC)演示缓存投毒、凭据窃取、请求劫持或绕过安全控制。
WSTG 覆盖范围
| WSTG ID | 测试名称 | 状态 |
|---|---|---|
| WSTG-INPV-15 | HTTP 请求走私 | ✅ |
| WSTG-INPV-17 | Host 标头注入 | ✅ |
工具类别
| 类别 | 工具 | 用途 |
|---|---|---|
| 走私检测 | smuggler.py、HTTP Request Smuggler (Burp) | 自动检测 CL.TE/TE.CL |
| HTTP/2 测试 | h2csmuggler、curl --http2、nghttp | H2 降级与不同步攻击 |
| 时序攻击 | Turbo Intruder | 微秒级精度的请求时序控制 |
| 原始请求 | Python sockets、netcat | 构造格式错误的 HTTP 请求 |
| 缓存分析 | curl、自定义脚本 | 验证缓存行为 |
| 流量抓取 | Wireshark、tcpdump | 分析响应边界 |
参考资料
references/tools.md- 工具函数签名和参数references/workflows.md- 攻击模式定义和测试向量
评论
支持 Markdown