GCP <--> Workspace Pivoting

Jifunze kuhusu kudukua AWS kutoka mwanzo hadi mtaalamu na htARTE (Mtaalamu wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Kutoka GCP kwenda GWS

Misingi ya Uteuzi wa Ulimwengu wa Kikoa

Uteuzi wa Ulimwengu wa Kikoa wa Google Workspace unaruhusu kitu cha kitambulisho, iwe ni programu ya nje kutoka Soko la Google Workspace au akaunti ya Huduma ya GCP ya ndani, kuwa na upatikanaji wa data kote kwenye Workspace kwa niaba ya watumiaji.

Hii kimsingi inamaanisha kwamba akaunti za huduma ndani ya miradi ya GCP ya shirika linaweza kuwa na uwezo wa kujifanya kuwa watumiaji wa Workspace wa shirika hilo (au hata kutoka shirika lingine).

Kwa habari zaidi kuhusu jinsi hii inavyofanya kazi angalia:

urlhttps://github.com/HackTricks-wiki/hacktricks-cloud/blob/sw/pentesting-cloud/gcp-security/gcp-to-workspace-pivoting/gcp-kuelewa-uteuzi-wa-ulimwengu-wa-kikoa.md

Kudukua uteuzi uliopo

Ikiwa mshambuliaji amefanikiwa kupata upatikanaji fulani juu ya GCP na anajua barua pepe halali ya mtumiaji wa Workspace (bora msimamizi wa juu) wa kampuni, anaweza kuorodhesha miradi yote anayo upatikanaji, kuorodhesha akaunti zote za Huduma za miradi, kuchunguza ni kwa akaunti za huduma zipi anazo upatikanaji, na kurudia hatua hizi zote kwa kila SA anayeweza kujifanya kuwa.

Kwa orodha ya akaunti zote za huduma ambazo ana upatikanaji nazo na orodha ya barua pepe za Workspace, mshambuliaji anaweza kujaribu kujifanya kuwa mtumiaji kwa kila akaunti ya huduma.

Tafadhali kumbuka kwamba wakati wa kusanidi uteuzi wa ulimwengu wa kikoa hakuna haja ya mtumiaji wa Workspace, kwa hivyo kujua mmoja halali ni wa kutosha na ni lazima kwa kujifanya kuwa. Walakini, madaraka ya mtumiaji aliyejifanya yatatumiwa, kwa hivyo ikiwa ni Msimamizi wa Juu utaweza kupata kila kitu. Ikiwa hana upatikanaji wowote hii itakuwa bure.

Skripti hii rahisi ita kuzalisha kitufe cha OAuth kama mtumiaji aliyeaminiwa ambacho unaweza kutumia kisha kupata upatikanaji wa APIs zingine za Google na au bila gcloud:

# Impersonate indicated user
python3 gen_delegation_token.py --user-email <user-email> --key-file <path-to-key-file>

# Impersonate indicated user and add additional scopes
python3 gen_delegation_token.py --user-email <user-email> --key-file <path-to-key-file> --scopes "https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/admin.directory.group, https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.domain, https://mail.google.com/, https://www.googleapis.com/auth/drive, openid"

Hii ni chombo kinachoweza kutekeleza shambulizi kwa kufuata hatua hizi:

  1. Kuorodhesha Miradi ya GCP kwa kutumia API ya Meneja wa Rasilmali.

  2. Endelea kila rasilimali ya mradi, na kuorodhesha rasilimali za Akaunti ya Huduma ya GCP ambazo mtumiaji wa IAM wa awali ana ufikiaji kwa kutumia GetIAMPolicy.

  3. Endelea kwenye kila jukumu la akaunti ya huduma, na kupata majukumu yaliyojengwa, ya msingi, na ya desturi na ruhusa ya serviceAccountKeys.create kwenye rasilimali ya akaunti ya huduma ya lengo. Ni muhimu kutambua kuwa jukumu la Mhariri linamiliki ruhusa hii kiasili.

  4. Unda ufunguo wa faragha mpya wa KEY_ALG_RSA_2048 kwa kila rasilimali ya akaunti ya huduma ambayo imepatikana na ruhusa inayofaa katika sera ya IAM.

  5. Endelea kwenye kila akaunti mpya ya huduma na unda JWT kitu kwa hiyo ambayo inajumuisha sifa za ufunguo wa faragha wa SA na wigo wa OAuth. Mchakato wa kuunda kitu cha JWT kipya utaendelea kwenye mchanganyiko wote wa sasa wa viwango vya OAuth kutoka kwenye orodha ya oauth_scopes.txt, ili kupata uwezekano wote wa kupeleka. Orodha oauth_scopes.txt inasasishwa na viwango vyote vya OAuth ambavyo tumegundua kuwa muhimu kwa kutumia utambulisho wa Workspace.

  6. Mbinu ya _make_authorization_grant_assertion inaonyesha umuhimu wa kutangaza mtumiaji wa workspace wa lengo, unaoitwa subject, kwa kuzalisha JWT chini ya DWD. Ingawa inaweza kuonekana kuwa inahitaji mtumiaji maalum, ni muhimu kuelewa kuwa DWD inaathiri kila utambulisho ndani ya kikoa. Kwa hivyo, kuunda JWT kwa mtumiaji yeyote wa kikoa kuathiri utambulisho wote katika kikoa hicho, kulingana na ukaguzi wetu wa mchanganyiko. Kwa ufupi, mtumiaji mmoja sahihi wa Workspace ni wa kutosha kuendelea mbele. Mtumiaji huyu anaweza kutajwa kwenye faili ya config.yaml ya DeleFriend. Ikiwa mtumiaji wa workspace wa lengo haujulikani tayari, chombo hicho kinasaidia kutambua moja kwa moja watumiaji sahihi wa workspace kwa kutafuta watumiaji wa kikoa wenye majukumu kwenye miradi ya GCP. Ni muhimu kutambua (tena) kuwa JWTs ni maalum kwa kikoa na sio kwa kila mtumiaji; kwa hivyo, mchakato wa moja kwa moja unalenga utambulisho mmoja wa kipekee kwa kila kikoa.

  7. Kuorodhesha na kuunda tokeni mpya ya ufikiaji wa mwavuli kwa kila JWT na kuthibitisha tokeni dhidi ya API ya tokeninfo.

Gitlab wameunda skripti hii ya Python ambayo inaweza kufanya mambo mawili - kuorodhesha saraka ya mtumiaji na kuunda akaunti mpya ya utawala wakati inaonyesha json na sifa za SA na mtumiaji wa kujifanya. Hapa ndio jinsi unavyoweza kutumia:

# Install requirements
pip install --upgrade --user oauth2client

# Validate access only
./gcp_delegation.py --keyfile ./credentials.json \
--impersonate steve.admin@target-org.com \
--domain target-org.com

# List the directory
./gcp_delegation.py --keyfile ./credentials.json \
--impersonate steve.admin@target-org.com \
--domain target-org.com \
--list

# Create a new admin account
./gcp_delegation.py --keyfile ./credentials.json \
--impersonate steve.admin@target-org.com \
--domain target-org.com \
--account pwned

Unda ujumbe mpya (Uthabiti)

Inawezekana kuangalia Uteuzi wa Upanuzi wa Kikoa katika https://admin.google.com/u/1/ac/owl/domainwidedelegation.

Mshambuliaji mwenye uwezo wa kuunda akaunti za huduma katika mradi wa GCP na mamlaka ya super admin kwa GWS anaweza kuunda ujumbe mpya kuruhusu SAs kujifanya kuwa baadhi ya watumiaji wa GWS:

  1. Kuzalisha Akaunti Mpya ya Huduma na Jozi ya Muhimu Inayolingana: Kwenye GCP, rasilimali mpya za akaunti ya huduma zinaweza kuzalishwa kwa njia ya mwingiliano kupitia kiolesura au kwa kutumia wito wa API moja kwa moja na zana za CLI. Hii inahitaji jukumu la iam.serviceAccountAdmin au jukumu lolote la desturi lenye ruhusa ya iam.serviceAccounts.create**. Mara tu akaunti ya huduma inapoundwa, tutasonga mbele kuzalisha **jozi ya muhimu inayohusiana** (**ruhusa ya iam.serviceAccountKeys.create`).

  2. Uundaji wa ujumbe mpya: Ni muhimu kuelewa kwamba jukumu la Super Admin pekee lina uwezo wa kuanzisha ujumbe wa kikoa wa ulimwengu katika Google Workspace na ujumbe wa kikoa wa ulimwengu hauwezi kuwekwa kwa njia ya programu, Unaweza tu kuunda na kurekebisha kwa mikono kupitia konsoli ya Google Workspace.

  • Uundaji wa sheria unaweza kupatikana chini ya ukurasa Mipangilio ya API → Simamia Upanuzi wa Kikoa wa Ulimwengu katika konsoli ya Usimamizi wa Google Workspace.

  1. Kuambatanisha ruhusa za OAuth scopes: Wakati wa kusanidi ujumbe mpya, Google inahitaji vigezo 2 tu, Kitambulisho cha Mteja, ambacho ni Kitambulisho cha OAuth cha Rasilimali ya Akaunti ya Huduma ya GCP na OAuth scopes ambazo hufafanua wito wa API ambao ujumbe unahitaji.

  • Orodha kamili ya OAuth scopes inaweza kupatikana hapa, lakini hapa kuna mapendekezo: https://www.googleapis.com/auth/userinfo.email, https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/admin.directory.group, https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.domain, https://mail.google.com/, https://www.googleapis.com/auth/drive, openid

  1. Kutenda kwa niaba ya kitambulisho cha lengo: Kufikia hatua hii, tuna kitu kilichoteuliwa kinachofanya kazi katika GWS. Sasa, kwa kutumia muhimu ya faragha ya Akaunti ya Huduma ya GCP, tunaweza kufanya wito wa API (katika wigo uliofafanuliwa katika parameter ya wigo wa OAuth) kuitikisa na kutenda kwa niaba ya kitambulisho chochote kilichopo katika Google Workspace. Kama tulivyojifunza, akaunti ya huduma itazalisha vivuli vya ufikiaji kulingana na mahitaji yake na kulingana na ruhusa anayo kwa maombi ya REST API.

  • Angalia sehemu iliyopita kwa baadhi ya zana za kutumia ujumbe huu.

Ujumbe wa Msalaba wa Shirika

Kitambulisho cha OAuth SA ni cha ulimwengu na kinaweza kutumika kwa ujumbe wa msalaba wa shirika. Hakuna kizuizi kilichotekelezwa kuzuia ujumbe wa msalaba wa ulimwengu. Kwa maneno rahisi, akaunti za huduma kutoka kwa mashirika tofauti ya GCP zinaweza kutumika kusanidi ujumbe wa kikoa wa ulimwengu kwenye mashirika mengine ya Workspace. Hii itasababisha kuhitaji ufikiaji wa Super Admin tu kwa Workspace, na sio ufikiaji wa akaunti sawa ya GCP, kwani adui anaweza kuunda Akaunti za Huduma na muhimu za faragha kwenye akaunti yake ya GCP inayodhibitiwa kibinafsi.

Kuunda Mradi wa kuhesabu Workspace

Kwa chaguo-msingi watumiaji wa Workspace wanayo ruhusa ya kuunda miradi mipya, na wakati mradi mpya unapoanzishwa mjenzi anapata jukumu la Mmiliki juu yake.

Hivyo basi, mtumiaji anaweza kuunda mradi, kuwezesha APIs kuhesabu Workspace katika mradi wake mpya na kujaribu kuhesabu.

Ili mtumiaji aweze kuhesabu Workspace pia anahitaji ruhusa za kutosha za Workspace (si kila mtumiaji ataweza kuhesabu saraka).

# Create project
gcloud projects create <uniq-projec-name> --name=proj-name
# Set project
gcloud config set project <uniq-projec-name>
# Enable svcs
gcloud services enable admin.googleapis.com
gcloud services enable cloudidentity.googleapis.com
# Get org ID
gcloud organizations list
# Get currents email user groups (at least you can check the groups and members of the groups you belong to)
gcloud identity groups memberships search-transitive-groups --member-email <email> --labels=cloudidentity.googleapis.com/groups.discussion_forum
gcloud identity groups memberships list --group-email=g<group-email>

# FROM HERE THE USER NEEDS TO HAVE ENOUGH WORKSPACE ACCESS
gcloud beta identity groups preview --customer <org-cust-id>

Angalia uchambuzi zaidi katika:

pageGCP - IAM, Principals & Org Policies Enum

Kutumia Gcloud

Unaweza kupata habari zaidi kuhusu mchakato wa gcloud wa kuingia katika:

pageGCP - Non-svc Persistance

Kama ilivyoelezwa hapo, gcloud inaweza kuomba wigo wa https://www.googleapis.com/auth/drive ambao ungeiruhusu mtumiaji kupata ufikivu wa diski ya mtumiaji. Kama muhalifu, ikiwa umefanikiwa kimwili kompyuta ya mtumiaji na mtumiaji bado ameingia kwenye akaunti yake unaweza kuingia kwa kutengeneza token wenye ufikivu wa diski kwa kutumia:

gcloud auth login --enable-gdrive-access

Ikiwa mshambuliaji anachukua udhibiti wa kompyuta ya mtumiaji, anaweza pia kuhariri faili google-cloud-sdk/lib/googlecloudsdk/core/config.py na kuongeza kwenye CLOUDSDK_SCOPES wigo wa 'https://www.googleapis.com/auth/drive':

Hivyo, wakati mtumiaji atakapoingia tena, atatengeneza token wenye ufikivu wa drive ambao mshambuliaji anaweza kutumia kufikia drive. Kwa dhahiri, kivinjari kitabainisha kuwa token uliotengenezwa utakuwa na ufikivu wa drive, lakini kwa kuwa mtumiaji atajiita mwenyewe gcloud auth login, huenda asishuku kitu chochote.

Kutaja faili za drive: curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://www.googleapis.com/drive/v3/files"

Kutoka GWS kwenda GCP

Kufikia watumiaji walio na mamlaka ya GCP

Ikiwa mshambuliaji ana ufikivu kamili juu ya GWS ataweza kufikia vikundi vyenye ufikivu wa GCP au hata watumiaji, hivyo kuhamia kutoka GWS kwenda GCP kawaida ni "rahisi" zaidi kwa sababu watumiaji katika GWS wana mamlaka makubwa juu ya GCP.

Kupandisha Mamlaka ya Google Groups

Kwa chaguo-msingi, watumiaji wanaweza kujiunga kwa hiari na vikundi vya Workspace vya Shirika na vikundi hivyo vinaweza kuwa na ruhusa za GCP zilizopewa (angalia vikundi vyako katika https://groups.google.com/).

Kwa kutumia google groups privesc unaweza kuweza kupanda hadi kikundi chenye aina fulani ya ufikivu wa GCP.

Marejeo

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated