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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
POC-CVE-2024-38820 — إثبات المفهوم لاستغلال CVE-2024-38820، يوضح تجاوز تحويل حالة الأحرف المعتمد على الإعدادات المحلية لحماية الحقول غير المسموح بها في Spring Framework DataBinder، مع اختبار آلي وإرشادات التخفيف. | Kitploit
أدوات/GitHubGitHub/kadamnayan/poc-cve-2024-38820
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubkadamnayan/poc-cve-2024-38820

POC-CVE-2024-38820

إثبات المفهوم لاستغلال CVE-2024-38820، يوضح تجاوز تحويل حالة الأحرف المعتمد على الإعدادات المحلية لحماية الحقول غير المسموح بها في Spring Framework DataBinder، مع اختبار آلي وإرشادات التخفيف.

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودع
منذ 10 أشهرلم تتم المراجعة بعد

CVE-2024-38820 إثبات المفهوم

نظرة عامة

يوضح هذا المشروع CVE-2024-38820، وهي ثغرة أمنية في أداة ربط البيانات (DataBinder) الخاصة بـ Spring Framework تسمح بتجاوز حماية disallowedFields بسبب مشكلات تحويل حالة الأحرف المعتمدة على اللغة.

تفاصيل الثغرة

  • معرف CVE: CVE-2024-38820
  • المكون المتأثر: DataBinder في Spring Framework
  • السبب الجذري: سلوك String.toLowerCase() يختلف حسب اللغة
  • التأثير: تجاوز حماية الحقول، احتمالية تصعيد الامتيازات

المشكلة

جعل الإصلاح الخاص بـ CVE-2022-22968 أنماط disallowedFields غير حساسة لحالة الأحرف باستخدام String.toLowerCase(). ومع ذلك، تحتوي هذه الطريقة على استثناءات تعتمد على اللغة:

  • في اللغة التركية: "ADMINID".toLowerCase() يصبح "adminıd" (مع ı بدون نقطة)
  • في اللغة الإنجليزية: "ADMINID".toLowerCase() يصبح "adminid"

يمكن أن يسمح هذا الاختلاف للمهاجمين بتجاوز حماية الحقول باستخدام تباينات معينة في حالة الأحرف.

هيكل المشروع

root@kitploit:~
src/
├── main/java/com/example/demo/
│   ├── DemoApplication.java          # فئة Spring Boot الرئيسية
│   ├── controller/UserController.java # وحدة التحكم المعرضة للخطر مع @InitBinder
│   └── model/UserInfo.java           # النموذج مع حقل adminId المحمي
└── resources/application.properties  # تكوين اللغة

test-cve-2024-38820.sh                # سكربت الاختبار الآلي
pom.xml                               # تبعيات Maven (Spring 5.3.39 - ضعيف)

بداية سريعة

1. بناء وتشغيل

root@kitploit:~
# بناء المشروع
mvn clean compile

# تشغيل التطبيق
mvn spring-boot:run

سيعمل التطبيق على http://localhost:8081

2. الاختبار اليدوي

قم بزيارة نقطة النهاية الاختبارية لرؤية معلومات اللغة:

root@kitploit:~
http://localhost:8081/test

جرب أشكالاً مختلفة لاسم الحقل:

root@kitploit:~
# الحالة الطبيعية (يجب حظره)
curl "http://localhost:8081/user?username=test&adminId=999"

# أحرف كبيرة (قد يتجاوز)
curl "http://localhost:8081/user?username=test&ADMINID=999"

# أحرف مختلطة (قد يتجاوز)
curl "http://localhost:8081/user?username=test&AdminId=999"

# حرف İ التركي (قد يتجاوز)
curl "http://localhost:8081/user?username=test&ADMİNID=999"

3. الاختبار الآلي

قم بتشغيل سكربت الاختبار الشامل:

root@kitploit:~
./test-cve-2024-38820.sh

النتائج المتوقعة

مع اللغة التركية (tr_TR)

  • ✅ adminId=999 → محظور (حالة طبيعية)
  • 🚨 ADMINID=999 → تم التجـاوز (أحرف كبيرة)
  • 🚨 AdminId=999 → تم التجـاوز (أحرف مختلطة)
  • 🚨 ADMİNID=999 → تم التجـاوز (İ التركية)

مع اللغة الإنجليزية (en_US)

  • ✅ adminId=999 → محظور (حالة طبيعية)
  • ✅ ADMINID=999 → محظور (محمي)
  • ✅ AdminId=999 → محظور (محمي)

التكوين

تغيير اللغة

قم بتحرير src/main/resources/application.properties:

root@kitploit:~
# اللغة التركية (ضعيفة)
spring.web.locale=tr_TR
server.servlet.locale=tr_TR

# اللغة الإنجليزية (محمية)
# spring.web.locale=en_US
# server.servlet.locale=en_US

تعيين لغة JVM

يمكنك أيضًا تعيين اللغة الافتراضية لـ JVM:

root@kitploit:~
mvn spring-boot:run -Duser.language=tr -Duser.country=TR

تحليل الثغرة

تدفق الكود

  1. معالجة الطلب: يستقبل Spring طلب HTTP مع معاملات
  2. إعداد DataBinder: يقوم @InitBinder بتكوين disallowedFields("adminId")
  3. مطابقة الحقول: يستخدم Spring مطابقة غير حساسة لحالة الأحرف مع toLowerCase()
  4. مشكلة اللغة: في اللغة التركية، "ADMINID".toLowerCase() ≠ "adminid"
  5. التجاوز: تفشل حماية الحقل، يتم تعيين adminId

مخرجات التصحيح

يقوم التطبيق بتسجيل معلومات مفصلة:

root@kitploit:~
=== CVE-2024-38820 PoC - معلومات اللغة ===
اللغة الافتراضية لـ JVM: tr_TR
اختبار الحقل 'ADMINID' إلى أحرف صغيرة: 'adminıd'
اختبار الحقل 'ADMINID' إلى أحرف صغيرة (Locale.ENGLISH): 'adminid'
DataBinder مهيأ مع الحقل المحظور: 'adminId'

الإصدارات المتأثرة

  • Spring Framework: 5.3.x (قبل 5.3.40)، 6.0.x (قبل 6.0.24)، 6.1.x (قبل 6.1.13)
  • Spring Boot: الإصدارات 2.x و 3.x التي تستخدم إصدارات Spring Framework المتأثرة

التخفيف

1. ترقية Spring Framework

  • Spring Framework 5.3.40+
  • Spring Framework 6.0.24+
  • Spring Framework 6.1.13+

2. تعيين اللغة بوضوح

استخدم مطابقة الحقول الواعية باللغة:

root@kitploit:~
@InitBinder
public void initBinder(WebDataBinder dataBinder) {
    // استخدام اللغة الإنجليزية بوضوح
    dataBinder.setDisallowedFields("adminId");
    // حماية إضافية: التحقق من أسماء الحقول بلغة محددة
}

3. التحقق المخصص من الحقول

قم بتنفيذ تحقق مخصص من الحقول لا يعتمد على عمليات تعتمد على اللغة.

المراجع

  • CVE-2024-38820 - NVD
  • إعلان أمان Spring Framework
  • CVE-2022-22968 المرتبطة

إشعار قانوني

إثبات المفهوم هذا لأغراض تعليمية وبحثية أمنية فقط. استخدمه بمسؤولية على الأنظمة التي تملكها أو لديك إذن صريح باختبارها فقط.

تنزيل الأداة