用途:面向 HTTP/2 协议层攻击的安全测试手册,聚焦区别于 HTTP/1.1 的 H2 独有攻击面,适用于目标支持 HTTP/2 的场景。
主要能力:
- h2c 明文升级走私:利用反向代理盲目转发 Upgrade: h2c 头,使客户端与后端建立 H2 连接、代理沦为 TCP 隧道,从而绕过路径访问控制、WAF、限流、认证与 IP 限制。工具 h2csmuggler 用法:git clone https://github.com/BishopFox/h2csmuggler;cd h2csmuggler;pip3 install h2;python3 h2csmuggler.py -x https://target.com/ --test。探测:curl -v --http1.1 https://target.com/ -H "Upgrade: h2c" -H "Connection: Upgrade, HTTP2-Settings" -H "HTTP2-Settings: AAMAAABkAAQCAAAAAAIAAAAA",返回 101 表示支持。
- 伪首部注入::path 路径差异、重复伪首部、:authority 与 Host 不一致、:scheme 操纵导致路由与访问控制绕过。
- HPACK 压缩攻击:CRIME/BREACH 类压缩预言机、动态表投毒造成跨请求泄漏。
- 流多路复用滥用:单包竞态(将多个请求打包进单个 TCP 段实现同时处理)、RST_STREAM 洪泛(CVE-2023-44487 Rapid Reset)、PRIORITY 饥饿。
- H2→H1 降级问题:二进制头值中的 \r\n 降级后形成头注入、Transfer-Encoding 透传导致 H2.TE 走私、Content-Length 冲突导致 H2.CL 走私、头名大小写差异。
- 服务器推送缓存投毒。
使用方式:按决策树判断目标是否支持 HTTP/2、代理是否支持 h2c 升级、是否存在 H2→H1 降级、是否需要竞态、伪首部是否可利用、是否启用服务器推送及 DoS 目标,再选择对应技术。相关工具包括 h2csmuggler、http2smugl、Python h2 库、nghttp2、Burp HTTP Request Smuggler、curl --http2。
限制:HPACK 使用静态与动态表而非原始 DEFLATE,且为每连接表,攻击难度高于原始 CRIME;服务器推送已被多数现代浏览器与 CDN 限制或禁用;具体目标环境差异较大,需实际验证。仅限授权安全测试使用。