Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2021-21972 — [CVE-2021-21972] VMware vSphere Client अनधिकृत फ़ाइल अपलोड से दूरस्थ कोड निष्पादन (RCE) | Kitploit
उपकरण/GitHubGitHub/murataydemir/cve-2021-21972
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगरेड टीमिंगपेलोड डेवलपमेंट
GitHubmurataydemir/cve-2021-21972

CVE-2021-21972

[CVE-2021-21972] VMware vSphere Client अनधिकृत फ़ाइल अपलोड से दूरस्थ कोड निष्पादन (RCE)

रिपॉजिटरी देखें
61105 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

[CVE-2021-21972] VMware vSphere Client अनधिकृत फ़ाइल अपलोड से रिमोट कोड निष्पादन (RCE)


vSphere Web Client (HTML5) अनिवार्य रूप से एक प्रशासनिक इंटरफ़ेस है जो vSphere इंस्टॉलेशन के प्रबंधन को सक्षम बनाता है। vSphere Client एक व्यवस्थापक को सीधे vSphere सर्वर तक पहुँचने की आवश्यकता के बिना vSphere के प्रमुख कार्यों तक पहुँच प्रदान करता है। यह व्यवस्थापकों को नई वर्चुअल मशीनें बनाने और मौजूदा मशीनों तथा उनके संसाधनों को प्रबंधित करने की अनुमति देता है। एक क्रॉस-प्लेटफ़ॉर्म वेब एप्लिकेशन होने के नाते, इसका उपयोग विभिन्न वेब ब्राउज़रों के समर्थित संस्करणों के माध्यम से सभी समर्थित ऑपरेटिंग सिस्टम पर किया जा सकता है।

CVE-2021-21972, vCenter Server में एक अनधिकृत फ़ाइल अपलोड भेद्यता है जो रिमोट सर्वर पर रिमोट कोड निष्पादन की ओर ले जाती है। यह समस्या vRealize Operations vCenter Plugin में प्रमाणीकरण की कमी के कारण उत्पन्न होती है। इसे 10.0 में से 9.8 का गंभीर CVSSv3 स्कोर प्राप्त हुआ। एक बिना प्रमाणीकरण वाला रिमोट हमलावर, सार्वजनिक रूप से सुलभ कमजोर vCenter Server एंडपॉइंट पर एक विशेष रूप से तैयार की गई फ़ाइल अपलोड करके इस भेद्यता का फायदा उठा सकता है। VMware vCenter Server संस्करण 6.5, 6.7 और 7.0 इस भेद्यता से प्रभावित हैं। इस भेद्यता के सफल शोषण के परिणामस्वरूप हमलावर को vCenter Server के अंतर्निहित ऑपरेटिंग सिस्टम में अप्रतिबंधित रिमोट कोड निष्पादन (RCE) विशेषाधिकार प्राप्त होंगे। इस तथ्य के बावजूद कि यह भेद्यता vRealize Operations vCenter Plugin से उत्पन्न होती है, VMware एडवाइज़री पुष्टि करती है कि यह प्लगइन vCenter Server के सभी डिफ़ॉल्ट इंस्टॉलेशन में शामिल है। इसका मतलब है कि कमजोर एंडपॉइंट vRealize Operations की उपस्थिति की परवाह किए बिना उपलब्ध है।

मूल ब्लॉगपोस्ट यहाँ में, भेद्यता की खोज को यथासंभव विस्तार से समझाया गया है, साथ ही RCE प्राप्त करने के दो अलग-अलग रास्ते भी बताए गए हैं। Windows सिस्टम के लिए, एक हमलावर अंतर्निहित ऑपरेटिंग सिस्टम पर NT AUTHORITY\SYSTEM विशेषाधिकार प्राप्त करने के लिए एक विशेष रूप से तैयार की गई .jsp फ़ाइल अपलोड कर सकता है। Linux सिस्टम के लिए, एक हमलावर को vsphere-ui उपयोगकर्ता विशेषाधिकार प्राप्त करने के लिए सर्वर के authorized_keys पथ पर एक सार्वजनिक कुंजी उत्पन्न और अपलोड करनी होगी और फिर SSH के माध्यम से कमजोर सर्वर से कनेक्ट करना होगा। (यदि SSH सेवा चल रही है और नेटवर्क पर सुलभ है)

vropsplugin-service.jar vropspluginui प्लगइन की एक जावा आर्काइव फ़ाइल है और इसमें कुछ क्लासेज तथा अन्य संबंधित फ़ंक्शन और मेथड शामिल हैं। कोड का कमजोर हिस्सा नीचे दर्शाया गया है। यह कोड स्निपेट vropsplugin-service.jar के कंट्रोलर में ServicesController.class से संबंधित है। जैसा कि आप नीचे दिए गए कोड स्निपेट में देख सकते हैं, uploadOvaFile फ़ंक्शन /ui/vropspluginui/rest/services/uploadova एंडपॉइंट/URL के लिए ज़िम्मेदार है

कमजोर क्लास का पूरा पथ: vropsplugin-service\com\vmware\vropspluginui\mvc\ServicesController.class

