GCP - IAM, Principals & Org Policies Enum

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Akaunti za Huduma

Kwa maelezo kuhusu ni nini akaunti ya huduma angalia:

pageGCP - Basic Information

Uchambuzi

Akaunti ya huduma daima inahusishwa na mradi:

gcloud iam service-accounts list --project <project>

Watumiaji & Vikundi

Kwa maelezo kuhusu jinsi Watumiaji & Vikundi wanavyofanya kazi katika GCP angalia:

pageGCP - Basic Information

Uchambuzi

Kwa ruhusa serviceusage.services.enable na serviceusage.services.use inawezekana kuwezesha huduma katika mradi na kuzitumia.

Tafadhali kumbuka kuwa kwa chaguo-msingi, watumiaji wa Workspace wanapewa jukumu la Mwanzilishi wa Mradi, kuwapa ufikiaji wa kuunda miradi mipya. Mtu anapounda mradi, anapewa jukumu la mmiliki juu yake. Hivyo, anaweza kuwezesha huduma hizi kwenye mradi ili aweze kuchambua Workspace.

Hata hivyo, kumbuka kuwa ni muhimu pia kuwa na ruhusa za kutosha katika Workspace ili uweze kuita APIs hizi.

Ikiwa unaweza kuwezesha huduma ya admin na ikiwa mtumiaji wako ana ruhusa za kutosha katika workspace, unaweza kuchambua vikundi & watumiaji wote kwa mistari ifuatayo. Hata kama inasema vikundi vya utambulisho, pia inarudisha watumiaji bila vikundi vyovyote:

# 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

Katika mifano iliyopita param --labels inahitajika, kwa hivyo thamani ya kawaida hutumiwa (haipaswi kutumiwa ikiwa unatumia API moja kwa moja kama PurplePanda anavyofanya hapa.

Hata na huduma ya admin ikiwa imewezeshwa, inawezekana upate kosa unapopiga hesabu kwani mtumiaji wa nafasi yako iliyovamiwa hana idhini za kutosha:

IAM

Angalia hii kwa habari za msingi kuhusu IAM.

Idhini za Kimsingi

Kutoka kwa nyaraka: Wakati rasilimali ya shirika inapoanzishwa, watumiaji wote katika kikoa chako wanapewa majukumu ya Mjenzi wa Akaunti ya Bili na Mjenzi wa Mradi kwa chaguo-msingi. Majukumu haya ya msingi huruhusu watumiaji wako kuanza kutumia Google Cloud mara moja, lakini sio kwa matumizi ya kawaida ya rasilimali ya shirika lako.

Majukumu haya hutoa idhini:

  • billing.accounts.create na resourcemanager.organizations.get

  • resourcemanager.organizations.get na resourcemanager.projects.create

Zaidi ya hayo, wakati mtumiaji anaunda mradi, yeye hupewa moja kwa moja mmiliki wa mradi huo kulingana na nyaraka. Kwa hivyo, kwa chaguo-msingi, mtumiaji ataweza kuunda mradi na kuendesha huduma yoyote kwenye mradi huo (wachimbaji? Uainishaji wa Nafasi ya Kazi? ...)

Idhini ya juu kabisa katika Shirika la GCP ni jukumu la Msimamizi wa Shirika.

set-iam-policy vs add-iam-policy-binding

Katika huduma nyingi utaweza kubadilisha idhini juu ya rasilimali kwa kutumia njia ya add-iam-policy-binding au set-iam-policy. Tofauti kuu ni kwamba add-iam-policy-binding huongeza kifungo kipya cha jukumu kwenye sera ya IAM iliyopo wakati set-iam-policy ita futa idhini zilizotolewa hapo awali na weka tu zile zilizotajwa katika amri.

Uainishaji

# 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>

Uchambuzi wa IAM wa Mali za Cloud

Kuna njia tofauti za kuangalia ruhusa zote za mtumiaji kwenye rasilimali tofauti (kama vile mashirika, folda, miradi...) kwa kutumia huduma hii.

  • Ruhusa cloudasset.assets.searchAllIamPolicies inaweza kuomba ruhusa zote za iam ndani ya rasilimali.

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
  • Uhalali cloudasset.assets.analyzeIamPolicy unaweza kuomba sera zote za iam za msingi ndani ya rasilimali.

# 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'
  • Kibali cloudasset.assets.searchAllResources inaruhusu orodha ya rasilimali zote za shirika, folda, au mradi. Vyanzo vinavyohusiana na IAM (kama vile majukumu) vimejumuishwa.

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
  • Uwezo wa cloudasset.assets.analyzeMove unaweza kuwa na manufaa pia katika kupata sera zinazoathiri rasilimali kama mradi

gcloud asset analyze-move --project=<proj-name> \
--destination-organization=609216679593
  • Ninafikiri ruhusa cloudasset.assets.queryIamPolicy inaweza pia kutoa ufikiaji wa kupata ruhusa za wakuu

# 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

Uchambuzi wa ruhusa za IamPermissions

Ikiwa hauwezi kupata habari za IAM kwa kutumia njia za awali na uko kwenye Timu Nyekundu. Unaweza kutumia zana https://github.com/carlospolop/bf_my_gcp_perms kufanya nguvu ya kutumia ruhusa zako za sasa.

Hata hivyo, kumbuka kuwa huduma ya cloudresourcemanager.googleapis.com inahitaji kuwezeshwa.

Privesc

Kwenye ukurasa ufuatao unaweza kuangalia jinsi ya kutumia ruhusa za IAM kuboresha mamlaka:

pageGCP - IAM Privesc

Uchambuzi Bila Kuthibitishwa

pageGCP - IAM, Principals & Org Unauthenticated Enum

Baada ya Kuvamia

pageGCP - IAM Post Exploitation

Uthabiti

Ikiwa una mamlaka makubwa unaweza:

  • Unda akaunti mpya za SAs (au watumiaji ikiwa ni kwenye Workspace)

  • Toa ruhusa zaidi kwa mabwana wanaodhibitiwa na wewe

  • Toa mamlaka zaidi kwa SAs zenye udhaifu (SSRF kwenye vm, Cloud Function yenye udhaifu...)

  • ...

Sera za Shirika

Kwa maelezo kuhusu ni nini Sera za Shirika angalia:

pageGCP - Basic Information

Sera za IAM zinaonyesha ruhusa ambazo mabwana wanazo juu ya rasilimali kupitia majukumu, ambayo hupewa ruhusa za kugawanywa kwa undani. Sera za Shirika zinaruhusu jinsi huduma hizo zinaweza kutumika au ni vipengele vipi vilivyozimwa. Hii husaidia kuboresha ruhusa ndogo ya kila rasilimali katika mazingira ya GCP.

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

Kwenye ukurasa ufuatao unaweza kuangalia jinsi ya kutumia ruhusa za sera za shirika kukuza mamlaka:

pageGCP - Orgpolicy Privesc

Last updated