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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-22243 — أمثلة على سيناريوهات قابلة للاستغلال لـ CVE-2024-22243 التي تؤثر على Spring Framework (إعادة توجيه مفتوحة و SSRF). | Kitploit
أدوات/GitHubGitHub/seanpesce/cve-2024-22243
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبأمن الويبCTFالتعلم والتعليم
GitHubseanpesce/cve-2024-22243

CVE-2024-22243

أمثلة على سيناريوهات قابلة للاستغلال لـ CVE-2024-22243 التي تؤثر على Spring Framework (إعادة توجيه مفتوحة و SSRF).

عرض المستودع
13214منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2024-22243

المؤلف: Sean Pesce

يحتوي هذا المشروع على تطبيق ويب نموذجي يوضح السيناريوهات القابلة للاستغلال لـ CVE-2024-22243، وهي ثغرة أمنية في تحليل عناوين URL في إطار عمل Spring Framework الخاص بلغة Java (الإفصاح الرسمي هنا).

الثغرة الأمنية

تقوم الإصدارات المتأثرة من Spring بتحليل المقطع "userinfo" لعناوين URL بطريقة فريدة، مما قد يؤدي إلى استخلاص مقطع اسم مضيف يختلف عن العديد من المكتبات الشائعة الأخرى.

يحدث السلوك غير الطبيعي بسبب التعبير النمطي ("regex") التالي في الفئة UriComponentsBuilder (التي تم تقديمها بواسطة هذا الالتزام في عام 2014):

root@kitploit:~
private static final String USERINFO_PATTERN = "([^@\\[/?#]*)";

لا يسمح هذا التعبير النمطي بحرف "القوس الأيسر" ([) في مقطع معلومات المستخدم. ومع ذلك، يبدو أن Spring متفرّد بهذا السلوك، لذا فإن استدعاء على كائن الذي تم إنشاؤه باستخدام أو يمكن أن يؤدي إلى سلوك غير متوقع. كما تتأثر الفئات و و أيضًا بسبب استخدامها الداخلي لـ ؛ لذلك، يمكن أن تصبح التطبيقات عرضة للخطر حتى بدون الاستخدام المباشر لـ .

getHost()
UriComponents
UriComponentsBuilder.fromUriString
UriComponentsBuilder.fromHttpUrl
RestTemplate
RestClient
WebClient
UriComponentsBuilder
UriComponentsBuilder

بالنسبة للمدخلات المصممة خصيصًا، سيعيد Spring قيمة اسم مضيف تختلف عن جميع ما يلي:

  • متصفحات الويب الحديثة، بما في ذلك:
    • Chrome (والمتصفحات الأخرى المبنية على Chromium)
    • Firefox
    • Safari
  • java.net.URI (يُذكر فقط لإصدارات Java محددة؛ الإصدارات الأخرى تطرح URISyntaxException)
  • java.net.URL
  • curl
  • android.net.Uri
  • okhttp3.HttpUrl
  • (Python 3) urllib.parse.urlparse

(لاحظ أن هذه القائمة غير شاملة.)

قد يؤدي هذا السلوك إلى جعل تطبيقات الويب المبنية على Spring عرضة لـ إعادة التوجيه المفتوحة و تزوير الطلب من جانب الخادم (SSRF) إذا كان التنفيذ المعتمد يستخدم أسماء المضيفين الموثوقة للترخيص أو آليات أخرى متعلقة بالأمان.

أمثلة

يحتوي تطبيق الويب النموذجي على نقطتي نهاية عرضة للخطر.

نقطة النهاية الأولى، /redirect، توضح كيف يمكن أن يؤدي تحليل Spring غير الطبيعي لعناوين URL إلى إعادة توجيه مفتوحة. يمكن استغلالها باستخدام عنوان URL مثل التالي:

root@kitploit:~
https://127.0.0.1[@evil.com

نقطة النهاية الثانية، /health-check، توضح كيف يمكن أن يؤدي عدم التطابق في تحليل عنوان URL بين Spring و فئة مكتبة Java القياسية URL إلى تزوير الطلب من جانب الخادم (SSRF). يمكن استغلالها باستخدام عنوان URL مثل التالي:

root@kitploit:~
https://evil.com[@127.0.0.1

الاستخدام

لبناء هذا المشروع باستخدام Maven، ما عليك سوى تشغيل الأمر التالي (تم اختباره مع OpenJDK 17):

root@kitploit:~
mvn clean package

ثم ابدأ تشغيل تطبيق الويب بأمر مثل التالي:

root@kitploit:~
java -jar seanpesce-cve-2024-22243.jar 9999

سيكون تطبيق الويب متاحًا على http://127.0.0.1:9999/.

Docker

لبناء صورة Docker، قم بتشغيل الأمر التالي:

root@kitploit:~
docker build -t seanpesce-cve-2024-22243:latest .

ثم ابدأ تشغيل تطبيق الويب بأمر مثل التالي:

root@kitploit:~
docker run -i -e PORT=9999 -p 9999:9999 seanpesce-cve-2024-22243:latest

سيكون تطبيق الويب متاحًا على http://127.0.0.1:9999/ على مضيف Docker.

Semgrep

يحتوي هذا المستودع أيضًا على قواعد semgrep للمساعدة في فحص مسارات الكود التي قد تكون عرضة للخطر. spring-cve-2024-22243_loose.yaml يقوم بعمليات فحص بسيطة لأي استخدام لواجهات برمجة التطبيقات (APIs) المعرضة للخطر؛ وبالتالي، سيعيد غالبًا عددًا كبيرًا من النتائج الإيجابية الخاطئة. spring-cve-2024-22243_strict.yaml يحاول استخدام منطق أكثر صرامة وتحليل التلوث؛ ومع ذلك، لم يتم اختباره بدقة ولديه احتمالية كبيرة لتفويت بعض التطبيقات المعرضة للخطر (خاصة عند عدم استخدام Semgrep Pro، وهو مطلوب للتحليل عبر الملفات).

موارد أخرى

  • إدخال قاعدة بيانات NIST
  • التزام Git الذي أصلح الثغرة الأمنية
  • عرض توضيحي للتطبيق المعرض للخطر: تدفق OAuth مع إعادة توجيه مفتوحة بواسطة threedr3am من مختبر أمان SecCoder
  • CVE-2024-22259، ثغرة أمنية ثانية في تحليل عناوين URL تم اكتشافها في أعقاب CVE-2024-22243
  • CVE-2024-22262، ثغرة أمنية ثالثة في تحليل عناوين URL تم اكتشافها في أعقاب الاكتشافين الأولين
  • ورقة الغش الخاصة بـ PortSwigger لتجاوز التحقق من URL، والتي تتضمن حمولات لـ CVE-2024-22243
تنزيل الأداة