@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;
    try {
      if (code != 200) {
        response.sendError(code, "Arguments Missing");
        return;
      } 
      wr = response.getWriter();
    } catch (IOException e) {
      e.printStackTrace();
      logger.info("upload Ova Controller Ended With Error");
    } 
    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();
          for (String str : entries) {
            File currentFile = new File(dir.getPath(), str);
            currentFile.delete();
          } 
          logger.info("Successfully cleaned : /tmp/unicorn_ova_dir");
        } 
        TarArchiveInputStream in = new TarArchiveInputStream(inputStream);
        TarArchiveEntry entry = in.getNextTarEntry();
        List<String> result = new ArrayList<String>();
        while (entry != null) {
          if (entry.isDirectory()) {
            entry = in.getNextTarEntry();
            continue;
          } 
          File curfile = new File("/tmp/unicorn_ova_dir", entry.getName());
          File parent = curfile.getParentFile();
          if (!parent.exists())
            parent.mkdirs(); 
          OutputStream out = new FileOutputStream(curfile);
          IOUtils.copy((InputStream)in, out);
          out.close();
          result.add(entry.getName());
          entry = in.getNextTarEntry();
        } 
        in.close();
        logger.info("Successfully deployed File at Location :/tmp/unicorn_ova_dir");
      } catch (Exception e) {
        logger.error("Unable to upload OVA file :" + e);
        returnStatus = "FAILED";
      }  
    wr.write(returnStatus);
    wr.flush();
    wr.close();
  }

एक हमलावर के दृष्टिकोण से, इस क्लास का हैंडलर निम्नलिखित क्रियाएँ कर रहा है

  • uploadFile पैरामीटर को POST मेथड अनुरोध के साथ प्राप्त करना (लाइन 2)
  • uploadFile पैरामीटर को पढ़ना और इस पैरामीटर की सामग्री को inputStream वेरिएबल में लिखना (लाइन 22)
  • परिणामी डेटा को .tar आर्काइव के रूप में खोलना (लाइन 34)
  • आर्काइव की सभी एंट्रीज़ प्राप्त करना (लाइन 35)
  • प्रत्येक वर्तमान एंट्री की प्रतिलिपि फ़ाइल नामकरण परंपरा का उपयोग करके डिस्क पर बनाई गई थी: /tmp/unicorn_ova_dir + entry.getName() (लाइन 42 और 47)

प्रूफ ऑफ कॉन्सेप्ट: इस भेद्यता का शोषण करने के लिए, आप निम्नलिखित चरणों का उपयोग कर सकते हैं

  1. भेद्यता सत्यापित करें
  2. एक .tar आर्काइव एंट्री बनाएं जिसमें स्ट्रिंग ../../ हो
  3. तैयार की गई आर्काइव फ़ाइल को सर्वर पर अपलोड करें
  4. संबंधित पथ पर जाएं और आपके द्वारा अपलोड की गई फ़ाइल को कॉल करें /statsreport/uploadedFileName.jsp

भेद्यता सत्यापित करने के लिए, आप निम्नलिखित अनुरोध का उपयोग कर सकते हैं

GET /ui/vropspluginui/rest/services/getstatus HTTP/1.1
Host: vulnerablehost
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36
Connection: close

यदि उपरोक्त अनुरोध की प्रतिक्रिया नीचे दी गई प्रतिक्रियाओं के समान है, तो इसका मतलब है कि रिमोट होस्ट CVE-2021-21972 के प्रति कमजोर है

HTTP/1.1 200 
Strict-Transport-Security: max-age=30758400;includeSubDomains
X-XSS-Protection: 1; mode=block
Set-Cookie: VSPHERE-UI-JSESSIONID=35CB9D3F277D6B8413F099F93FB3A5CE; Path=/ui; Secure; HttpOnly
Content-Type: text/plain;charset=ISO-8859-1
Content-Length: 141
Date: Tue, 06 Apr 2021 14:32:30 GMT
Connection: close
Server: Anonymous

{"States":"[]","Install Progress":"UNKNOWN","Config Progress":"UNKNOWN","Config Final Progress":"UNKNOWN","Install Final Progress":"UNKNOWN"}
HTTP/1.0 200 OK
strict-transport-security: max-age=30758400;includeSubDomains
x-xss-protection: 1; mode=block
set-cookie: VSPHERE-UI-JSESSIONID=3D8FE882F9BD3DD1C66C10DFD00022C9; Path=/ui; Secure; HttpOnly
content-type: text/plain;charset=ISO-8859-1
content-length: 374
date: Tue, 06 Apr 2021 14:33:22 GMT
server: envoy
x-envoy-upstream-service-time: 1
connection: close

{"States":"[OVF_DEPLOY_START, OVF_DEPLOY_IN_PROGRESS, OVF_DEPLOY_SUCCESS, VROPS_CONFIGURATION_START, VROPS_CONFIGURE_MASTER_START, VROPS_INIT_CLUSTER_START, VROPS_INIT_CLUSTER_ERROR, VROPS_CONFIGURATION_SUCCESS]","Install Progress":"UNKNOWN","Config Progress":"VROPS_CONFIGURATION_SUCCESS","Config Final Progress":"CONFIGURE_VROPS_FAILED","Install Final Progress":"UNKNOWN"}
टूल डाउनलोड करें