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

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

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

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

工具目录

分类

查看所有分类
Loading categories
Nginx-Rift — NGINX RCE 漏洞利用 | Kitploit
工具/GitHubGitHub/depthfirstdisclosures/nginx-rift
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试Payload 开发二进制利用
GitHubdepthfirstdisclosures/nginx-rift

Nginx-Rift

NGINX RCE 漏洞利用

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

NGINX Rift

RCE 概念验证,针对 CVE-2026-42945——这是 NGINX ngx_http_rewrite_module 中一个于 2008 年引入的严重堆缓冲区溢出漏洞。该漏洞使得攻击者能够对使用 rewrite 和 set 指令的服务器进行未经认证的远程代码执行。

该漏洞与另外三个内存破坏问题(CVE-2026-42946、CVE-2026-40701、CVE-2026-42934)一同,由 depthfirst 的安全分析系统在单击一次接入 NGINX 源码后自动发现。

想在您自己的代码中发现类似问题?试试同一套系统:https://depthfirst.com/open-defense。

漏洞(TL;DR)

NGINX 的脚本引擎采用两遍处理流程:先计算所需的缓冲区大小,再写入数据。当 rewrite 替换内容中包含 ? 时,主引擎上的 is_args 标志会被置位,但长度计算遍是在一个全新归零的子引擎上运行的。因此:

  • 长度遍看到 is_args = 0 → 返回原始捕获长度。
  • 写入遍看到 is_args = 1 → 以 NGX_ESCAPE_ARGS 调用 ,将每个可转义字节扩展为 3 个字节。
下载工具
ngx_escape_uri

写入操作会用攻击者控制的 URI 数据溢出容量不足的堆缓冲区。利用过程中,通过跨请求的堆风水(heap feng shui)破坏相邻 ngx_pool_t 的 cleanup 指针(由于 URI 字节不能包含空字节,因此通过 POST 请求体喷洒),将其重定向到伪造的 ngx_pool_cleanup_s,从而在池销毁时调用 system()。

更多关于此漏洞的细节,请参阅我们的技术文章。

受影响版本与修复版本

产品受影响版本修复版本
NGINX Open Source0.6.27 – 1.30.01.31.0, 1.30.1
NGINX PlusR32 – R36R36 P4, R35 P2, R32 P6

厂商完整公告:https://my.f5.com/manage/s/article/K000160932


CVE-2026-42530

K000161616:NGINX ngx_http_v3_module 漏洞 — HTTP/3 QPACK 从单向编码器流的池中分配会话 insert_buffer。关闭该流会释放池,而会话仍保留一个悬空指针,因此后续的编码器流会在 NGINX worker 进程中触发堆释放后使用(use-after-free)。

CVE-2026-42533

K000162097:NGINX map 指令与正则匹配漏洞 — map 指令中的正则匹配配合捕获变量,可能导致 NGINX worker 进程发生堆缓冲区溢出。

该漏洞存在于 stream 脚本引擎的两遍复杂值求值过程中。在易受攻击的 stream 配置中,使用 ssl_preread 时,攻击者控制的 TLS SNI 会被送入基于正则的变量。NGINX 先计算输出缓冲区长度,然后复制输出。map 正则可能会在这两遍之间更新全局捕获状态:长度遍计算的是较小值,而写入遍读取的是较大的正则捕获(如 $1),从而在 worker 中造成堆越界写入。

随附的 CVE-2026-42533/ PoC 是一个完整利用链。它利用 stream 泄漏原语恢复堆和 libc 基址以绕过 ASLR,通过 HTTP 请求体喷洒伪造的 ngx_pool_cleanup_s 记录,然后利用该溢出破坏相邻 NGINX 池的 cleanup 指针。当被破坏的池销毁时,清理分发会被重定向到 libc 的 system(),执行提供的命令。