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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/skrkcb2/cve-2024-38819
تحليل الثغرات الأمنيةالاستغلالأمن الويباختبار الاختراقالأوراق والأبحاثالتعلم والتعليم
GitHubskrkcb2/cve-2024-38819

cve-2024-38819

تحليل متعمق لـ CVE-2024-38819، وهي ثغرة اجتياز ملفات في Spring WebFlux، مع تحليل على مستوى الكود وPoC واستراتيجيات التخفيف بما في ذلك عوامل التصفية وقواعد IPS.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2024-38819

01. نظرة عامة على File-Traversal وWebflux

  • 1) نظرة عامة على File-Traversal وWebFlux

    تُعد ثغرة File-Traversal (استكشاف المسار، Path Traversal) نوعًا من الهجمات المصنفة بـ CWE-22، والتي تتيح للمهاجم تجاوز صلاحيات نظام الملفات في تطبيق الويب والوصول إلى ملفات عشوائية.

    Spring WebFlux هو وحدة تدعم البرمجة التفاعلية (Reactive Programming) تم تقديمها في Spring 5، وتدعم تطوير التطبيقات غير المتزامنة غير الحاجبة (Non-blocking). كما يوفر WebFlux.fn توجيهًا وظيفيًا لنقاط النهاية (Functional Endpoint Routing) مما يتيح تكوين مسارات موجزة ومرنة باستخدام تعبيرات اللامدا (Lambda).

    تحدث الثغرة CVE-2024-38819 في التطبيقات التي تستخدم WebFlux.fn وWebMVC.fn، ويهدف هذا المستند إلى دراسة تدفق الكود لكيفية حدوث هذه الثغرة في بيئة WebFlux والبحث عن إجراءات التخفيف المناسبة.

02. تحليل ثغرة File-Traversal في بيئة Webflux 6.13

  • 2.1 تحليل File-Traversal باستخدام Webflux 6.13

    يمكن تنفيذ هجوم File-Traversal عبر مثال يخدم الموارد الثابتة (static resource) في Spring Webflux 6.13.
    دعونا نستعرض المثال لفهم كيف يمكن أن تؤدي Spring Webflux إلى حدوث File-Traversal.

1) تدفق هجوم File-Traversal باستخدام Spring Webflux 6.13

