SuperAPI AI 工具集

http-smuggling-advanced

安全与审计

查看项目

更新于 10-16 04:47

技能介绍

用途

本 skill 专注于在已确认存在 HTTP 请求走私漏洞后,进行高级链式利用。它扩展了 cache-poisoning-smuggling 的走私部分,适用于已确认存在 CL.TE、TE.CL、TE.TE、H2.CL 走私的场景。

前置条件:确认走私存在后才进入本 skill 的利用阶段。

走私类型速查

判断前端(FE)与后端(BE)分别用什么解析请求长度:

  • CL.TE:FE 用 Content-Length,BE 用 Transfer-Encoding
  • TE.CL:FE 用 Transfer-Encoding,BE 用 Content-Length
  • TE.TE:两者都用 TE,但对畸形 TE 头处理不一致
  • H2.CL:FE 用 HTTP/2 帧长度,BE 降级到 HTTP/1.1 用 CL
  • H2.TE:FE 用 HTTP/2,BE 降级后用 TE

各类走私变体检测 payload 可参考 references/smuggling-detection.md;H2C/H2 降级走私技术可参考 references/h2-smuggling.md。

主要能力

CL.TE 走私利用

  1. 窃取其他用户请求:后端将走私的 POST /log ... stolen= 当作下一个请求的前缀,下一个用户的完整请求被拼接到 stolen= 后面,从而读取其 Cookie/Token。
  2. 绕过前端 ACL:前端只检查第一个请求(POST /)并放行,被走私的 GET /admin 直接到达后端,绕过前端的 IP/路径限制。
  3. 投毒 Web 缓存:走私的 GET 请求携带恶意 Host 头,后端返回包含 evil.com 的响应,前端缓存此响应,其他用户访问 /static/main.js 时获取被投毒内容。
  4. 反射 XSS 升级为存储 XSS:若 /search 存在反射 XSS,走私请求让下一个用户的响应变成包含 XSS payload 的搜索结果页,反射变存储。

TE.CL 走私利用

前端根据 TE 正确读取全部 chunked 数据,后端根据 CL=4 只读 78\r\n,剩余的 POST /admin ... 被当作独立新请求。

HTTP/2 降级走私(H2.CL / H2.TE)

  1. H2.CL 走私:HTTP/2 用帧长度,不需要 CL;降级到 HTTP/1.1 时,错误的 CL 值使后端将多余数据当作新请求。
  2. H2 Request Tunneling:利用 HTTP/2 HEADERS 帧的特殊头,在 HTTP/2 中 TE 头通常被忽略,但降级后生效,可构造 CL 与 TE 不一致的情况。

使用方式

自动化检测与利用工具

  • smuggler.py 自动化检测:python3 smuggler.py -u https://target.com
  • Burp Suite HTTP Request Smuggler 扩展:安装扩展 → Scan → 报告走私类型
  • h2csmuggler HTTP/2 明文升级走私:python3 h2csmuggler.py -x https://target.com -t /admin
  • 手动 curl 验证(CL.TE):curl -i -X POST https://target.com/ -H "Content-Length: 6" -H "Transfer-Encoding: chunked" --data-binary $'0\r\n\r\nG';如果第二次正常 GET 返回 "GGET / HTTP/1.1 ..." 405,则存在走私。

验证走私成功的方法

  • 方法 1 时间差异:走私一个有延迟的请求,观察响应时间变化。
  • 方法 2 差异响应:走私 GET /404path,下一个正常请求返回 404。
  • 方法 3 反射请求:走私请求到自己控制的日志服务器,观察是否收到其他用户的请求。
  • 方法 4 OAST(Out-of-band):走私 Host: burp-collaborator.net,检查 Collaborator 收到的 DNS/HTTP 请求。

适用场景

适用于已确认存在 HTTP 请求走私漏洞的授权安全测试,用于评估漏洞的链式影响,包括凭据窃取、访问控制绕过、缓存投毒和 XSS 升级等。

限制与风险控制

  • 请求走私会影响其他用户,仅在授权测试中使用。
  • 测试时使用唯一标识符区分你的请求。
  • 先用时间差异法确认,再进行利用。
  • 避免大量走私请求导致服务不可用。