GCP - local privilege escalation ssh pivoting

Support HackTricks

katika hali hii tunaenda kudhani kwamba umeshawishi akaunti isiyo na mamlaka ndani ya VM katika mradi wa Compute Engine.

Kwa kushangaza, ruhusa za GPC za injini ya kompyuta uliyoshawishi zinaweza kusaidia kuinua mamlaka ndani ya mashine. Hata kama hiyo haitakuwa na msaada mkubwa katika mazingira ya wingu, ni vizuri kujua inawezekana.

Read the scripts

Compute Instances huenda zipo ili kutekeleza baadhi ya scripts kufanya vitendo na akaunti zao za huduma.

Kama IAM inavyokuwa ya kina, akaunti inaweza kuwa na ruhusa za kusoma/kandika juu ya rasilimali lakini hakuna ruhusa za orodha.

Mfano mzuri wa nadharia hii ni Compute Instance ambayo ina ruhusa ya kusoma/kandika nakala za akiba kwenye kikasha cha uhifadhi kinachoitwa instance82736-long-term-xyz-archive-0332893.

Kukimbia gsutil ls kutoka kwenye mstari wa amri hakurudishi chochote, kwani akaunti ya huduma haina ruhusa ya storage.buckets.list ya IAM. Hata hivyo, ikiwa ungeendesha gsutil ls gs://instance82736-long-term-xyz-archive-0332893 unaweza kupata nakala kamili ya mfumo wa faili, ikikupa ufikiaji wa wazi wa data ambayo akaunti yako ya ndani ya Linux haina.

Unaweza kuwa na uwezo wa kupata jina la kikasha hiki ndani ya script (katika bash, Python, Ruby...).

Custom Metadata

Wasimamizi wanaweza kuongeza custom metadata katika kifaa na ngazi ya mradi. Hii ni njia rahisi ya kupitisha funguo/makundi yasiyo na mpangilio ndani ya kifaa, na hutumiwa mara nyingi kwa mabadiliko ya mazingira na scripts za kuanzisha/kuzima.

Zaidi ya hayo, inawezekana kuongeza userdata, ambayo ni script ambayo itatekelezwa kila wakati mashine inapoanzishwa au kuanzishwa tena na ambayo inaweza kupatikana kutoka kwa mwisho wa metadata pia.

Kwa maelezo zaidi angalia:

Abusing IAM permissions

Mengi ya ruhusa zilizopendekezwa hapa chini zinatolewa kwa SA ya kawaida ya Compute, tatizo pekee ni kwamba ufikiaji wa kawaida unazuia SA kuitumia. Hata hivyo, ikiwa cloud-platform scope imewezeshwa au tu compute scope imewezeshwa, utaweza kuitumia vibaya.

Angalia ruhusa zifuatazo:

Search for Keys in the filesystem

Angalia ikiwa watumiaji wengine wameingia kwenye gcloud ndani ya sanduku na kuacha akidi zao katika mfumo wa faili:

sudo find / -name "gcloud"

Hizi ndizo faili za kuvutia zaidi:

  • ~/.config/gcloud/credentials.db

  • ~/.config/gcloud/legacy_credentials/[ACCOUNT]/adc.json

  • ~/.config/gcloud/legacy_credentials/[ACCOUNT]/.boto

  • ~/.credentials.json

Zaidi ya API Keys regexes

TARGET_DIR="/path/to/whatever"

# Service account keys
grep -Pzr "(?s){[^{}]*?service_account[^{}]*?private_key.*?}" \
"$TARGET_DIR"

# Legacy GCP creds
grep -Pzr "(?s){[^{}]*?client_id[^{}]*?client_secret.*?}" \
"$TARGET_DIR"

# Google API keys
grep -Pr "AIza[a-zA-Z0-9\\-_]{35}" \
"$TARGET_DIR"

# Google OAuth tokens
grep -Pr "ya29\.[a-zA-Z0-9_-]{100,200}" \
"$TARGET_DIR"

# Generic SSH keys
grep -Pzr "(?s)-----BEGIN[ A-Z]*?PRIVATE KEY[a-zA-Z0-9/\+=\n-]*?END[ A-Z]*?PRIVATE KEY-----" \
"$TARGET_DIR"

# Signed storage URLs
grep -Pir "storage.googleapis.com.*?Goog-Signature=[a-f0-9]+" \
"$TARGET_DIR"

# Signed policy documents in HTML
grep -Pzr '(?s)<form action.*?googleapis.com.*?name="signature" value=".*?">' \
"$TARGET_DIR"

References

Support HackTricks

Last updated