يُظهر [الشكل 1] أن Spring WebFlux يخدم جميع الطلبات الواردة إلى /static/** من الدليل C:/file على الخادم. هنا تبدأ المشكلة في PathResourceLookupFunction.class الخاص بـ WebFlux أثناء استدعاء RouterFunctions.resources، كما في [الشكل 2] و[الشكل 3]. يقوم [الشكل 2] PathResourceLookupFunction - apply بالتحقق مما إذا كان المسار المعطى يشير إلى مورد صالح في Spring WebFlux، وإرجاع هذا المورد في شكل Mono. أثناء هذه العملية، يتم تنفيذ خطوات متعددة مثل مطابقة المسار والتحقق من الصحة وفك ترميز المسار والوصول إلى المورد، وتحدث الثغرة في دالة isInvalidPath. عند النظر إلى [الشكل 3] PathResourceLookupFunction - isInvalidPath، نجد وجود شرط StringUtils.cleanPath(path).contains("../")، وهذا الشرط لا يمكن أن يكون True عند طلب http://localhost:8080/static/file/../Windows/System32/drivers/etc/hosts. والسبب هو من [الشكل 4] StringUtils.class - cleanPath، نرى أن StringUtils.cleanPath(path) يزيل TOP_PATH("..") ويضع المسار في pathElements، ويصبح top صفرًا، وبالتالي يتم التعامل مع جملة الهجوم التي تحتوي على ".." مرة واحدة كجملة عادية. ونتيجة لذلك، تُرجع دالة isInvalidPath في [الشكل 3] القيمة false. من خلال استدعاء cleanPath في isResourceUnderLocation في [الشكل 5]، يتم إجراء تحقق آخر عبر cleanPath كما في [الشكل 6]، والمسار الذي تم تمريره في [الشكل 5] هو C:/file../Windows/System32/drivers/etc/hosts. من خلال الكود في [الشكل 7]، يصبح prefix هو C:/، ويتغير المسار إلى /Windows/System32/drivers/etc/hosts عبر [الشكل 4]، وبالتالي تكون القيمة النهائية المُرجعة C:/Windows/System32/drivers/etc/hosts.

وصف الصورة

[الشكل 1] FileApplication.java



وصف الصورة

[الشكل 2] PathResourceLookupFunction.class - apply



وصف الصورة

[الشكل 3] PathResourceLookupFunction.class - isInvalidPath


وصف الصورة

وصف الصورة

[الشكل 4] StringUtils.class - cleanPath


وصف الصورة

[الشكل 5] PathResourceLookupFunction.class - apply - 2

وصف الصورة

[الشكل 6] PathResourceLookupFunction.class - isResourceUnderLocation

وصف الصورة

[الشكل 7] StringUtils.class - cleanPath -2


2) مثال على هجوم File-Traversal باستخدام Spring Webflux 6.13

حاليًا، تم إجراء الاختبار على نظام Windows باستخدام C:/file، لكن هذه الحالة تصبح خطيرة جدًا عند عملها مع الروابط الرمزية (Symbolic Links) على Linux.
(عند تعيين ../../ مرتين يعمل المنطق الطبيعي، لكن الثغرة تحدث فقط عند استخدام ../ مرة واحدة.) 20250207_150316

2-1) مثال 2 على هجوم File-Traversal باستخدام Spring Webflux 6.13

هجوم على خادم Linux باستخدام رابط رمزي

root@kitploit:~
 public RouterFunction<ServerResponse> staticResourceRouter() {
     return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
 }

بعد إضافة الرابط الرمزي ln -s /static /app/static/link، يتم تنفيذ الهجوم 20250208_101836

03. إجراءات التخفيف

لقد استعرضنا حتى الآن تدفق تنفيذ File Traversal (CVE-2024-38819) في بيئة Spring WebFlux. ونظرًا لأن هذا الهجوم يؤدي إلى سرقة معلومات الخادم، فإن إجراءات التخفيف مهمة. لذلك، سنقترح تحديث الإصدارات الأحدث، وإنشاء منطق فحص إضافي، وطرق الحظر عبر IPS.

  • تحديث Spring Framework

    يُرجى الرجوع إلى الجدول أدناه والتحقق من الإصدار المستخدم ثم الترقية.

    وصف الصورة

  • مثال على إنشاء منطق فحص إضافي

    كما رأينا في مثال الهجوم أعلاه، فإن الحالة التي تتضمن TOP_PATH(..) مرة واحدة هي المشكلة، لذا إليك منطق فلتر مبسط (يمكن للمطورين إضافة المزيد بعد الاطلاع عليه).
    root@kitploit:~
    @Bean
    public RouterFunction<ServerResponse> staticResourceRouter() {    
      return RouterFunctions.resources("/static/**", new FileSystemResource("C:/file"))
              .filter((request, next) -> {
                  String path = request.path();
                  if (path.contains("..")) {
                     if(!StringUtils.cleanPath(path).contains("../")) {
                         return ServerResponse.status(HttpStatus.FORBIDDEN).bodyValue("Vuln path access.");
                     }        
                  }
                  return next.handle(request);
              });
    }
    
  • الحظر عبر IPS

    مثال على الهجوم: طلب يحتوي على مسار ../ في عنوان URL عبر Postman
    image حظر جميع طلبات URL التي تسبب الانتقال إلى مسار أعلى باستخدام ../
    20250210_150316

04. الخلاصة

لقد تعرفنا حتى الآن على File Traversal عبر WebFlux. هذه الثغرة ناتجة عن استخدام StringUtils.cleanPath() دون إدراك المشكلة النابعة من منطقها.

05. المراجع

(POC) https://github.com/masa42/CVE-2024-38819-POC
(الموقع الرسمي لـ Spring) https://spring.io/security/cve-2024-38819
(CVE-DETAIL) https://www.cvedetails.com/cve/CVE-2024-38819/
(NIST) https://nvd.nist.gov/vuln/detail/cve-2024-38819

تنزيل الأداة