
针对 Next.js CVE-2025-66478 的概念验证利用,展示了通过服务器操作中的不安全反序列化和原型污染实现的远程代码执行。包含有漏洞的应用及用于安全研究的 Python 利用脚本。
此仓库包含用于重现和研究 Next.js CVE-2025-66478 漏洞的概念验证 (PoC)。它由一个易受攻击的 Next.js 应用程序和一个用于测试漏洞的 Python 利用脚本组成。
这是一个在 Next.js Server Actions 处理过程中发生的远程代码执行 (RCE) 漏洞。
关键要点:
__proto__ 属性进行原型污染。| 项目 | 描述 |
|---|---|
| CVE ID | CVE-2025-66478 |
| 类型 | 远程代码执行 (RCE) |
| 根本原因 | RSC Flight 协议中的不安全反序列化 |
| 严重性 (CVSS) | 10.0(严重) |
| 影响 | 服务器上的任意系统命令执行 |
__proto__ 之类的属性。Object.prototype 被污染。then 属性。Next.js 逻辑将这些对象误识别为Promise(Thenable)。await 这个“假 Promise”时,注入到 then 方法中的恶意 JavaScript 代码会被执行(例如 child_process.execSync)。sequenceDiagram
participant 攻击者
participant 服务器 as Next.js 服务器
攻击者->>服务器: POST / (JSON 包含 "__proto__": {"then": ...})
Note right of 服务器: JSON 解析污染 Object.prototype
服务器->>服务器: 应用程序逻辑遇到一个对象
rect rgb(200, 150, 150)
Note right of 服务器: "Thenable" 检查小工具
服务器->>服务器: 检测: typeof obj.then === 'function'?
服务器-->>服务器: 是(由于污染)
end
服务器->>服务器: Await/执行恶意 .then()
Note right of 服务器: 恶意 JS 代码运行 (RCE)
服务器-->>攻击者: 响应(操作重定向/错误信息)
因此,当服务器处理这个被操控的 Promise 时,会执行攻击者注入的 JavaScript 代码,从而可能导致系统命令执行。附带的 main.py 是重现此攻击场景的示例代码。
此漏洞影响使用 App Router 的 Next.js 应用程序。
修复版本:
next.js/:易受攻击的 Next.js 网络应用程序示例代码。exploit/:用 Python 编写的利用执行脚本 (main.py)。首先,您需要运行目标 Next.js 服务器。
进入 next.js 目录:
cd next.js
安装依赖项:
npm install
# 您也可以使用 yarn 或 pnpm。
启动开发服务器:
npm run dev
验证您能否通过浏览器访问 http://localhost:3000。
现在您可以使用 Python 脚本测试漏洞。
从项目根目录进入 exploit 目录:
cd exploit
(可选)建议使用虚拟环境:
python3 -m venv venv
source venv/bin/activate # 对于 Windows: venv\Scripts\activate
安装必要的库:
需要 requests 模块。
pip install requests
运行脚本:
python main.py
默认情况下,它针对本地地址 (http://localhost:3000)。要测试不同的地址,请使用 --url 选项:
python main.py --url http://目标ip:3000
此代码仅供安全研究和教育目的使用。未经事先许可,针对系统或网络使用此工具是违法的,用户应对由此产生的任何问题承担全部责任。