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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
spring4shell-local-verification-lab — مشروع التحقق من شروط التأثير المحلية وإصلاح ترقية الإصدار وإعادة الاختبار لـ Spring Framework CVE-2022-22965 | Kitploit
أدوات/GitHubGitHub/meng-security/spring4shell-local-verification-lab
تحليل الثغرات الأمنيةتحليل الكودالاستغلالأمن الويبالتعلم والتعليممختبرات وتدريب عملي
GitHubmeng-security/spring4shell-local-verification-lab

spring4shell-local-verification-lab

مشروع التحقق من شروط التأثير المحلية وإصلاح ترقية الإصدار وإعادة الاختبار لـ Spring Framework CVE-2022-22965

عرض المستودع
19منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

مشروع التحقق المحلي من شروط تأثير Spring4Shell والإصلاح وإعادة الاختبار

نظرة عامة على المشروع

هذا المشروع مخصص لتعلم والتحقق من شروط التأثير والمخاطر وأسلوب الإصلاح وإجراءات إعادة الاختبار بعد الإصلاح لثغرة Spring Framework CVE-2022-22965، والمعروفة أيضًا باسم Spring4Shell.

تم تنفيذ المشروع في بيئة محلية مرخصة أُعدت شخصيًا. لا يركّز المشروع على مهاجمة أهداف حقيقية، بل على بناء بيئتي اختبار Spring MVC قبل الإصلاح وبعده، لتأكيد شروط التأثير المرتبطة بالثغرة عنصرًا بعنصر، ومراقبة الفرق في مسارات الخصائص الداخلية لربط بيانات Spring قبل وبعد ترقية الإصدار بطريقة آمنة وموجهة للقراءة فقط.

أنجز هذا المشروع الخطوات التالية:

  • تجهيز بيئة JDK وMaven وApache Tomcat
  • بناء مشروع Spring MVC WAR
  • التحقق الأساسي من الوظيفة الطبيعية
  • تأكيد شروط تأثير الثغرة
  • تشخيص القراءة فقط لمسارات الخصائص الداخلية
  • تحليل سبب الثغرة
  • ترقية إصدار Spring Framework
  • إعادة الاختبار الأمني بعد الإصلاح
  • إعادة اختبار الوظيفة الطبيعية بعد الإصلاح
  • إعداد تقرير الاختبار وأدلة لقطات الشاشة

بيان الأمان

يُستخدم هذا المشروع فقط في بيئة محلية شخصية أو بيئة اختبار أمان مرخّصة بوضوح.

لا يستهدف المشروع أي مواقع ويب عامة أو خوادم أو أنظمة أعمال تابعة لجهات خارجية بأي عمليات فحص أو استكشاف أو استغلال للثغرات، ولا يتضمن بيانات مستخدمين حقيقية أو بيانات أعمال حقيقية.

لم تُنفَّذ أثناء الاختبار العمليات التالية:

  • لم تتم كتابة WebShell
  • لم يتم تنفيذ أوامر نظام
  • لم يتم تعديل إعدادات Tomcat
  • لم يتم إنشاء Reverse Shell
  • لم يتم التحكم المستمر
  • لم يحدث أي تأثير على أي نظام خارجي

يُحظر استخدام أساليب الاختبار في هذا المشروع ضد أي أهداف غير مرخصة.

خلفية الثغرة

تُعرف CVE-2022-22965 عادةً باسم Spring4Shell، وهي ثغرة تنفيذ أوامر عن بُعد في Spring Framework تتعلق بآلية ربط بيانات معاملات الطلبات.

يدعم Spring MVC الربط التلقائي لمعاملات HTTP بخصائص كائنات Java. على سبيل المثال، يستقبل هذا المشروع معاملي الاسم والبريد الإلكتروني بالطريقة التالية:

@ModelAttribute("profile") UserProfile profile

في الظروف الطبيعية، يتم ربط معاملي الطلب name وemail بكائن UserProfile وفقًا لأسماء الخصائص.

في الإصدارات المتأثرة، لم تكن القيود على الوصول إلى بعض مسارات الخصائص الداخلية صارمة بما يكفي. عند استخدام JDK 9 أو إصدار أحدث واستيفاء شروط معينة تتعلق بحاوية Servlet وطريقة النشر وربط البيانات، قد تتمكن معاملات الطلبات الخارجية من الوصول عبر كائنات الأعمال العادية إلى كائنات Java الداخلية المتعلقة بـ Class أو الوحدات (Modules) أو محمّلات الفئات (ClassLoaders) أو الحاوية.

في البيئات القابلة للاستغلال تحديدًا، قد يتمكن المهاجم من تعديل إعدادات الخادم أو كتابة ملفات على الخادم، مما يؤدي إلى خطر تنفيذ أوامر عن بُعد.

لا ينفّذ هذا المشروع استغلالًا كاملًا للثغرة عن بُعد، بل يستخدم مسار الخصائص التالي لإجراء تشخيص آمن للقراءة فقط للمقارنة:

class.module.name

أهداف المشروع

  1. فهم العملية الأساسية لربط بيانات معاملات الطلبات في Spring MVC.
  2. بناء مشروع اختبار Spring MVC WAR محلي.
  3. إكمال التحقق الأساسي من الوظيفة الطبيعية للأعمال.
  4. تأكيد شروط التأثير مثل Spring Framework وJDK وTomcat ونشر WAR ونقطة ربط البيانات.
  5. مراقبة سلوك الوصول إلى مسارات الخصائص الداخلية بطريقة القراءة فقط.
  6. تحليل الأسباب الرئيسية للثغرة.
  7. ترقية Spring Framework إلى الإصدار المُصلَح.
  8. إجراء إعادة الاختبار بعد الإصلاح باستخدام نفس الأسلوب.
  9. التأكد من أن ترقية الإصدار لم تؤثر على الوظائف الطبيعية للأعمال.
  10. تنظيم كود المصدر وتقرير الاختبار وأدلة لقطات الشاشة.

بيئة التجربة

تم تنفيذ هذا المشروع في بيئة معزولة محلية باستخدام VMware.

  • النظام المضيف: Windows 11
  • الجهاز الهدف: جهاز افتراضي Windows 10
  • برنامج المحاكاة الافتراضية: VMware Workstation
  • بيئة Java: Eclipse Temurin JDK 11.0.31
  • أداة بناء المشروع: Apache Maven 3.9.16
  • حاوية Servlet: Apache Tomcat 9.0.60
  • إصدار Spring Framework قبل الإصلاح: 5.3.17
  • إصدار Spring Framework بعد الإصلاح: 5.3.18
  • إطار الويب: Spring MVC
  • طريقة نشر المشروع: نشر حزمة WAR التقليدية
  • عنوان الاختبار: 127.0.0.1

بيانات اختبار الوظيفة الطبيعية:

  • الاسم: Alice
  • البريد الإلكتروني: [email protected]

مسار خاصية التشخيص الأمني:

class.module.name

هيكل المشروع

spring4shell-local-verification-lab/

  • README.md: مقدمة المشروع ومنهجية الاختبار ونتائج التحقق وشرح الإصلاح
  • docs/: تقرير التحقق المحلي من شروط تأثير Spring4Shell والإصلاح وإعادة الاختبار
  • images/: لقطات بيئة المشروع وعملية الاختبار وإعادة الاختبار
  • vulnerable-demo/: مشروع ما قبل الإصلاح باستخدام Spring Framework 5.3.17
  • fixed-demo/: مشروع ما بعد الإصلاح باستخدام Spring Framework 5.3.18
  • notes/: ملاحظات التعلم وسجلات العملية

الهيكل الرئيسي للمصدر:

  • config/: فئات إعداد Spring MVC وفئة تهيئة التطبيق
  • controller/: معالجة النماذج ووحدة تحكم تشخيص مسار الخصائص
  • model/: فئة UserProfile المستخدمة لاستقبال معاملي الاسم والبريد الإلكتروني
  • WEB-INF/views/: صفحات JSP للصفحة الرئيسية ونتائج التقديم ونتائج التشخيص

شرح مشروع الاختبار

يُنشئ هذا المشروع تطبيقَي Spring MVC، أحدهما قبل الإصلاح والآخر بعده.

المشروع قبل الإصلاح

دليل المشروع:

vulnerable-demo

الإصدار المستخدم:

Spring Framework 5.3.17

ملف WAR المُنشأ:

spring4shell-vulnerable-demo.war

عنوان الوصول:

http://127.0.0.1:8080/spring4shell-vulnerable-demo/

صفحة التشخيص:

http://127.0.0.1:8080/spring4shell-vulnerable-demo/binding-probe

المشروع بعد الإصلاح

دليل المشروع:

