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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-22978 | Kitploit
أدوات/GitHubGitHub/umakant76705/cve-2022-22978
المصادقة والترخيصتحليل الثغرات الأمنيةاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubumakant76705/cve-2022-22978

CVE-2022-22978

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE 2022-22978: تجاوز التفويض في RegexRequestMatcher 🥶

نظرة عامة

وفقًا للمعلومات التي اطلعت عليها، هذه ثغرة تتعلق بالفئة RegexRequestMatcher في إطار عمل Spring Security. تحديدًا، التطبيقات التي تستخدم RegexRequestMatcher مع تعبير نمطي يحتوي على نقطة (.) يمكن تجاوزها باستخدام الأحرف \r(%0a) و \n(%0d)؛ وبذلك يمكن للمهاجمين الوصول إلى المسارات غير المسموح بها دون مصادقة.

الإصدارات المتأثرة بالثغرة من إطار عمل Spring Security:

  • 5.5.x قبل 5.5.7
  • 5.6.x قبل 5.6.4
  • الإصدارات غير المدعومة السابقة.

التحليل

نحتاج إلى الوصول إلى الكود المصدري لـ Spring Security لتحليل هذه الثغرة بشكل ثابت. تحديدًا، استخدمت ميزة مقارنة الـ commits بين الإصدارين 5.6.3 (الإصدار المتأثر بالثغرة) و5.6.4 (الإصدار الذي تم إصلاحه) على Github. انظر الرابط التالي: Comparing 5.6.3...5.6.4 · spring-projects/spring-security (github.com)

img1

قمت بفحص التغييرات في الفئة RegexRequestMatcher. يمكن ملاحظة أنه في الإصدار 5.6.4، تستخدم هذه الفئة Pattern.DOTALL بدلاً من . الافتراضي كما في الإصدار 5.6.3.

حيث:

  • Pattern: هي إحدى الفئات الثلاث الموجودة في الحزمة java.util.regex، وتتمثل وظيفتها في معالجة التعبيرات النمطية.
  • Pattern.DOTALL: عند استخدام هذا العلم، فإن . في التعبير النمطي يطابق جميع الأحرف، بما في ذلك أحرف السطر الجديد مثل \n , \r.
  • Pattern.CASE_INSENSITIVE: تجاهل حالة الأحرف (الأحرف الكبيرة أو الصغيرة).

img2

افتراضيًا، تطابق النقطة . في التعبير النمطي جميع الأحرف باستثناء أحرف السطر الجديد مثل \n, \r. وفي هذه الحالة، إذا كانت هناك دالة regex تتحقق من نمط سلسلة معينة، فلن يطابق التعبير النمطي إذا كانت السلسلة تحتوي على أحرف سطر جديد. لتجنب ذلك، يمكن استخدام العلم Pattern.DOTALL.

ومع ذلك، إذا تعمد شخص استخدام %0d بدلاً من \n أو %0a بدلاً من \r، فإن التعبير النمطي أعلاه لن يطابق. لذلك، في الإصدار 5.6.4، أُضيف فحص لهذه الحالة في RegexRequestMatcherTests.java. تحديدًا، يقوم بتحويل %0d و%0a على التوالي إلى \n و\r ثم يفحص باستخدام التعبير النمطي.

img3

العرض التوضيحي

الخطوة 1: أنشئ تطبيق ويب Spring Boot باستخدام Spring Initializr مع اعتماديتين هما Spring Security وSpring Web.

img4

الخطوة 2: أنشئ Controller يطبع النص This is a CVE-2022-22978 demo عند وصول طلب إلى المسار /admin/*

img5

الخطوة 3: قم بإعداد آلية مصادقة عند وصول المستخدم إلى المسار /admin/<bất kì> باستخدام regexMatchers("/admin/.*").authenticated(). هذه هي الثغرة التي يستغلها المهاجمون لعرض محتوى صفحات /admin/<bất kì> دون مصادقة.

img6

الخطوة 4: في ملف الإعدادات، قم بتعريف إصدار Spring Security الذي يحتوي على الثغرة. هنا اخترت الإصدار 5.6.3.

img7

الخطوة 5: شغّل التطبيق باستخدام الأمر gradlew bootRun، يستخدم البرنامج افتراضيًا Apache Tomcat للاستماع على المنفذ 8080. نصل إلى المسار /admin/xyz (أي مسار يبدأ بـ /admin/).

img8

تُرجع النتيجة رمز 403 Forbidden، مما يعني أنه لا يمكنني الوصول بسبب عدم المصادقة.

في هذه المرحلة، نستغل ثغرة دالة regexMatchers في Sping Security (الإصدار 5.6.3) عندما لا تطابق أحرف السطر الجديد مثل \r(%0d) و\n(%0a) → يمكنني الوصول إلى المسار أعلاه دون مصادقة باستخدام الحمولة /admin/%0dxyz

img9

وبالمثل مع الحمولة /admin/%0axyz

img10

وهكذا نجحنا في استغلال ثغرة CVE-2022-22978 بمجرد حمولة بسيطة للغاية.

طريقة الإصلاح

  • قم بتحديث إصدار Spring Security إلى:
    • 5.5.7+
    • 5.6.4+
    • 5.7+
  • العرض التوضيحي: استخدم الإصدار الذي تم إصلاحه، وتحديدًا 5.7.1

img11

جرّب مهاجمة الويب بنفس الحمولة السابقة: /admin/%0dxyz

img12

في هذه الحالة، لم يعد التطبيق يُرجع استجابة كما يتوقع المهاجم.

الاستخدام

root@kitploit:~
git clone https://github.com/ducluongtran9121/CVE-2022-22978-PoC.git
cd CVE-2022-22978-PoC
gradlew bootRun

المتطلبات

root@kitploit:~
Java 18
Gradle 7.4.1
تنزيل الأداة