p3Nt3st3r-sTAr/CVE-2026-42945-POC
GitHub: p3Nt3st3r-sTAr/CVE-2026-42945-POC
针对NGINX rewrite模块严重堆缓冲区溢出漏洞CVE-2026-42945的远程代码执行概念验证工具,支持一键获取目标服务器Shell。
Stars: 15 | Forks: 10
# CVE-2026-42945
**CVE-2026-42945** 的 RCE 概念验证,这是 NGINX `ngx_http_rewrite_module` 中一个严重的堆缓冲区溢出漏洞,于 2008 年引入。该漏洞允许针对使用 `rewrite` 和 `set` 指令的服务器进行未经身份验证的远程代码执行。
该漏洞 —— 以及其他三个内存损坏问题(CVE-2026-42946、CVE-2026-40701、CVE-2026-42934)—— 是由 [depthfirst](https://depthfirst.com) 的安全分析系统在仅需一键导入 NGINX 源码后自主发现的。
## 漏洞详情 (TL;DR)
NGINX 的脚本引擎使用两遍处理过程:首先计算所需的缓冲区大小,然后复制数据。当 `rewrite` 替换包含 `?` 时,主引擎上会设置 `is_args` 标志,但长度计算过程却在一个全新初始化为零的子引擎上运行。因此:
- **长度计算过程** 看到 `is_args = 0` → 返回原始捕获长度。
- **数据复制过程** 看到 `is_args = 1` → 调用带有 `NGX_ESCAPE_ARGS` 参数的 `ngx_escape_uri`,将每个可转义字节扩展为 3 个字节。
数据复制导致攻击者可控的 URI 数据溢出过小的堆缓冲区。漏洞利用采用跨请求堆风水技术,破坏相邻 `ngx_pool_t` 的 `cleanup` 指针(通过 POST 请求体进行喷射,因为 URI 字节不能包含空字节),将其重定向到一个伪造的 `ngx_pool_cleanup_s`,在内存池销毁时调用 `system()`。
在我们的 https://t.me/p3Nt3st3rsTAr 中阅读更多关于此漏洞的信息。
## 受影响与已修复的版本
| 产品 | 受影响版本 | 修复版本 |
| --- | --- | --- |
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
完整厂商安全公告:
## 用法
已在 Ubuntu 24.04.3 LTS 上测试。
1. `./setup.sh` — 构建容器。
2. `docker compose -f env/docker-compose.yml up` — 启动存在漏洞的 NGINX 服务器。
3. `python3 poc.py --shell` — 获取一个 shell。
标签:CISA项目, Cutter, CVE-2026-42945, Docker, F5, Heap Feng Shui, Maven, NGINX, ngx_http_rewrite_module, PoC, RCE, Web报告查看器, 内存破坏, 堆缓冲区溢出, 堆风水, 安全漏洞, 安全防御评估, 暴力破解, 漏洞验证, 编程工具, 网络安全, 请求拦截, 远程代码执行, 逆向工具, 隐私保护