mcpField
H
hunt-http-smuggling

hunt-http-smuggling

github.com/elementalsouls安全5.3k280 次安装今天更新
代码仓库

关于 hunt-http-smuggling

hunt-http-smuggling 是用于评估 HTTP 请求走私风险的安全测试技能,面向渗透测试人员。它涵盖 CL.TE、TE.CL 与 HTTP/2 降级探测,并强调先识别前端代理,再验证影响是否波及其他客户端。

主要功能

  1. 01检查 CL.TE 与 TE.CL 请求走私
  2. 02探测 HTTP/2 降级相关向量
  3. 03依据代理类型评估目标适用性
  4. 04提供 Burp 扩展及手动时延验证方法
  5. 05关联缓存投毒与认证绕过等攻击链
  6. 06要求验证跨客户端影响再判定严重性

适用场景

  1. 01评估 CDN 或代理链的请求解析差异
  2. 02针对 HTTP/2 前端选择相应探测方式
  3. 03验证走私请求是否影响其他用户会话
  4. 04分析请求走私与缓存投毒的组合风险

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/elementalsouls/claude-bughunter --skill hunt-http-smuggling

安装后在 Claude Code 中输入/hunt-http-smuggling确认已加载。

详细介绍

17. HTTP 请求走私

重复率最低。奖金为 5,000–30,000 美元。PortSwigger 研究,由 James Kettle 撰写。

CL.TE(前端使用 Content-Length,后端使用 Transfer-Encoding)
POST / HTTP/1.1
Content-Length: 13
Transfer-Encoding: chunked

0

SMUGGLED
检测
1. Burp extension: HTTP Request Smuggler
2. Right-click request → Extensions → HTTP Request Smuggler → Smuggle probe
3. Manual timing: CL.TE probe + ~10s delay = backend waiting for rest of body
影响链
Poison next request → access admin as victim
Steal credentials → capture victim's session
Cache poisoning → stored XSS at scale

目标适用性矩阵(2026 年现实检查)

经典的 CL.TE / TE.CL 载荷并非在 2026 年普遍可利用。现代代理默认严格遵循 RFC 9112。投入时间前,先识别前端。

前端CL.TETE.CLH2.CLH2.TE备注
Nginx ≥ 1.21否否部分可用(H2 入口)部分可用严格遵循 RFC;遇到 CL+TE 时返回 HTTP 400。在本地使用 Nginx 1.27 验证——前端拦截了所有 9 种已记录变体(docs/verification/phase2h-smuggling-cachepoison.md)。
Caddy 2.x否否——默认已加固
Envoy ≥ 1.20否否部分可用部分可用大多数路径都已加固
HAProxy ≤ 2.4✓✓——存在漏洞,参见 CVE-2021-40346
AWS ALB + 特定上游部分可用部分可用✓✓2022–2024 年有多份已披露的付费报告
Cloudflare → S3 / Lambda 链——✓✓H2 降级攻击仍然可行
旧版 F5 BIG-IP(TMM < 16)✓———参见供应商公告
Citrix ADC / NetScaler(旧版固件)✓✓——2020–2022 年披露
Squid 3.x✓———旧版部署
Apache Traffic Server(旧版)✓✓✓✓PortSwigger 研究
Apache mod_proxy_ajp → Tomcat————跨协议 HTTP→AJP 不同步(CVE-2022-26377);WAF 无法识别走私请求,而该请求会到达缺少外部身份验证控制的内部 AJP 管理/状态路径
自定义 Python / Go 代理✓✓——经常未能强制执行 RFC 规范
操作员指纹快速检查
curl -sI https://target/ | grep -i "Server:"
  • nginx/1.21+、Caddy、envoy → 经典 CL/TE 已无效;如果前端支持 HTTP/2,则转向 H2.CL/H2.TE,或检查上游是否存在旧版代理
  • HAProxy、标头指向 AWS/CDN → 运行完整载荷矩阵
  • 没有 Server 标头 → 假定已加固,但仍运行一次快速的 space-before-colon 探测;如果没有返回 400,则深入检查
