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

admin 2026-10-17 23:48:59 网络安全文章 来源: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. 暂无法升级的情况,可以停用增量静态缓存相关动态页面。

    安全组织最后可能只剩三类角色" 网络安全文章

    安全组织最后可能只剩三类角色"

    文章指出AI与Agent将接管安全执行工作,传统按域划分的组织架构将失效,未来安全组织将收敛为三类核心角色:负责构建Agent能力的安全架构与工程、负责业务风险决策的BISO、以及负责体系对抗验证的AI红队。建议企业从人力调度转向四层责任系统,明确人机边界,重构岗位与考核体系。
    我这是发现0day了吗???" 网络安全文章

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

    sd-webui-prompt-all-in-one扩展存在无需认证的路径穿越漏洞,可读取服务器任意文件,CVSS评分9.1。漏洞源于get\\_csv接口未过滤路径参数,作者已停止维护且无补丁。建议卸载扩展或通过反向代理拦截漏洞路径,并加强SDWebUI访问认证。
    当我在GitHub搜索框里敲下\"target.com\"\"password\",三分钟后,这家公司的数据库密码躺在了我面前" 网络安全文章

    当我在GitHub搜索框里敲下\"target.com\"\"password\",三分钟后,这家公司的数据库密码躺在了我面前"

    本文系统介绍了利用GitHub搜索语法挖掘企业敏感信息泄露的方法论,包括组合关键词、文件类型过滤、路径过滤及组织级搜索等基础语法,并推荐Gitleaks、TruffleHog、GitHound等自动化监控工具链。通过三个实战案例展示了从公开仓库中发现数据库密码、云服务密钥及内部APIToken的过程,分析了泄露泛滥原因,并为企业提供了强制私有仓库、CI/CD集成扫描、定期巡检等防御建议。
    评论:0   参与:  0