这是对 CVE-2025-32433(Erlang OTP SSH 漏洞)的分析。我没有编写任何代码,只编写了描述代码功能的注释,以及供你自行搭建服务器以执行漏洞利用的说明。
常见问题 - CVE-2025-32433
什么是 Erlang OTP? Erlang 是一种通用编程语言。 OTP(Open Telecom Platform)是一组中间件、库和设计原则的集合,用于通过 BEAM VPN 实现容错。
为什么此版本的 Erlang 存在漏洞? OTP 26.2.5.10 存在漏洞,因为 SSH 服务器在客户端完成身份验证之前,未能正确拒绝某些 SSH 连接协议消息。 典型流程:
客户端连接到 SSH 服务器。
客户端与服务器协商 SSH 算法并执行加密密钥交换。
建立加密的 SSH 连接。 --实际利用从这里开始
客户端开始用户身份验证,例如密码或公钥身份验证。
如果身份验证成功,客户端可以打开 SSH 通道并通过这些通道请求操作。
为何这是有缺陷的: 在受影响的版本中,服务器可以在用户身份验证成功完成之前处理某些连接协议数据包,包括 SSH_MSG_CHANNEL_OPEN。 因此,攻击者可以建立 SSH 传输连接,但跳过成功的用户身份验证,然后发送服务器本应仅接受自已认证用户的消息。这最终可能导致未经身份验证的远程代码执行。
我如何自行复现此漏洞? 下载并解压此项目 在 VS Code 中打开它 安装并登录 Docker Desktop 在此目录中运行命令:docker build -t local-erlang-ssh . 运行命令:docker run --rm -it -p 127.0.0.1:2222:2222 local-erlang-ssh 打开一个新的 powershell 并测试以确保它已启动:Test-NetConnection 127.0.0.1 -Port 2222 等待一分钟,它应该显示 TcpTestSucceeded: true 转到 python 文件并点击运行 此时终端中应显示 EXPLOIT 使用命令 "docker ps" 获取容器 ID。然后粘贴此命令 docker exec CONTAINER_ID cat /lab.txt 它应返回 "pwned" 一词,表明利用成功。 要停止容器,请回到启动 docker 容器的原始终端,并按 Control+C(可能需要按两次)
如何保护我的设备免受此漏洞的影响? 如果您使用的是 Erlang OTP SSH 服务器,请将其更新到 26.2.5.11 或更高版本。
我可以去哪里了解更多信息? 请移除标点两侧的 "[" 和 "]",我讨厌热链接。 Matt Keely 的原始代码:https[:]//github[.]com/ProDefense/CVE-2025-32433/blob/main/CVE-2025-32433.py Matt Keely 关于如何编写该代码的讲解:https[:]//platformsecurity[.]com/blog/CVE-2025-32433-poc NIST 网站:https[:]//nvd.nist[.]gov/vuln/detail/CVE-2025-32433 Erlang:https[:]//www.youtube[.]com/watch?v=M7uo5jmFDUw