GCP - IAM Privesc
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)
Pronađite više informacija o IAM-u u:
GCP - IAM, Principals & Org Policies Enumiam.roles.update
(iam.roles.get
)Napadač sa pomenutim dozvolama će moći da ažurira ulogu dodeljenu vama i da vam dodeli dodatne dozvole za druge resurse kao što su:
Možete pronaći skriptu za automatizaciju kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde i python skriptu za zloupotrebu ovog privilegija ovde. Za više informacija pogledajte originalno istraživanje.
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)Napadač sa pomenutim dozvolama će moći da zatraži pristupni token koji pripada Servisnom Nalog, tako da je moguće zatražiti pristupni token Servisnog Naloga sa više privilegija nego što su naše.
Možete pronaći skriptu za automatizaciju kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde i python skriptu za zloupotrebu ove privilegije ovde. Za više informacija proverite originalno istraživanje.
iam.serviceAccountKeys.create
Napadač sa pomenutim dozvolama moći će da kreira ključ koji upravlja korisnikom za Service Account, što će nam omogućiti pristup GCP-u kao taj Service Account.
Možete pronaći skriptu za automatizaciju kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde i python skriptu za zloupotrebu ove privilegije ovde. Za više informacija pogledajte originalno istraživanje.
Napomena: iam.serviceAccountKeys.update
neće raditi za modifikaciju ključa SA jer su za to potrebne i dozvole iam.serviceAccountKeys.create
.
iam.serviceAccounts.implicitDelegation
Ako imate iam.serviceAccounts.implicitDelegation
dozvolu na Servisnom Nalog koji ima iam.serviceAccounts.getAccessToken
dozvolu na trećem Servisnom Nalog, tada možete koristiti implicitDelegation da kreirate token za taj treći Servisni Nalog. Evo dijagrama koji pomaže u objašnjenju.
Napomena: prema dokumentaciji, delegacija gcloud
funkcioniše samo za generisanje tokena koristeći generateAccessToken() metodu. Tako da ovde imate kako da dobijete token koristeći API direktno:
Možete pronaći skriptu za automatizaciju kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde i python skriptu za zloupotrebu ovog privilegija ovde. Za više informacija pogledajte originalno istraživanje.
iam.serviceAccounts.signBlob
Napadač sa pomenutim dozvolama će moći da potpiše proizvoljne terete u GCP. Tako će biti moguće napraviti nepodpisani JWT SA i zatim ga poslati kao blob da bi dobili JWT potpisan od SA koji ciljate. Za više informacija pročitajte ovo.
Možete pronaći skriptu za automatizaciju kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde i python skriptu za zloupotrebu ovog privilegija ovde i ovde. Za više informacija pogledajte originalno istraživanje.
iam.serviceAccounts.signJwt
Napadač sa pomenutim dozvolama će moći da potpiše dobro oblikovane JSON web tokene (JWT-ove). Razlika u odnosu na prethodnu metodu je u tome što umesto da nateramo Google da potpiše blob koji sadrži JWT, koristimo metodu signJWT koja već očekuje JWT. Ovo olakšava korišćenje, ali možete potpisivati samo JWT umesto bilo kojih bajtova.
Možete pronaći skriptu za automatizaciju kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde i python skriptu za zloupotrebu ovog privilegija ovde. Za više informacija pogledajte originalno istraživanje.
iam.serviceAccounts.setIamPolicy
Napadač sa pomenutim dozvolama će moći da doda IAM politike servisnim nalozima. Možete to zloupotrebiti da dodelite sebi dozvole koje su vam potrebne da biste se pretvarali da ste servisni nalog. U sledećem primeru dodeljujemo sebi ulogu roles/iam.serviceAccountTokenCreator
nad interesantnim SA:
Možete pronaći skriptu za automatizaciju kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde.
iam.serviceAccounts.actAs
iam.serviceAccounts.actAs dozvola je poput iam:PassRole dozvole iz AWS-a. Ključna je za izvršavanje zadataka, kao što je pokretanje Compute Engine instance, jer omogućava sposobnost "delovanja kao" servisni nalog, osiguravajući bezbedno upravljanje dozvolama. Bez ovoga, korisnici bi mogli dobiti neprimeren pristup. Pored toga, eksploatacija iam.serviceAccounts.actAs uključuje različite metode, od kojih svaka zahteva skup dozvola, za razliku od drugih metoda koje zahtevaju samo jednu.
Impersonacija servisnog naloga može biti veoma korisna za dobijanje novih i boljih privilegija. Postoje tri načina na koja možete impersonirati drugi servisni nalog:
Autentifikacija koristeći RSA privatne ključeve (pokazano iznad)
Autorizacija koristeći Cloud IAM politike (pokazano ovde)
Implementacija poslova na GCP uslugama (više primenljivo na kompromitaciju korisničkog naloga)
iam.serviceAccounts.getOpenIdToken
Napadač sa pomenutim dozvolama moći će da generiše OpenID JWT. Ovi se koriste za potvrdu identiteta i ne nose nužno nikakvu implicitnu autorizaciju prema resursu.
Prema ovom zanimljivom postu, potrebno je naznačiti publiku (uslugu gde želite da koristite token za autentifikaciju) i dobićete JWT potpisan od strane google-a koji ukazuje na servisni nalog i publiku JWT-a.
Možete generisati OpenIDToken (ako imate pristup) sa:
Тада можете једноставно да га користите за приступ услузи са:
Neke usluge koje podržavaju autentifikaciju putem ovakvih tokena su:
Google Cloud Endpoints (ako koristite Google OIDC)
Možete pronaći primer kako da kreirate OpenID token u ime servisnog naloga ovde.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)