Cisco vManage 漏洞分析:从 SSRF 到 Root 权限的完整攻击链
SD-PWN 第三部分:Cisco vManage——又一场网络接管
这是四篇系列文章的第三篇,前两部分请参阅:
本文继续我们的 SD-WAN 安全研究之旅。简单来说,我们在 SD-WAN 市场的四个主要产品中发现了关键的无认证 RCE 漏洞,这次我们将重点讨论 Cisco Viptela vManage。
Cisco Viptela vManage
Cisco Viptela vManage 是 Cisco SD-WAN 基础设施的核心组件,负责管理网络中的所有终端节点。由于 SD-WAN 设计的集中式特性,从安全角度来看 vManage 成为了单点故障。
通过串联 4 个不同的漏洞,我们能够在 vManage 机器上实现无认证的 root 权限 RCE,这些机器通常部署在企业的云环境中。攻击者不需要任何先验配置知识即可利用这些漏洞。
如果您的组织使用 Cisco 的 Viptela SD-WAN 解决方案,请立即更新设备固件。最新固件已修复下文列出的所有问题。
技术细节
系统的初始攻击向量是运行在 vManage 机器 443 端口的 Web 管理服务器。该 Web 服务器使用 JBoss 框架运行 Java 小程序。Web 管理界面的未认证攻击面在 web.xml 文件中定义,明确列出了所有可访问的 URL 路径。
SSRF + 任意文件写入 - CVE-2020-27128
在寻找可能的入口点时,我们注意到了/dataservice
端点。虽然不确定代码的确切意图,但我们推测不同端点通过 dataservice URL 共享数据和统计信息。
/dataservice/statistics/download/dr/filelist
处理器负责下载系统中两台机器间的统计信息。它接收相邻机器的 IP 地址和统计文件名并下载供后续使用。
该处理器完全没有进行用户输入验证,导致多个漏洞:首先,sourcevManageIp
参数可接受任何 IP,导致 SSRF 攻击;其次,token
和fileType
参数中的目录遍历允许攻击者将数据下载到任意路径甚至覆盖现有文件。服务器以 vmanage 用户身份运行,允许覆盖多个有趣的文件。
此外,该处理器没有任何 CSRF 保护机制。
示例攻击请求:
未授权文件读取+目录遍历 - CVE-2020-26073
我们还发现了另一个有趣的处理器/dataservice/disasterrecovery/download/token/
。它接收一个参数——要读取的文件...同样没有用户输入验证,导致容易利用的目录遍历。攻击者可以读取 vmanage 用户可访问的任何文件。
示例攻击请求:
SSH 密钥
/etc/viptela/.ssh/id_dsa
是 SSH 连接的私钥,vmanage 用户可读。它允许攻击者以 vmanage-admin 身份通过 SSH 连接。
vmanage-admin 的登录二进制文件是 viptela_cli,与 admin 相同,但 vmanage-admin 无法访问常规 CLI 控制台。这是在 viptela_cli 的 main 函数中决定的,该函数验证用户名。否则,用户可以通过 SSH 连接发送单个命令,提供一定的攻击面。
viptela_cli 中的命令注入 - CVE-2020-27129
使用上述 SSH 密钥登录后,viptela_cli 解析用户提供的命令。通过 SSH 连接发送的任何命令在执行前都会经过验证。
通常只允许以scp -f
开头的命令。不幸的是,命令的其余部分没有进行清理,允许攻击者使用分号注入另一个命令。
示例攻击命令:
使用 busybox.suid 进行特权提升 - CVE-2020-26074
在寻找系统中提升特权的不同选项时,我们注意到了一个特殊的 suid 文件——busybox.suid。文件系统中的 SUID 位会在每次执行时将二进制文件的权限提升为 root。Busybox.suid 允许以 root 身份运行多个 busybox 小程序。
一个有趣的小程序是 tftp,它允许使用 tftp 协议向系统上传和下载文件。没有对目标路径进行验证,使恶意用户能够以 root 身份用任意数据覆盖任何文件。这实现了对系统的完全控制。
一个基本示例是用新的 root 密码覆盖/etc/shadow
文件,然后简单地运行su
命令获得 root 访问权限。
完整 RCE 攻击链
使用目录遍历漏洞读取 vmanage-admin 的私钥
通过 SSH 登录并注入运行特权提升的命令
使用 busybox.suid 的 tftp 小程序覆盖
/etc/shadow
运行
su
命令获得 root 权限执行
注意这只是利用这些漏洞的一种方式。可能会发现其他更简单的攻击链。
时间线
2020-07-31 — Realmode Labs 向 Cisco PSIRT 发送初始报告
2020-07-31 — Cisco PSIRT 确认报告,分配经理
2020-11-02 — Cisco PSIRT 分配 CVE 编号,发布修复软件
2020-11-04 — 发布安全公告和 CVE
2020-11-23 — 本报告发布
参考链接
Bug 4 — 使用busybox.suid进行特权提升 - CVE-2020-26074更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码
- 办公AI智能小助手
评论