HTTP/2 特有攻击
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/http2-specific-attacks-1kig 技能。
技能介绍
解决什么问题
HTTP/2 的协议设计与 HTTP/1.1 完全不同:二进制分帧、HPACK 压缩、多路复用、伪头、服务端推送。多数团队对 HTTP/1.1 走私的 CL.TE/TE.CL 已耳熟能详,但 HTTP/2 的攻击面是另一套逻辑。基础模型常把两者混为一谈,把 H2 走私直接套用 H1.1 的方法论,结果漏掉真正的 H2 特有漏洞。这个技能只回答一个问题:哪些攻击只有在 HTTP/2 上才成立?
核心能力与攻击流程
- h2c 明文走私:利用
Upgrade: h2c机制在无 TLS 连接上开启 HTTP/2,绕过不理解该头的反向代理访问控制。 - 伪头注入:
:method、:path、:authority、:scheme四个伪头替代了请求行,注入后可制造代理与后端的路径差异、重复伪头、Authority 与 Host 不一致。 - HPACK 压缩攻击:沿袭 CRIME/BREACH 思路的压缩预言攻击,以及头部表污染。
- 多路复用滥用:单包攻击(多个请求挤进一个 TCP 包,制造真正并行的竞态)、RST_STREAM 洪泛(CVE-2023-44487 "Rapid Reset")、PRIORITY 操纵。
- H2→H1.1 降级注入:H2 头值是二进制格式,
\r\n是合法数据;代理降级时它变成真实换行 → 头部注入。Transfer-Encoding、Content-Length、头部大小写的降级差异都能演化为走私原语。 - 服务端推送缓存投毒:未经请求的 push 响应污染缓存。
配套工具链:h2csmuggler(h2c 走私)、http2smugl(H2 专属 desync)、h2 Python 库(手工构造帧)、nghttp2、Burp HTTP Request Smuggler、curl --http2 快速探测。
适用边界
- 只覆盖 H2 特有攻击面,CL.TE/TE.CL 等基础走私需配合
request-smuggling技能使用。 - 攻击成立与否高度依赖代理与后端的实现差异,需要实测确认。
- 使用前先探测目标是否支持 h2c/h2;
h2csmuggler等工具需要已知绕过点参数,并非全自动。
使用场景
- 渗透测试工程师需要在代理与后端对伪头解析不一致时,验证 `:path` 注入能否制造路径差异以绕过鉴权。
- 安全研究员排查反向代理是否放行 `Upgrade: h2c`,尝试用 `h2csmuggler` 走私请求绕过访问控制。
- 后端架构师在引入 HTTP/2 负载均衡后,测试单包竞态与 RST_STREAM 洪泛对上游服务的实际影响。
- 开发安全工程师需要评估 H2 降级到 H1.1 时,`\r\n` 是否被当作真实换行造成头部注入或走私。
适合人员
- 渗透测试工程师,需要在真实业务中验证 H2 特有走私与注入原语。
- 应用安全研究员,负责梳理代理与后端之间的解析差异和降级风险。
- 后端架构师,在上线 HTTP/2 代理或网关前评估协议层攻击面。
- 开发安全工程师,需要为团队沉淀 H2 攻击的检测规则和复现用例。