菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。
概述
由于现在VMware vCenter远程代码执行(CVE-2021-21972)的PoC已经公布,因此我们将公布包罗所有技术细节的文章。
在2020年秋季,我在VMware vCenter的vSphere Client组件中发现了几个破绽。这些破绽导致未经授权的客户端可以通过多种协议代表目的服务器执行随便下令并发送请求:
· 未经授权的文件上传导致远程代码执行破绽(CVE-2021-21972)
· 未经授权的服务器端请求伪造(SSRF)破绽(CVE-2021-21973)
在本文中,我将详细回首我是若何发现VMware vSphere客户端远程代码执行破绽的,同时披露技术细节,并说明若何在多个平台上实现破绽行使。
关于VMware vCenter/vSphere:
vSphere和vCenter用于企业基础架构的虚拟化,并提供一种有用的控制方式。我们有可能在公网发现该软件,但在大多数情况下,它照样位于内网之中。
发现破绽
在对vSphere Client举行剖析的过程中,我习惯地采用了白盒和黑盒两种方式举行测试,重点关注未经授权即可行使的破绽。在Web面板中,我实验发送了尽可能多的差别请求,这些请求中不包罗Cookie标头。
当我向/ui/vropspluginui/rest/services/*发送未经授权的请求时,我发现它实际上不需要经由任何身份验证。
未经授权即可接见该URL:
该Web应用程序的某些功效依赖于通常位于自力.jar文件中的插件。例如,vropspluginui插件在文件vropsplugin-service.jar中实现。
就我的明白而言,每个插件必须在Web面板中指定哪些终端需要授权才气运行、哪些终端不需要授权。该插件被设置为允许未经授权的用户接见其处置的任何URL。
其中,/ui/vropspluginui/rest/services/uploadova URL对应的uploadOvaFile函数引起了我的关注。
代码破绽部门:
此路径的处置程序执行以下操作:
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
天生的压缩文件中,包罗名称为“..\..\testFolder\testUpload.txt”的文件。我将其上传到URL “/ui/vropspluginui/rest/services/uploadova”中,并检查服务器的文件系统功效中国年是否存在testFolder文件夹,其嵌套文件位于C:\根目录中。
POST /ui/vropspluginui/rest/services/uploadova HTTP/1.1
Host: vSphereClient.local
Connection: close
Accept: application/json
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryH8GoragzRFVTw1VD
Content-Length: 10425
------WebKitFormBoundaryH8GoragzRFVTw1VD
Content-Disposition: form-data; name="uploadFile"; filename="a.ova"
Content-Type: text/plain
{craftedArchive}
------WebKitFormBoundaryH8GoragzRFVTw1VD--
测试文件已经乐成上传:
可以看到,我的.txt文件已经乐成上传,现在的路径为C:\testFolder\testUpload.txt。
实现Windows RCE
为了能够在目的系统上执行随便下令,我们需要上传一个.jsp Shell,这个Shell无需授权即可接见。要发现这样的位置,我们需要:
1. 找到磁盘上可以行使上述破绽建立文件的可写路径;
2. 将找到的文件路径映射到可接见的Web根目录的文件夹结构中,使该目录能够运行.jsp剧本,而且不需要授权。
首先,我们先上传文件testUpload.txt并查看其属性菜单,以确认我们上传的文件获得了哪些特权。我们可以看到其所有者是用户“vsphere-ui”。
上传文件的属性:
在搜索目的位置时,我们发现了C:\ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport\(其中存在.jsp文件),这个目录看起来很有希望。
,,菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。
无需授权即可接见 *** P剧本:
经由确认,我们在未授权的情况下可以接见该jsp剧本。接下来,我们检查一下vsphere-ui是否对该目录具有写入权限。
目的文件夹的平安相关属性:
谜底是一定的。现在,我们就可以上传特制的.jsp文件,以在系统上执行下令。
我们可以建立一个包罗特制.jsp Shell Payload的压缩包,将其发送到上述所剖析的URL。
python evilarc.py -d 5 -p 'ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport' -o win -f winexpl.tar testRCE.jsp
破绽行使:
现在,我们的.jsp剧本已经上传到服务器,这就让我们有机遇以NT AUTHORITY\SYSTEM特权在系统上执行随便下令。
实现Linux RCE
在Linux场景中,破绽行使方式有所差别,但Linux也异常容易遭到攻击,并允许外部用户上传随便文件。
在Linux上,我没有找到同时允许上传和执行.jsp Shell的目录。不外,另有另一种在服务器上实现下令执行的方式。
我们知道,我们可以使用vsphere-ui用户的权限上传随便文件。若是我们将公钥上传到该用户的主目录,并实验使用私钥通过SSH毗邻到服务器,这样是否可行?
我们首先确认SSH是否可以从外部接见:
nmap -p 22 vSphereLinux.local
发现目的端口已打开:
第一步是要天生密钥对。
ssh-keygen -t rsa
天生密钥对:
然后,使用天生的公钥,建立一个.tar压缩文件:
python evilarc.py -d 5 -p 'home/vsphere-ui/.ssh' -o unix -f linexpl.tar authorized_keys
使用Evilarc天生tar压缩包:
接下来,我们行使这个破绽上传文件,并实验通过SSH毗邻到目的主机:
ssh -i /path/to/id_rsa vsphere-ui@vSphereLinux.local
进入到下令行:
至此,我们就可以使用vsphere-ui用户的权限接见服务器。
总结
在本文中,我演示了一种以未经身份验证的用户在VMware vSphere Client中实现远程代码执行的方式。由于vropspluginui插件未举行充实的身份验证,以是除了进入到下令行之外,攻击者还可以执行其他恶意操作。
我们强烈建议人人立刻更新到最新版本的VMware vSphere Client。关于该破绽的其他信息,请参考iVMSA-2021-0002。
希望这篇文章能有助于人人对破绽的明白。
时间节点
2020年10月2日 向厂商讲述破绽
2020年10月3日 厂商第一次回复
2020年10月9日 乐成复现破绽,厂商更先制订修复设计
2021年2月23日 修复破绽并公布平安通告
本文翻译自:https://swarm.ptsecurity.com/unauth-rce-vmware/:
网友评论