GCP - IAM Privesc
IAM
Pata maelezo zaidi kuhusu IAM katika:
GCP - IAM, Principals & Org Policies Enumiam.roles.update
(iam.roles.get
)
iam.roles.update
(iam.roles.get
)Mshambulizi mwenye ruhusa zilizotajwa ataweza kusasisha jukumu lililokabidhiwa kwako na kukupa ruhusa za ziada kwa rasilimali zingine kama:
Unaweza kupata script ya kuunda, kutumia na kusafisha mazingira ya vuln hapa na script ya python ya kutumia haki hii hapa. Kwa maelezo zaidi angalia utafiti wa awali.
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)Mshambulizi mwenye ruhusa zilizotajwa ataweza kuomba tokeni ya ufikiaji inayohusiana na Akaunti ya Huduma, hivyo inawezekana kuomba tokeni ya ufikiaji ya Akaunti ya Huduma yenye ruhusa zaidi kuliko zetu.
Unaweza kupata script ya kuunda, kutumia na kusafisha mazingira ya hatari hapa na script ya python ya kutumia ruhusa hii hapa. Kwa maelezo zaidi angalia utafiti wa awali.
iam.serviceAccountKeys.create
iam.serviceAccountKeys.create
Mshambuliaji mwenye ruhusa zilizotajwa ataweza kuunda ufunguo unaosimamiwa na mtumiaji kwa ajili ya Service Account, ambayo itaturuhusu kufikia GCP kama hiyo Service Account.
Unaweza kupata script ya kuunda, kutumia na kusafisha mazingira ya vuln hapa na script ya python ya kutumia ruhusa hii hapa. Kwa maelezo zaidi angalia utafiti wa awali.
Kumbuka kwamba **iam.serviceAccountKeys.update haitafanya kazi kubadilisha ufunguo** wa SA kwa sababu ili kufanya hivyo ruhusa
iam.serviceAccountKeys.create` pia inahitajika.
iam.serviceAccounts.implicitDelegation
iam.serviceAccounts.implicitDelegation
Kama una ruhusa ya iam.serviceAccounts.implicitDelegation
kwenye Service Account ambayo ina ruhusa ya iam.serviceAccounts.getAccessToken
kwenye Service Account ya tatu, basi unaweza kutumia implicitDelegation kuunda token kwa hiyo Service Account ya tatu. Hapa kuna mchoro kusaidia kuelezea.
Kumbuka kwamba kulingana na hati, ugawaji wa gcloud
unafanya kazi tu kuunda token kwa kutumia generateAccessToken() method. Hivyo hapa una jinsi ya kupata token kwa kutumia API moja kwa moja:
Unaweza kupata script ya kuunda, kutumia na kusafisha mazingira ya vuln hapa na script ya python ya kutumia haki hii hapa. Kwa maelezo zaidi angalia utafiti wa awali.
iam.serviceAccounts.signBlob
iam.serviceAccounts.signBlob
Mshambulizi mwenye ruhusa zilizotajwa ataweza kusaini payloads za kiholela katika GCP. Hivyo itawezekana kuunda JWT isiyosainiwa ya SA na kisha kuituma kama blob ili kupata JWT iliyosainiwa na SA tunayolenga. Kwa maelezo zaidi soma hii.
Unaweza kupata script ya kuunda, kutumia na kusafisha mazingira ya vuln hapa na script ya python ya kutumia haki hii hapa na hapa. Kwa maelezo zaidi angalia utafiti wa awali.
iam.serviceAccounts.signJwt
iam.serviceAccounts.signJwt
Mshambulizi mwenye ruhusa zilizotajwa ataweza kusaini JSON web tokens (JWTs) zilizotengenezwa vizuri. Tofauti na njia ya awali ni kwamba badala ya kufanya google isaini blob inayojumuisha JWT, tunatumia njia ya signJWT ambayo tayari inatarajia JWT. Hii inafanya iwe rahisi kutumia lakini unaweza tu kusaini JWT badala ya bytes zozote.
Unaweza kupata script ya kuunda, kutumia na kusafisha mazingira ya vuln hapa na script ya python ya kutumia haki hii hapa. Kwa maelezo zaidi angalia utafiti wa awali.
iam.serviceAccounts.setIamPolicy
iam.serviceAccounts.setIamPolicy
Mshambulizi mwenye ruhusa zilizotajwa ataweza kuongeza sera za IAM kwa service accounts. Unaweza kuitumia kujipa ruhusa unazohitaji kuiga service account. Katika mfano ufuatao tunajipa roles/iam.serviceAccountTokenCreator
juu ya SA ya kuvutia:
Unaweza kupata script ya kuunda, kutumia na kusafisha mazingira ya udhaifu hapa.
iam.serviceAccounts.actAs
iam.serviceAccounts.actAs
Ruhusa ya iam.serviceAccounts.actAs ni kama ruhusa ya iam:PassRole kutoka AWS. Ni muhimu kwa kutekeleza majukumu, kama kuanzisha Compute Engine instance, kwani inatoa uwezo wa "actAs" Service Account, kuhakikisha usimamizi salama wa ruhusa. Bila hii, watumiaji wanaweza kupata ufikiaji usiofaa. Zaidi ya hayo, kutumia iam.serviceAccounts.actAs kunahusisha mbinu mbalimbali, kila moja ikihitaji seti ya ruhusa, tofauti na mbinu nyingine zinazohitaji ruhusa moja tu.
Kujifanya akaunti ya huduma
Kujifanya akaunti ya huduma kunaweza kuwa muhimu sana kupata ruhusa mpya na bora. Kuna njia tatu ambazo unaweza kujifanya akaunti nyingine ya huduma:
Uthibitishaji kwa kutumia funguo za kibinafsi za RSA (imeelezwa hapo juu)
Uidhinishaji kwa kutumia sera za Cloud IAM (imeelezwa hapa)
Kutekeleza kazi kwenye huduma za GCP (inayofaa zaidi kwa kuathiri akaunti ya mtumiaji)
iam.serviceAccounts.getOpenIdToken
iam.serviceAccounts.getOpenIdToken
Mshambulizi mwenye ruhusa zilizotajwa ataweza kuzalisha OpenID JWT. Hizi hutumika kuthibitisha utambulisho na hazibebi uidhinishaji wowote wa moja kwa moja dhidi ya rasilimali.
Kulingana na chapisho hili la kuvutia, ni muhimu kuonyesha hadhira (huduma unayotaka kutumia tokeni kuthibitisha) na utapokea JWT iliyosainiwa na google ikionyesha akaunti ya huduma na hadhira ya JWT.
Unaweza kuzalisha OpenIDToken (ikiwa una ufikiaji) na:
Kisha unaweza kuitumia kufikia huduma na:
Baadhi ya huduma zinazounga mkono uthibitishaji kupitia aina hii ya tokeni ni:
Google Cloud Endpoints (ikiwa unatumia Google OIDC)
Unaweza kupata mfano wa jinsi ya kuunda na OpenID token kwa niaba ya akaunti ya huduma hapa.
Marejeleo
Last updated