GCP - IAM, Principals & Org Policies Enum
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Diensrekening
Vir ’n inleiding oor wat ’n diensrekening is, kyk:
Enumerasie
’n Diensrekening behoort altyd aan ’n projek:
gcloud iam service-accounts list --project <project>
Gebruikers & Groepe
Vir ’n inleiding oor hoe Gebruikers & Groepe in GCP werk, kyk:
Enumerasie
Met die toestemmings serviceusage.services.enable en serviceusage.services.use is dit moontlik om dienste in ’n projek te aktiveer en dit te gebruik.
Caution
Let daarop dat Workspace-gebruikers standaard die rol Project Creator toegeken kry, wat hulle toegang gee om nuwe projekte te skep. Wanneer ’n gebruiker ’n projek skep, word hy die
ownerrol oor dit toegeken. So, hy kan hierdie dienste oor die projek aktiveer om in staat te wees om Workspace te enumerate.Dit is egter ook nodig om voldoende toestemmings in Workspace te hê om hierdie API’s aan te roep.
As jy die admin diens kan aktiveer en as jou gebruiker voldoende voorregte in workspace het, kan jy alle groepe & gebruikers met die volgende lyne enumerate.
Selfs al sê dit identity groups, keer dit ook gebruikers sonder enige groepe terug:
# Enable admin
gcloud services enable admin.googleapis.com
gcloud services enable cloudidentity.googleapis.com
# Using admin.googleapis.com
## List all users
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud beta identity groups preview --customer <workspace-id>
# Using cloudidentity.googleapis.com
## List groups of a user (you can list at least the groups you belong to)
gcloud identity groups memberships search-transitive-groups --member-email <email> --labels=cloudidentity.googleapis.com/groups.discussion_forum
## List Group Members (you can list at least the groups you belong to)
gcloud identity groups memberships list --group-email=<email>
### Make it transitive
gcloud identity groups memberships search-transitive-memberships --group-email=<email>
## Get a graph (if you have enough permissions)
gcloud identity groups memberships get-membership-graph --member-email=<email> --labels=cloudidentity.googleapis.com/groups.discussion_forum
Tip
In die vorige voorbeelde is die parameter
--labelsvereis, so ’n generiese waarde word gebruik (dit is nie vereis as jy die API direk gebruik nie soos PurplePanda hier doen.
Selfs met die admin diens geaktiveer, is dit moontlik dat jy ’n fout kry wanneer jy hulle opnoem omdat jou gecompromitteerde werkruimte gebruiker nie genoeg toestemming het nie:
.png)
IAM
Kyk na hierdie vir basiese inligting oor IAM.
Standaard Toestemmings
Van die dokumentasie: Wanneer ’n organisasie hulpbron geskep word, word alle gebruikers in jou domein standaard die Billing Account Creator en Project Creator rolle toegeken. Hierdie standaard rolle stel jou gebruikers in staat om Google Cloud onmiddellik te begin gebruik, maar is nie bedoel vir gebruik in die gewone werking van jou organisasie hulpbron nie.
Hierdie rolle gee die toestemmings:
billing.accounts.createenresourcemanager.organizations.getresourcemanager.organizations.getenresourcemanager.projects.create
Boonop, wanneer ’n gebruiker ’n projek skep, word hy automaties die eienaar van daardie projek toegeken volgens die dokumentasie. Daarom, standaard, sal ’n gebruiker in staat wees om ’n projek te skep en enige diens daarop te laat loop (miners? Werkruimte opnoeming? …)
Caution
Die hoogste voorreg in ’n GCP Organisasie is die Organisasie Administrateur rol.
set-iam-policy vs add-iam-policy-binding
In die meeste van die dienste sal jy in staat wees om die toestemmings oor ’n hulpbron te verander deur die metode add-iam-policy-binding of set-iam-policy te gebruik. Die hoof verskil is dat add-iam-policy-binding ’n nuwe rol binding byvoeg tot die bestaande IAM beleid terwyl set-iam-policy die voorheen toegeken toestemmings sal verwyder en slegs diegene wat in die opdrag aangedui is, sal stel.
Opname
# Roles
## List roles
gcloud iam roles list --project $PROJECT_ID # List only custom roles
gcloud iam roles list --filter='etag:AA=='
## Get perms and description of role
gcloud iam roles describe roles/container.admin
gcloud iam roles describe --project <proj-name> <role-name>
# Policies
gcloud organizations get-iam-policy <org_id>
gcloud resource-manager folders get-iam-policy <folder-id>
gcloud projects get-iam-policy <project-id>
# MISC
## Testable permissions in resource
gcloud iam list-testable-permissions --filter "NOT apiDisabled: true" <resource>
## Grantable roles to a resource
gcloud iam list-grantable-roles <project URL>
cloudasset IAM Enumerasie
Daar is verskillende maniere om al die toestemmings van ’n gebruiker in verskillende hulpbronne (soos organisasies, vouers, projekte…) te kontroleer met behulp van hierdie diens.
- Die toestemming
cloudasset.assets.searchAllIamPolicieskan alle iam beleide binne ’n hulpbron aanvra.
gcloud asset search-all-iam-policies #By default uses current configured project
gcloud asset search-all-iam-policies --scope folders/1234567
gcloud asset search-all-iam-policies --scope organizations/123456
gcloud asset search-all-iam-policies --scope projects/project-id-123123
- Die toestemming
cloudasset.assets.analyzeIamPolicykan alle iam-beleide van ’n prinsiep binne ’n hulpbron versoek.
# Needs perm "cloudasset.assets.analyzeIamPolicy" over the asset
gcloud asset analyze-iam-policy --organization=<org-id> \
--identity='user:email@hacktricks.xyz'
gcloud asset analyze-iam-policy --folder=<folder-id> \
--identity='user:email@hacktricks.xyz'
gcloud asset analyze-iam-policy --project=<project-name> \
--identity='user:email@hacktricks.xyz'
- Die toestemming
cloudasset.assets.searchAllResourcesstel in staat om alle hulpbronne van ’n organisasie, gids of projek op te lys. IAM-verwante hulpbronne (soos rolle) ingesluit.
gcloud asset search-all-resources --scope projects/<proj-name>
gcloud asset search-all-resources --scope folders/1234567
gcloud asset search-all-resources --scope organizations/123456
- Die toestemming
cloudasset.assets.analyzeMovekan nuttig wees om ook beleide te verkry wat ’n hulpbron soos ’n projek beïnvloed.
gcloud asset analyze-move --project=<proj-name> \
--destination-organization=609216679593
- Ek neem aan die toestemming
cloudasset.assets.queryIamPolicykan ook toegang gee om toestemmings van principals te vind.
# But, when running something like this
gcloud asset query --project=<proj> --statement='SELECT * FROM compute_googleapis_com_Instance'
# I get the error
ERROR: (gcloud.asset.query) UNAUTHENTICATED: QueryAssets API is only supported for SCC premium customers. See https://cloud.google.com/security-command-center/pricing
testIamPermissions enumerasie
Caution
As jy nie toegang tot IAM-inligting kan verkry nie met die vorige metodes en jy is in ’n Red Team. Jy kan die hulpmiddel https://github.com/carlospolop/bf_my_gcp_perms gebruik om jou huidige toestemmings te brute-force.
Let egter daarop dat die diens
cloudresourcemanager.googleapis.comgeaktiveer moet wees.
Privesc
Op die volgende bladsy kan jy kyk hoe om IAM-toestemmings te misbruik om voorregte te verhoog:
Ongeauthentiseerde Enum
GCP - IAM, Principals & Org Unauthenticated Enum
Post Exploitatie
Volharding
As jy hoë voorregte het, kan jy:
- Nuwe SA’s (of gebruikers as in Workspace) skep
- Principals wat deur jouself beheer word meer toestemmings gee
- Meer voorregte aan kwesbare SA’s gee (SSRF in vm, kwesbare Cloud Function…)
- …
Organisasiebeleide
Vir ’n inleiding oor wat Organisasiebeleide is, kyk:
Die IAM-beleide dui die toestemmings aan wat principals oor hulpbronne het via rolle, wat granular toestemmings toegeken word. Organisasiebeleide beperk hoe daardie dienste gebruik kan word of watter funksies gedeaktiveer is. Dit help om die minste voorregte van elke hulpbron in die GCP-omgewing te verbeter.
gcloud resource-manager org-policies list --organization=ORGANIZATION_ID
gcloud resource-manager org-policies list --folder=FOLDER_ID
gcloud resource-manager org-policies list --project=PROJECT_ID
Privesc
In die volgende bladsy kan jy kyk hoe om org beleidstoestemmings te misbruik om voorregte te verhoog:
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

