NGINX18年老洞被挖出:RCE复现来了(附PoC+靶场)

admin 2026-05-29 04:16:33 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档披露NGINX的ngxhttprewritemodule中存在一个编号为CVE-2026-42945的堆缓冲区溢出漏洞,该漏洞自2008年引入,影响0.6.27至1.30.0版本,攻击者可通过rewrite和set指令实现未认证远程代码执行。漏洞成因是脚本引擎两阶段处理时isargs标志不一致导致缓冲区计算错误,利用堆风水技术可触发system()调用。文档提供了PoC代码、靶场环境搭建步骤及修复版本信息,并强调该漏洞由depthfirst安全系统自动发现。 综合评分: 88 文章分类: 漏洞分析,漏洞预警,应急响应,WEB安全,安全工具


cover_image

NGINX 18 年老洞被挖出:RCE 复现来了(附 PoC + 靶场)

原创

Yn8rt Yn8rt

迷人安全

2026年5月14日 15:43 浙江

在小说阅读器读本章

去阅读

点击箭头处“蓝色字”,关注我们哦!!

现在只对常读和星标的公众号才展示大图推送,建议大家能把迷人安全设为星标”,否则可能就看不到了啦!

【声明】本文所涉及的技术、思路和工具仅用于安全测试和防御研究,切勿将其用于非法入侵或攻击他人系统以及盈利等目的,一切后果由操作者自行承担!!!

NGINX Rift漏洞

CVE-2026-42945 的 RCE 概念验证代码。该漏洞是 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 调用 ngx_escape_uri,将每个需要转义的字节扩展为 3 个字节。

随后,复制操作会使用攻击者可控的 URI 数据溢出这个尺寸不足的堆缓冲区。利用过程使用跨请求的堆风水技术,破坏相邻 ngx_pool_t 的 cleanup 指针。由于 URI 字节不能包含空字节,因此通过 POST body 进行喷射,并将其重定向到伪造的 ngx_pool_cleanup_s,在内存池销毁时调用 system()

更多关于该漏洞的内容,请阅读我们的技术分析文章。

受影响版本与修复版本

| 产品 | 受影响版本 | 修复版本 | | — | — | — | | 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 |

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

使用方式

已在 Ubuntu 24.04.3 LTS 上测试。

./setup.sh

构建容器。

docker compose -f env/docker-compose.yml up

启动存在漏洞的 NGINX 服务器。

python3 poc.py --shell

弹出一个 shell。

POC+靶场地址

https://github.com/depthfirstdisclosures/nginx-rift


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:迷人安全 Yn8rt Yn8rt《NGINX 18 年老洞被挖出:RCE 复现来了(附 PoC + 靶场)》

    评论:0   参与:  0