GCP - local privilege escalation ssh pivoting

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рд╣рдо рдорд╛рдирдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдиреЗ рдПрдХ рдЧреИрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдЦрд╛рддрд╛ рдХреЛ рдПрдХ Compute Engine рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдПрдХ VM рдореЗрдВ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рд╣реИред

рдЕрджреНрднреБрдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭреМрддрд╛ рдХрд┐рдП рдЧрдП Compute Engine рдХреЗ GPC рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдЖрдкрдХреЛ рдПрдХ рдорд╢реАрди рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИрдВред рднрд▓реЗ рд╣реА рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рдХреНрд▓рд╛рдЙрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдмрд╣реБрдд рд╕рд╣рд╛рдпрдХ рди рд╣реЛ, рдпрд╣ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрдврд╝реЗрдВ

Compute Instances рд╢рд╛рдпрдж рд╡рд╣рд╛рдБ рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдирдХреЗ рд╕реЗрд╡рд╛ рдЦрд╛рддреЛрдВ рдХреЗ рд╕рд╛рде рдХреНрд░рд┐рдпрд╛рдПрдБ рдХреА рдЬрд╛ рд╕рдХреЗрдВред

рдЪреВрдВрдХрд┐ IAM рдмрд╣реБрдд рдмрд╛рд░реАрдХ рд╣реИ, рдПрдХ рдЦрд╛рддреЗ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкрд░ рдкрдврд╝рдиреЗ/рд▓рд┐рдЦрдиреЗ рдХреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕реВрдЪреА рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдирд╣реАрдВред

рдЗрд╕рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ Compute Instance рд╣реИ рдЬрд┐рд╕реЗ instance82736-long-term-xyz-archive-0332893 рдирд╛рдордХ рдПрдХ рд╕реНрдЯреЛрд░реЗрдЬ рдмрдХреЗрдЯ рдореЗрдВ рдмреИрдХрдЕрдк рдкрдврд╝рдиреЗ/рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ gsutil ls рдЪрд▓рд╛рдиреЗ рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реМрдЯрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЗ рдкрд╛рд╕ storage.buckets.list IAM рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдкрдиреЗ gsutil ls gs://instance82736-long-term-xyz-archive-0332893 рдЪрд▓рд╛рдпрд╛, рддреЛ рдЖрдк рдПрдХ рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдмреИрдХрдЕрдк рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдкрдХреЛ рдЙрд╕ рдбреЗрдЯрд╛ рддрдХ рд╕реНрдкрд╖реНрдЯ-рдкрд╛рда рдкрд╣реБрдВрдЪ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд╕реНрдерд╛рдиреАрдп Linux рдЦрд╛рддреЗ рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИред

рдЖрдк рдЗрд╕ рдмрдХреЗрдЯ рдирд╛рдо рдХреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (bash, Python, Ruby...) рдХреЗ рдЕрдВрджрд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХрд╕реНрдЯрдо рдореЗрдЯрд╛рдбреЗрдЯрд╛

рдкреНрд░рд╢рд╛рд╕рдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдкрд░ рдХрд╕реНрдЯрдо рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрд╕ рдПрдХ рддрд░реАрдХреЗ рд╕реЗ рдордирдорд╛рдиреЗ рдХреБрдВрдЬреА/рдорд╛рди рдЬреЛрдбрд╝реЗ рдХреЛ рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЖрдорддреМрд░ рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк/рд╢рдЯрдбрд╛рдЙрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, userdata рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдЬреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╣рд░ рдмрд╛рд░ рдорд╢реАрди рд╢реБрд░реВ рдпрд╛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдПрдЧреА рдФрд░ рдЬрд┐рд╕реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕реЗ рднреА рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:

IAM рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдирд╛

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбрд┐рдлрд╝реЙрд▓реНрдЯ Compute SA рдХреЛ рджреА рдЧрдИ рд╣реИрдВ, рдХреЗрд╡рд▓ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХреНрд╕реЗрд╕ рд╕реНрдХреЛрдк SA рдХреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ cloud-platform рд╕реНрдХреЛрдк рд╕рдХреНрд╖рдо рд╣реИ рдпрд╛ рдХреЗрд╡рд▓ compute рд╕реНрдХреЛрдк рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдЖрдк рдЙрдирдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ:

рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдиреЗ рдмреЙрдХреНрд╕ рдХреЗ рдЕрдВрджрд░ gcloud рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдкрдиреА рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдЫреЛрдбрд╝ рджреА рд╣реИрдВ:

sudo find / -name "gcloud"

рдпреЗ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ:

  • ~/.config/gcloud/credentials.db

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

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

  • ~/.credentials.json

рдЕрдзрд┐рдХ 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"

рд╕рдВрджрд░реНрдн

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

Last updated