【漏洞预警】Next.js爆出新漏洞,不用登录实现命令执行(POC已公开)"

admin 2026-10-19 01:07:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

【漏洞预警】Next.js 爆出新漏洞,不用登录实现命令执行(POC已公开)

YGnight
YGnight

night安全

2026年8月31日 08:15
四川

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

一、漏洞描述

收到情报Next存在缓存路径穿越漏洞,编号是CVE-2026-75604,可以在未授权的情况下实现远程命令执行,poc脚本已经公开了,简单分析了一下漏洞形成的原理,导致这个漏洞的问题出在  Next.js 自带的文件缓存上,只在 Windows  上触发。攻击者不用登录,发几个构造好的请求就能在服务器上执行任意命令,直接拿下整台机器。

问题的根本原因是路径穿越导致的。Next.js 在把网址转成缓存文件名时,没有把反斜杠当成需要处理的特字符。而 Windows 上反斜杠就是目录分隔符,攻击者通过在网址里塞 ..\\ 就能一层层往上跳,把不该看的文件读出来,最终演变成远程命令执行。

CVE 编号 CVE-2026-75604
漏洞类型 缓存路径穿越 + 信息泄露 + 未授权远程命令执行
影响组件 Next.js 自带的文件系统缓存(.next 目录),及其中的 Server Action 加密密钥处理
受影响版本 13.4 到 15.5.24 之前,以及 16.0 到 16.3.3 之前
修复版本 15.5.24 和 16.3.3
CVSS 评分 9.9,严重
利用条件 部署在原生 Windows 上,同时使用了 Pages Router 和 App Router,并且网站还开启了增量静态缓存

二、漏洞原理

这个漏洞是两处问题凑到一起才成立的,核心都出在反斜杠没有被当成特殊符号处理。

第一处是路径穿越。Next.js 会给带参数的动态页面开缓存,把访问过的内容写进 .next 目录下的文件里。它转义网址的时候只处理了正斜杠、井号和问号,反斜杠完全没管:

// 漏洞版本:转义范围不含反斜杠 \\
segment.replace(
  new RegExp(`([/#?]${escapeEncoded ? '|%(2f|23|3f|5c)' : ''})`, 'gi'),
  (char) => encodeURIComponent(char)
)

// 修复版本:反斜杠 \\ 纳入转义范围
segment.replace(
  new RegExp(`([/#?\\\\]${escapeEncoded ? '|%(2f|23|3f|5c)' : ''})`, 'gi'),
  (char) => encodeURIComponent(char)
)

Windows 中反斜杠为路径分隔符且未被转义,攻击者在 URL 中插入 ..%5C(即 ..\\),结合已开启的动态页面,可逐层向上越界直至离开缓存目录。负责拼接路径的函数 getFilePath 未校验拼接结果是否仍位于缓存目录内:

// 修复版本在拼接后增加路径校验
const filePath = path.join(rootDir, key)
if (!(filePath.startsWith(rootDir + path.sep) || filePath === rootDir)) {
  throw new Error('Invalid file path: ' + filePath)
}
return filePath

越界后读取的目标为 server-reference-manifest.json。该文件存放 Server Action 相关信息,其中包含一把加密密钥。结合路径穿越可匿名读取该文件,取得 Server Action 加密密钥。

第二处:以窃取密钥伪造请求,执行命令。Server Action 为 Next.js 处理表单提交的机制,提交参数以密钥加密。在触发页面中选取可接收传入的闭包绑定参数的动作,即可利用密钥自行加密构造参数,将待执行命令注入其中:

# 以窃取密钥加密\"构造函数\"载荷作为伪装参数
flight = b'1:{}\
0:[\"$1:constructor:constructor\"]\
'
iv = os.urandom(16)
plaintext = action_id.encode() + flight
ciphertext = AESGCM(encryption_key).encrypt(iv, plaintext, None)

# 命令载荷:调用 cmd.exe 执行并回传结果
'const cp=process.mainModule.require(\"node:child_process\");'
'const output=cp.execFileSync(\"cmd.exe\",[\"/d\",\"/s\",\"/c\",<命令>],'
'  {encoding:\"utf8\"});'

整个利用链是1.经反斜杠穿越缓存目录 2.读取 Server Action 加密密钥 3.伪造携带命令的请求 4.在服务器执行任意命令。整个流程是不需登录的。命令执行结果经攻击者自建的回连服务器回传,PoC 默认执行 whoami 验证。

三、修复建议

  1. 升级至 15.5.24 或 16.3.3 及以上版本。
  2. 暂无法升级的情况,可以停用增量静态缓存相关动态页面。

我这是发现0day了吗???" 网络安全文章

我这是发现0day了吗???"

sd-webui-prompt-all-in-one扩展存在无需认证的路径穿越漏洞,可读取服务器任意文件,CVSS评分9.1。漏洞源于get\\_csv接口未过滤路径参数,作者已停止维护且无补丁。建议卸载扩展或通过反向代理拦截漏洞路径,并加强SDWebUI访问认证。
曝ZBTLink路由器出厂设置藏双后门,无需密码直接获取Root权限" 网络安全文章

曝ZBTLink路由器出厂设置藏双后门,无需密码直接获取Root权限"

深圳智博通电子多款路由器固件被曝存在两套出厂后门speakingstone与darklantern,均可在无认证情况下远程获取root权限。darklantern监听UDP9992端口,公网扫描发现203台暴露设备;speakingstone主动外联C2并支持执行命令、窃取宽带凭证等。建议用户检查MAC前缀、更换设备,企业应监控相关流量并验证固件来源。
评论:0   参与:  0