GCP - IAM Privesc

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

Njia nyingine za kusaidia HackTricks:

IAM

Pata habari zaidi kuhusu IAM katika:

pageGCP - IAM, Principals & Org Policies Enum

iam.roles.update (iam.roles.get)

Mshambuliaji mwenye ruhusa zilizotajwa ataweza kusasisha jukumu lililopewa wewe na kukupa ruhusa za ziada kwa rasilimali zingine kama:

gcloud iam roles update <rol name> --project <project> --add-permissions <permission>

Unaweza kupata script ya kiotomatiki ya kuunda, kutumia, na kusafisha mazingira ya udhaifu hapa na script ya python ya kutumia haki hii hapa. Kwa maelezo zaidi angalia utafiti wa awali.

iam.serviceAccounts.getAccessToken (iam.serviceAccounts.get)

Mshambuliaji mwenye ruhusa zilizotajwa ataweza kuomba tokeni ya ufikiaji inayomilikiwa na Akaunti ya Huduma, hivyo niwezekana kuomba tokeni ya ufikiaji wa Akaunti ya Huduma yenye ruhusa zaidi kuliko yetu.

Unaweza kupata script ya kiotomatiki ya kuunda, kutumia, na kusafisha mazingira ya udhaifu hapa na script ya python ya kutumia haki hii hapa. Kwa maelezo zaidi angalia utafiti wa awali.

iam.serviceAccountKeys.create

Mshambuliaji mwenye ruhusa zilizotajwa ataweza kuunda funguo inayosimamiwa na mtumiaji kwa Akaunti ya Huduma, ambayo itaturuhusu kupata GCP kama Akaunti hiyo ya Huduma.

gcloud iam service-accounts keys create --iam-account <name> /tmp/key.json

gcloud auth activate-service-account --key-file=sa_cred.json

Unaweza kupata script ya kiotomatiki ya kuunda, kutumia na kusafisha mazingira ya udhaifu hapa na script ya python ya kutumia uwezo huu hapa. Kwa maelezo zaidi angalia utafiti wa awali.

Tafadhali kumbuka kwamba iam.serviceAccountKeys.update haitafanya kazi kurekebisha funguo ya SA kwa sababu ili kufanya hivyo, idhini ya iam.serviceAccountKeys.create inahitajika pia.

iam.serviceAccounts.implicitDelegation

Ikiwa una idhini ya iam.serviceAccounts.implicitDelegation kwenye Akaunti ya Huduma ambayo ina idhini ya iam.serviceAccounts.getAccessToken kwenye Akaunti ya Huduma ya tatu, basi unaweza kutumia implicitDelegation kwa kuunda token kwa Akaunti ya Huduma ya tatu. Hapa kuna mchoro wa kusaidia kueleza.

Unaweza kupata script ya kiotomatiki ya kuunda, kutumia na kusafisha mazingira ya udhaifu hapa na script ya python ya kutumia uwezo huu hapa. Kwa maelezo zaidi angalia utafiti wa awali.

Tafadhali kumbuka kwamba kulingana na nyaraka, upelekaji hufanya kazi tu kuzalisha token kwa kutumia generateAccessToken() njia.

iam.serviceAccounts.signBlob

Mshambuliaji mwenye idhini zilizotajwa ataweza kutilia saini maudhui ya kubahatisha kwenye GCP. Kwa hivyo itakuwa inawezekana kuunda JWT isiyosaini ya SA na kisha kuituma kama blob ili kupata JWT iliyosainiwa na SA tunayolenga. Kwa maelezo zaidi soma hii.

Unaweza kupata script ya kiotomatiki ya kuunda, kutumia na kusafisha mazingira ya udhaifu hapa na script ya python ya kutumia uwezo huu hapa na hapa. Kwa maelezo zaidi angalia utafiti wa awali.

iam.serviceAccounts.signJwt

