Jenkins Arbitrary File Read to RCE via "Remember Me"
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
In diesem Blogbeitrag ist es möglich, einen großartigen Weg zu finden, um eine Local File Inclusion-Schwachstelle in Jenkins in RCE zu verwandeln: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
Dies ist eine von KI erstellte Zusammenfassung des Teils des Beitrags, in dem das Erstellen eines beliebigen Cookies missbraucht wird, um RCE zu erhalten, indem ein lokales Datei-Lesen ausgenutzt wird, bis ich Zeit habe, eine eigene Zusammenfassung zu erstellen:
Funktionsanforderung: "Remember me" muss aktiviert sein (Standardeinstellung).
Zugriffslevel: Angreifer benötigt Gesamt-/Lese-Berechtigungen.
Geheimer Zugriff: Fähigkeit, sowohl binäre als auch textuelle Inhalte aus wichtigen Dateien zu lesen.
Benutzerinformationsabruf
Greife auf die Benutzerkonfiguration und Geheimnisse aus $JENKINS_HOME/users/*.xml
für jeden Benutzer zu, um Folgendes zu sammeln:
Benutzername
Benutzer-Seed
Zeitstempel
Passwort-Hash
Geheimschlüssel-Extraktion
Extrahiere kryptografische Schlüssel, die zum Signieren des Cookies verwendet werden:
Geheimschlüssel: $JENKINS_HOME/secret.key
Master-Schlüssel: $JENKINS_HOME/secrets/master.key
MAC-Schlüsseldatei: $JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Token-Vorbereitung
Berechne die Token-Ablaufzeit:
Verknüpfe Daten für das Token:
MAC-Schlüsselentschlüsselung
Entschlüssele die MAC-Schlüsseldatei:
Signaturberechnung
Berechne HMAC SHA256:
Cookie-Codierung
Generiere das endgültige Cookie:
Sitzungsauthentifizierung
Abrufen von CSRF- und Sitzungstoken:
Mache eine Anfrage an /crumbIssuer/api/json
, um Jenkins-Crumb
zu erhalten.
Erfasse JSESSIONID
aus der Antwort, die zusammen mit dem "remember-me"-Cookie verwendet wird.
Befehlsausführungsanfrage
Sende eine POST-Anfrage mit Groovy-Skript:
Das Groovy-Skript kann verwendet werden, um systemweite Befehle oder andere Operationen innerhalb der Jenkins-Umgebung auszuführen.
Das bereitgestellte Beispiel für den curl-Befehl zeigt, wie man eine Anfrage an Jenkins mit den erforderlichen Headern und Cookies sendet, um beliebigen Code sicher auszuführen.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)