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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-22978 — إثبات مفهوم يوضح تجاوز التفويض في RegexRequestMatcher الخاص بـ Spring Security (CVE-2022-22978) باستخدام حقن CRLF، مع خطوات التحليل والتخفيف. | Kitploit
أدوات/GitHubGitHub/raghvendra1207/cve-2022-22978
المصادقة والترخيصتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالتعلم والتعليممختبرات وتدريب عملي
GitHubraghvendra1207/cve-2022-22978

CVE-2022-22978

إثبات مفهوم يوضح تجاوز التفويض في RegexRequestMatcher الخاص بـ Spring Security (CVE-2022-22978) باستخدام حقن CRLF، مع خطوات التحليل والتخفيف.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

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 لتحليل الثغرة بشكل ثابت. على وجه التحديد، استخدمت ميزة مقارنة الالتزامات بين الإصدارين 5.6.3 (الإصدار المتأثر) و5.6.4 (الإصدار المُصحح) على Github. انظر الرابط التالي: مقارنة 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 للتحقق من نمط سلسلة ما، فإن دالة regex تلك لن تطابق إذا كانت السلسلة تحتوي على أحرف سطر جديد. لتجنب ذلك، يمكن استخدام العلامة Pattern.DOTALL.

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

img3

عرض توضيحي

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

img4

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

img5

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

img6

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

img7

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

img8

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

عند هذه النقطة، نستغل ثغرة دالة regexMatchers في Spring 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
تنزيل الأداة