fixed-demo

الإصدار المستخدم:

Spring Framework 5.3.18

ملف WAR المُنشأ:

spring4shell-fixed-demo.war

عنوان الوصول:

http://127.0.0.1:8080/spring4shell-fixed-demo/

صفحة التشخيص:

http://127.0.0.1:8080/spring4shell-fixed-demo/binding-probe

شرح الوظيفة الطبيعية

يوفر مشروع الاختبار نموذجًا بسيطًا لبيانات المستخدم، ويتضمن:

  • حقل إدخال الاسم
  • حقل إدخال البريد الإلكتروني
  • زر إرسال البيانات

تستقبل وحدة التحكم معاملات الطلبات بالطريقة التالية:

@ModelAttribute("profile") UserProfile profile

عندما يرسل المستخدم الاسم والبريد الإلكتروني، يقوم Spring MVC تلقائيًا بربط معاملي name وemail بكائن UserProfile.

تقرأ صفحة النتائج الكائن المرتبط وتعرض الاسم والبريد الإلكتروني اللذين أدخلهما المستخدم.

تُستخدم هذه الوظيفة لتأكيد أن المشروع يعمل بشكل طبيعي، ولإثبات وجود نقطة ربط بيانات صالحة لمعاملات طلبات Spring MVC في التطبيق.

منهجية الاختبار

يتبع هذا المشروع منهجية "تأكيد الوظيفة الطبيعية أولًا، ثم تأكيد شروط التأثير، ثم إجراء تشخيص مخاطر القراءة فقط، وأخيرًا الإصلاح وإعادة الاختبار".

  1. تثبيت وتكوين JDK 11 وMaven وApache Tomcat.
  2. بناء مشروع Spring MVC باستخدام Spring Framework 5.3.17.
  3. إنشاء نموذج الاسم والبريد الإلكتروني.
  4. استخدام @ModelAttribute لربط معاملات الطلبات بكائن UserProfile.
  5. استخدام Maven لتغليف المشروع في ملف WAR.
  6. نشر ملف WAR في Apache Tomcat يعمل بشكل مستقل.
  7. إرسال بيانات مستخدم محاكاة محليًا لإكمال التحقق الأساسي من الوظيفة الطبيعية.
  8. التحقق من JDK وTomcat وSpring Framework وطريقة النشر الفعلية قيد التشغيل.
  9. استخدام BeanWrapper من Spring لإجراء تشخيص القراءة فقط لـ class.module.name.
  10. تسجيل نتائج الوصول إلى مسار الخصائص في بيئة Spring Framework 5.3.17.
  11. ترقية Spring Framework إلى 5.3.18.
  12. إعادة بناء ونشر المشروع بعد الإصلاح.
  13. إجراء إعادة الاختبار بعد الإصلاح باستخدام نفس مسار الخصائص.
  14. إرسال الاسم والبريد الإلكتروني مرة أخرى لتأكيد عدم تأثر الوظيفة الطبيعية.

تأكيد شروط التأثير

قام هذا المشروع بتأكيد شروط التأثير التالية عنصرًا بعنصر:

  • استخدام JDK 11.0.31، وهو يستوفي شرط JDK 9 أو إصدار أحدث
  • استخدام Spring Framework 5.3.17
  • يحتوي المشروع على مكوّن spring-webmvc
  • استخدام Apache Tomcat 9.0.60
  • نشر المشروع كحزمة WAR تقليدية
  • تحميل المشروع بواسطة Tomcat يعمل بشكل مستقل
  • وجود نقطة ربط بيانات قائمة على @ModelAttribute في وحدة التحكم

تشمل تبعيات Spring المنشورة فعليًا في المشروع قبل الإصلاح:

  • spring-beans-5.3.17.jar
  • spring-core-5.3.17.jar
  • spring-web-5.3.17.jar
  • spring-webmvc-5.3.17.jar

لا يحكم هذا المشروع على وجود الثغرة من إصدار Spring Framework وحده، بل يجري تحليلًا شاملًا يجمع بين JDK وSpring MVC وTomcat ونشر WAR ونقطة ربط البيانات.

طريقة التشخيص

لتجنب تنفيذ استغلال الثغرة بأسلوب مدمر، يستخدم هذا المشروع BeanWrapper من Spring Framework لإجراء فحص القراءة فقط لمسار الخصائص التالي:

class.module.name

يعني هذا المسار:

تنزيل الأداة