H2.CL / H2.TE(当前主要攻击向量)

H2 降级走私攻击依赖于前端与客户端使用 HTTP/2、与源站使用 HTTP/1.1。由于 HTTP/2 的帧长度标头在转换过程中无法被完整保留,这种降级会导致 CL/TE 混淆。2024–2026 年的大多数 CDN+源站链都采用这一精确拓扑。

针对 CDN 前置目标,应优先使用可发送原始 HTTP/2 帧的工具(Burp Pro 的 HTTP Request Smuggler 扩展、h2csmuggler、smuggler.py)。避免对 H2 前置目标使用仅支持 HTTP/1.1 的测试客户端(curl、原始套接字)——它们发送的协议完全不对。

大规模凭据窃取——“收集器 gadget”

影响最大的走私结果无需逐个受害者交互。不要盲目投毒队列,而是走私一条发往会回显完整请求的后端处理程序的请求——例如会反射标头的搜索端点,或会原样返回请求行的重定向。下一位受害者的标头(Cookie、Authorization、X-Access-Token)会被归入你的走私请求,而反射处理程序会在你能读取的响应中返回这些标头。在繁忙的 keep-alive 套接字上重复执行,就能大规模收集任意用户的有效凭据——即使流量经过 CDN(Akamai/Cloudflare),只要 CDN↔源站跃点发生不同步,这种方法依然有效。可链接至 hunt-ato。


相关技能与攻击链

  • hunt-cache-poison — 请求走私与缓存是典型的严重级别攻击链:一条走私请求会变成后续所有受害者收到的缓存响应。攻击链原语:通过 CL.TE 走私一条响应正文包含攻击者 HTML/JS 的请求 → 前端缓存将其存储在热门 URL(/、/login)下 → 发生去同步缓存投毒,走私请求成为后续 N 个受害者的缓存响应,并持续到缓存 TTL 到期。
  • hunt-auth-bypass — 请求走私可以访问前端 WAF/身份验证代理会拦截的仅限内部路由。攻击链原语:将 GET /admin/users HTTP/1.1 走私经过阻止外部 /admin/* 的前端 ACL → 后端将走私请求当作来自可信内部来源的请求进行处理 → 通过走私内部路由请求绕过前端身份验证 → 管理员数据进入响应队列。
  • hunt-idor — 请求走私会将下一位用户的会话 Cookie 附加到攻击者控制的请求路径。攻击链原语:走私不带 Cookie 的 GET /api/me HTTP/1.1 → 后端将其与下一条合法用户入站连接的 Cookie 配对 → 受害者的会话 Cookie 被附加到攻击者走私的请求上 → 攻击者读取包含受害者 PII/令牌的响应。
  • hunt-xss — 请求走私会将 XSS 载荷注入下一位受害者的响应流,且载荷从未出现在 URL 参数中。攻击链原语:走私请求正文包含反射型载荷,后端将其渲染到队列中的下一条响应 → 访问 / 的下一位访客会收到内嵌攻击者 HTML → 每位访客都会遭遇反射型 XSS,且访客或日志中都不会显示任何 URL 参数。
  • security-arsenal — 使用请求走私载荷库(CL.TE / TE.CL / TE.TE 混淆、H2.CL 降级探测、h2csmuggler 单行命令、Burp HTTP Request Smuggler 扩展配置)和时间延迟确认模板,再进行手动十六进制编辑。
  • triage-validation — 在认定为严重级别前,先运行 Pre-Severity Gate:走私请求的影响必须落在由其他客户端/会话发出的请求上,而不能是你自己后续发出的请求。仅在你自己的浏览器中观察到时间差异,只能说明解析器存在分歧,并不代表存在可利用的请求走私漏洞。

评论

支持 Markdown