Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/nguyenv1nk/cve-2022-22954
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubnguyenv1nk/cve-2022-22954

CVE-2022-22954

محلل CVE-2022-22954

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

الأكثر شعبية

عرض الكل →

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

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

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

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

تحليل CVE-2022-22954

نظرة عامة

يوفر Workspace ONE Access (نموذج توفير مساحة العمل كخدمة) ميزات المصادقة متعددة العوامل، وتسجيل الدخول الموحد، والوصول المشروط لتطبيقات SaaS وتطبيقات الويب والجوال. CVE-2022-22954 هو ثغرة حقن القوالب من جانب الخادم (Server-side Template Injection) الموجودة في المنتجات التالية:

  • VMware Workspace ONE Access (Access): v21.08.0.1، 21.08.0.0، 20.10.0.1، 20.10.0.0
  • VMware Identity Manager (vIDM): v3.3.6، 3.3.5، 3.3.4، و3.3.3
  • VMware vRealize Automation (vRA): v8.x و7.6
  • VMware Cloud Foundation (VCF): v4.x و3.x
  • vRealize Suite Lifecycle Manager: 8.x

الإعداد

  1. قم بتنزيل ملف ova الخاص بـ VMware Workspace ONE Access Appliance الإصدار 21.08.0.1

  2. افتح الملف باستخدام VMware Workstation، ويجب وضع الجهاز الافتراضي على شبكة NAT

  3. في خصائص الشبكة (Networking Properties)، يجب تكوين اسم المضيف (FQDN)

  4. بعد اكتمال التثبيت، انتقل إلى المسار https://{{hostname}}:8443/ لتكوين كلمة مرور حساب التطبيق وكلمة مرور حساب ssh وقاعدة بيانات التطبيق يعمل التطبيق على https://{{hostname}}/

  5. سجّل الدخول إلى الجهاز الافتراضي باستخدام حساب sshuser، ثم انتقل إلى حساب root اكتشف مسار التطبيق في /opt/vmware/horizon/workspace/ الكود المصدري للتطبيق موجود في المجلد /opt/vmware/horizon/workspacce/webapps

  6. افحص الملف /opt/vmware/horizon/workspace/bin/setenv.sh، ولاحظ أن المتغير JAVA_OPTS يمكن تهيئته لتصحيح الأخطاء عن بُعد (remote debug)

  7. أضف -agentlib:jdwp=transport=dt_socket,server=y,address=5005,suspend=n إلى JAVA_OPTS وأعد تشغيل الخدمة

    root@kitploit:~
     `systemctl restart horizon-workspace.service`
    

تحليل المسار

قم بتنزيل ملف التصحيح HW-154129-applyWorkaround.py

تتضمن الخطوات خطوة لإزالة الملف templates/customError.ftl من التطبيق

يوجد في الملف customError.ftl دالة eval. يمكن استغلال ثغرة Freemarker SSTI من هنا إذا تمكّن المهاجم من التحكم في قيمة errorObj.

في الكلاس com.vmware.enusercatalog.ui.web.UiErrorController، نرى أن الدالة handleGenericError تعين القيمة إلى errorObj عبر المتغير errorMessage

دعنا نتابع استدعاءات الدوال والمعامل errorMessage

الدالة handleUnauthorizedError

الدالة getErrorPage

في الدالتين sendError وsendUnhandledError، تُؤخذ قيمة errorMessage من الخاصية javax.servlet.error.message

في الكلاس com.vmware.endusercatalog.ui.web.UiApplicationExceptionResolver، تُعين قيمة الخاصية javax.servlet.error.message”* في الدالة resolverExeption

الدالة handleAnyGenericExeption مُعلمة بالتعليق التوضيحي @ExeptionHandler

في الكلاس com.vmware.endusercatalog.ui.UiApplication، ضمن الحزم الموسومة بـ @CommponentScan توجد com.vmware.endusercatalog.auth

=> يمكن التقاط الاستثناءات (exceptions) في هذه الحزمة بواسطة الدالة handleAnyGenericExeption

في com.vmware.endusercatalog.ui.config، تتم إضافة المعترض AuthContextPopilationInterceptor مع المسارات /ui و*/hub-ui* و*/hub-ui/byob* و*/logout* و*/ui/oauth/verify*

بالانتقال إلى الكلاس com.vmware.endusercatalog.auth.interceptor.AuthContextPopulationInterceptor، في الدالة preHandle، يستقبل التطبيق معاملين هما deviceUdid وdeviceType ويستدعي الدالة authContextBuilder

في الكلاس com.vmware.endusercatalog.auth.interceptor.AuthContext، سيظهر الاستثناء InvalidAuthContextException إذا لم يتحقق الشرط this.isValidRequest

لكي يتحقق isValidRequest، يجب أن يكون المعاملان this.deviceId وthis.deviceType فارغين معًا أو بقيمتين معًا

=> تمرير قيمة لأحد المعاملين فقط سيؤدي إلى ظهور خطأ هنا

أرسل الطلب

root@kitploit:~
GET /catalog-portal/ui/oauth/verify?deviceUdid=111 

يظهر الخطأ

root@kitploit:~
An unexpected error occurred while processing request with requestId: {0}.

بالعودة إلى الدالة com.vmware.endusercatalog.ui.web.WorkspaceOauth2CodeVerificationController نلاحظ أن الخطأ أعلاه يظهر بسبب نقص المعامل المطلوب error

root@kitploit:~
    @GetMapping(
        value = {"/ui/oauth/verify"},
        params = {"error"}
    )
    @ApiOperation(
        value = "authorizeError",
        notes = ""
    )
    public void authorizeError(@ApiParam @RequestParam String error, @ApiParam @RequestParam(name = "error_description") String errorDescription, @ApiParam @RequestParam(defaultValue = "/admin/") String state) {
        LOGGER.debug("Failed to obtain authorization code due to {}:{} received for {}", new Object[]{error, errorDescription, state});
        throw new AuthorizationCodeFailedRetrievalException(new Object[]{error, state});
    }

أرسل الطلب مرة أخرى

root@kitploit:~
GET /catalog-portal/ui/oauth/verify?error=&deviceUdid=111abc 

تظهر قيمة deviceUdid في الاستجابة

أدخل المعامل المسبب لثغرة SSTI في Freemarker

أرسل طلبًا بالقيمة

root@kitploit:~
deviceUdid=${"freemarker.template.utility.Execute"?new()("cat /etc/passwd")}

الاستغلال

روابط مرجعية

  • https://kb.vmware.com/s/article/88099
  • https://github.com/DrorDvash/CVE-2022-22954_VMware_PoC/
  • https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection
تنزيل الأداة