Jenkins Arbitrary File Read to RCE via "Remember Me"
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
W tym wpisie na blogu można znaleźć doskonały sposób na przekształcenie podatności Local File Inclusion w Jenkins w RCE: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
To jest podsumowanie stworzone przez AI części wpisu, w której nadużywa się stworzonego arbitralnego ciasteczka, aby uzyskać RCE, nadużywając odczytu lokalnych plików, aż będę miał czas, aby stworzyć własne podsumowanie:
Wymaganie funkcji: "Zapamiętaj mnie" musi być włączone (domyślne ustawienie).
Poziomy dostępu: Atakujący potrzebuje uprawnień Ogólnych/Odczytu.
Dostęp do sekretów: Możliwość odczytu zarówno zawartości binarnej, jak i tekstowej z kluczowych plików.
Pobieranie informacji o użytkowniku
Uzyskaj konfigurację użytkownika i sekrety z $JENKINS_HOME/users/*.xml
dla każdego użytkownika, aby zebrać:
Nazwa użytkownika
Ziarno użytkownika
Znacznik czasu
Hash hasła
Ekstrakcja klucza sekretnego
Wyodrębnij klucze kryptograficzne używane do podpisywania ciasteczka:
Klucz sekretu: $JENKINS_HOME/secret.key
Klucz główny: $JENKINS_HOME/secrets/master.key
Plik klucza MAC: $JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Przygotowanie tokena
Oblicz czas wygaśnięcia tokena:
Konkatenacja danych dla tokena:
Deszyfrowanie klucza MAC
Deszyfruj plik klucza MAC:
Obliczanie podpisu
Oblicz HMAC SHA256:
Kodowanie ciasteczka
Generuj końcowe ciasteczko:
Uwierzytelnianie sesji
Pobierz tokeny CSRF i sesji:
Wykonaj żądanie do /crumbIssuer/api/json
, aby uzyskać Jenkins-Crumb
.
Przechwyć JSESSIONID
z odpowiedzi, który będzie używany w połączeniu z ciasteczkiem "zapamiętaj mnie".
Żądanie wykonania polecenia
Wyślij żądanie POST z skryptem Groovy:
Skrypt Groovy może być użyty do wykonywania poleceń na poziomie systemu lub innych operacji w środowisku Jenkins.
Przykład polecenia curl pokazuje, jak wykonać żądanie do Jenkins z niezbędnymi nagłówkami i ciasteczkami, aby bezpiecznie wykonać dowolny kod.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)