
CVE-2021-21234 Spring Boot डायरेक्टरी ट्रैवर्सल
spring-boot-actuator-logview एक लाइब्रेरी में स्प्रिंग बूट एक्चुएटर एंडपॉइंट के रूप में एक सरल लॉग फ़ाइल व्यूअर जोड़ता है। यह मावेन पैकेज “eu.hinsch:spring-boot-actuator-logview” है। spring-boot-actuator-logview के 0.2.13 संस्करण से पहले डायरेक्टरी ट्रैवर्सल भेद्यता मौजूद है। इस लाइब्रेरी का सार लॉग फ़ाइल निर्देशिका को admin (स्प्रिंग बूट एक्चुएटर) HTTP एंडपॉइंट के माध्यम से सार्वजनिक करना है। देखी जाने वाली फ़ाइल का नाम और आधार फ़ोल्डर (लॉग फ़ोल्डर रूट के सापेक्ष) दोनों को अनुरोध पैरामीटर द्वारा निर्दिष्ट किया जा सकता है। हालाँकि फ़ाइल नाम पैरामीटर को डायरेक्टरी ट्रैवर्सल हमलों को रोकने के लिए जाँचा जाता है (इसलिए 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=../../../../../../../../../../" # Windows
- "{{BaseURL}}/log/view?filename=/windows/win.ini&base=../../../../../../../../../../" # windows
- "{{BaseURL}}/manage/log/view?filename=/etc/passwd&base=../../../../../../../../../../" # linux
- "{{BaseURL}}/log/view?filename=/etc/passwd&base=../../../../../../../../../../" # linux