谷子猫博客

一个简单爱分享的小站!^_^!
首页>> 技术文档 >>NGINX漏洞CVE-2026-42945:URL伪静态严重RCE漏洞简单修复

NGINX漏洞CVE-2026-42945:URL伪静态严重RCE漏洞简单修复

NGINX漏洞CVE-2026-42945:URL伪静态严重RCE漏洞简单修复

2026年5月13日,F5官方披露NGINX存在严重远程代码执行漏洞 CVE-2026-42945 (代号"NGINX Rift"),CVSS v4.0评分高达 9.2分 (严重)。该漏洞潜伏于NGINX代码库长达18年,影响从2008年发布的0.6.27版本至2026年1月发布的1.30.0版本的所有NGINX开源版及Plus商业版,约占全球互联网网站服务器份额的三分之一。 公开概念验证(PoC)代码已在漏洞披露同日发布,全球攻击面正在被主动扫描 。

漏洞根源在于 ngx_http_rewrite_module 模块的脚本引擎。当 rewrite 指令的替换字符串中含有 ?(问号)时,引擎内部一个名为 is_args 的标志位会被置为 1 且不会重置。


这个模块被大量使用在伪静态方面,通过这个漏洞,攻击者可让Nginx进程崩溃无法提供服务,甚至被远程操控。

利用条件:

在 Nginx 的配置中,必须存在一个 rewrite 指令,并且该指令同时满足:
1. 使用了未命名的 PCRE 正则捕获(例如 $1, $2 等)。
2. 其替换字符串中包含问号(?)。
3. 在此 rewrite 指令之后,紧跟着另一个 rewrite、if 或 set 指令。



解决方法:
1:Nginx版本是否在 0.6.27 至 1.30.0 之间存在漏洞,升级到新版1.30.1、1.31.0 或更高版本即可。

2:修改现有NGINX伪静态规则。
将所有受影响 rewrite 指令中未命名捕获组($1、$2)替换为命名捕获组。

易受攻击示例:

rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
修复后示例:
rewrite ^/users/(?[0-9]+)/profile/(?
.*)$ /profile.php?id=$user_id&tab=$section last;

以Typecho的伪静态规则为例,当前默认的规则是:
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last;
    }


通过AI协助修改为:
if (!-e $request_filename) {
       rewrite ^(?.*)$ /index.php$path last;
}

实际效果一样。

3:宝塔等WAF添加拦截规则:



# 防 CVE-2026-42945:拦截 rewrite ? 利用
^.*rewrite.*\?.*$  DENY
^.*\?.*\?.*$        DENY

# 超长 URI
^.{2048,}$           DENY

# 注入特征
union|select|and|or|%27|%22|%3f  DENY



×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:谷子博客 » NGINX漏洞CVE-2026-42945:URL伪静态严重RCE漏洞简单修复
标签: 空间 维护 代码 VPS

发表评论

路人甲
未显示?请点击刷新

网友评论(0)