Mshambuliaji mwenye idhini zilizotajwa ataweza kutilia saini JWT zenye muundo mzuri (JWTs). Tofauti na njia iliyopita ni kwamba badala ya kufanya google isaini blob inayohusisha JWT, tunatumia njia ya signJWT ambayo tayari inatarajia JWT. Hii inafanya iwe rahisi kutumia lakini unaweza kusaini JWT badala ya herufi yoyote.

Unaweza kupata script ya kiotomatiki ya kuunda, kutumia na kusafisha mazingira ya udhaifu hapa na script ya python ya kutumia uwezo huu hapa. Kwa maelezo zaidi angalia utafiti wa awali.

iam.serviceAccounts.setIamPolicy

Mshambuliaji mwenye idhini zilizotajwa ataweza kuongeza sera za IAM kwa akaunti za huduma. Unaweza kutumia hii kwa kujipatia idhini unazohitaji kujifanya kuwa akaunti ya huduma. Katika mfano ufuatao tunajipatia jukumu la roles/iam.serviceAccountTokenCreator juu ya SA inayovutia:

gcloud iam service-accounts add-iam-policy-binding "${VICTIM_SA}@${PROJECT_ID}.iam.gserviceaccount.com" \
--member="user:username@domain.com" \
--role="roles/iam.serviceAccountTokenCreator"

Unaweza kupata script ya kiotomatiki kuunda, kutumia, na kusafisha mazingira ya udhaifu hapa.

iam.serviceAccounts.actAs

Ruhusa ya iam.serviceAccounts.actAs ni kama ruhusa ya iam:PassRole kutoka AWS. Ni muhimu kwa kutekeleza kazi, kama kuanzisha kifaa cha Compute Engine, kwani inatoa uwezo wa "kutenda kama" Akaunti ya Huduma, ikisimamia ruhusa salama. Bila hii, watumiaji wanaweza kupata ufikivu usiofaa. Aidha, kutumia iam.serviceAccounts.actAs kunahusisha njia mbalimbali, kila moja ikihitaji seti ya ruhusa, tofauti na njia nyingine ambazo zinahitaji moja tu.

Uigaji wa akaunti ya huduma

Kuiga akaunti ya huduma inaweza kuwa na manufaa sana kwa kupata mamlaka mpya na bora. Kuna njia tatu ambazo unaweza kuiga akaunti nyingine ya huduma:

  • Uthibitisho kwa kutumia funguo za siri za RSA (zilizojadiliwa hapo juu)

  • Idhini kwa kutumia sera za Cloud IAM (zilizojadiliwa hapa)

  • Kutekeleza kazi kwenye huduma za GCP (inayofaa zaidi kwa kudhoofisha akaunti ya mtumiaji)

iam.serviceAccounts.getOpenIdToken

Mshambuliaji mwenye ruhusa zilizotajwa ataweza kuzalisha OpenID JWT. Hizi hutumiwa kuthibitisha utambulisho na hazina lazima kubeba idhini ya dhahiri dhidi ya rasilimali.

Kulingana na chapisho hili la kuvutia, ni muhimu kuonyesha hadhira (huduma ambapo unataka kutumia tokeni kuthibitisha) na utapokea JWT iliyosainiwa na google ikionyesha akaunti ya huduma na hadhira ya JWT.

Unaweza kuzalisha OpenIDToken (ikiwa una ufikivu) na:

# 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

Kisha unaweza kutumia hiyo kufikia huduma na:

curl -v -H "Authorization: Bearer id_token" https://some-cloud-run-uc.a.run.app

Baadhi ya huduma zinazounga mkono uthibitisho kupitia aina hii ya vitufe ni:

Unaweza kupata mfano wa jinsi ya kuunda na kutumia kibali cha OpenID kwa niaba ya akaunti ya huduma hapa.

Marejeo

Jifunze kuhusu udukuzi wa AWS kutoka mwanzo hadi kuwa shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated