GCP Pentesting

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije

Pre početka pentesting-a GCP okruženja, postoji nekoliko osnovnih stvari koje treba da znate o tome kako funkcioniše kako biste razumeli šta treba da uradite, kako da pronađete neispravne konfiguracije i kako da ih iskoristite.

Koncepti poput organizacione hijerarhije, dozvola i drugi osnovni koncepti su objašnjeni u:

pageGCP - Basic Information

Laboratorije za učenje

Metodologija GCP Pentestera/Red Tima

Da biste pregledali GCP okruženje, veoma je važno znati: koje servise koristite, šta je izloženo, ko ima pristup čemu, i kako su interni GCP servisi i spoljni servisi povezani.

Sa stanovišta Red Tima, prvi korak ka kompromitovanju GCP okruženja je uspeti da dobijete neke akreditive. Evo nekih ideja kako to možete postići:

  • Leak-ovi na github-u (ili slično) - OSINT

  • Socijalno inženjerstvo (Proverite stranicu Workspace Security)

  • Ponovna upotreba lozinki (leak-ovi lozinki)

  • Ranjivosti u GCP-hostovanim aplikacijama

  • Server Side Request Forgery sa pristupom metadata endpoint-u

  • Čitanje lokalnih fajlova

  • /home/USERNAME/.config/gcloud/*

  • C:\Users\USERNAME\.config\gcloud\*

    1. lica hakovana

  • Interni zaposleni

Ili kompromitovanjem neautentifikovanog servisa koji je izložen:

pageGCP - Unauthenticated Enum & Access

Ili ako radite pregled možete jednostavno zatražiti akreditive sa ovim ulogama:

pageGCP - Permissions for a Pentest

Kada uspete da dobijete akreditive, potrebno je da znate kome ti akreditivi pripadaju, i na šta imaju pristup, tako da morate izvršiti osnovnu enumeraciju:

Osnovna Enumeracija

SSRF

Za više informacija o tome kako enumerisati GCP metapodatke proverite sledeću HackTricks stranicu:

Whoami

U GCP-u možete isprobati nekoliko opcija kako biste pokušali da pogodite ko ste:

#If you are inside a compromise machine
gcloud auth list
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=$(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/tokeninfo
gcloud auth print-identity-token #Get info from the token

#If you compromised a metadata token or somehow found an OAuth token
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=<token>" https://www.googleapis.com/oauth2/v1/tokeninfo

Enumeracija organizacije

# Get organizations
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud resource-manager folders list --organization <org_number> # Get folders
gcloud projects list # Get projects

Principali i IAM Enumeracija

Ako imate dovoljno dozvola, proveravanje privilegija svakog entiteta unutar GCP naloga pomoći će vam da razumete šta vi i ostali identiteti možete raditi i kako povećati privilegije.

Ako nemate dovoljno dozvola da biste enumerisali IAM, možete ih bruteforce-ovati da biste ih otkrili. Proverite kako izvršiti enumeraciju i bruteforcing u:

pageGCP - IAM, Principals & Org Policies Enum

Sada kada imate neke informacije o svojim akreditivima (i ako ste crveni tim, nadamo se da niste otkriveni). Vreme je da saznate koje usluge se koriste u okruženju. U sledećem odeljku možete proveriti neke načine za enumeraciju nekih zajedničkih usluga.

Enumeracija Usluga

GCP ima ogroman broj usluga, na sledećoj stranici pronaći ćete osnovne informacije, enumeraciju šema, kako izbeći otkrivanje, dobiti upornost, i druge post-eksploatacione trikove o nekima od njih:

pageGCP - Services

Imajte na umu da ne morate obavljati sav posao ručno, ispod u ovom postu možete pronaći odeljak o automatskim alatima.

Osim toga, u ovom stadijumu možda ste otkrili više usluga izloženih neautentifikovanim korisnicima, možda ćete moći da ih iskoristite:

pageGCP - Unauthenticated Enum & Access

Povećanje Privilegija, Post Eksploatacija i Upornost

Najčešći način kada jednom dobijete neke cloud akreditive ili ste kompromitovali neku uslugu koja se izvršava unutar oblaka je da zloupotrebite loše konfigurisane privilegije koje kompromitovani nalog može imati. Dakle, prva stvar koju treba da uradite je da enumerišete svoje privilegije.

Osim toga, tokom ove enumeracije, zapamtite da se dozvole mogu postaviti na najvišem nivou "Organizacije" takođe.

pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - Persistence

Javno Izložene Usluge

Dok enumerišete GCP usluge, možda ste pronašli neke od njih izlažu elemente na Internetu (VM/Container portove, baze podataka ili usluge redova, snimke ili kofere...). Kao pentester/crveni tim, uvek biste trebali proveriti da li možete pronaći osetljive informacije / ranjivosti na njima jer bi vam mogle omogućiti dalji pristup u AWS nalog.

U ovoj knjizi trebali biste pronaći informacije o tome kako pronaći izložene GCP usluge i kako ih proveriti. O tome kako pronaći ranjivosti u izloženim mrežnim uslugama preporučio bih vam da tražite specifičnu uslugu na:

GCP <--> Workspace Pivoting

Kompromitovanje principala u jednoj platformi može omogućiti napadaču da kompromituje drugu, proverite to u:

pageGCP <--> Workspace Pivoting

Automatski Alati

# Install
git clone https://github.com/google/gcp_scanner.git
cd gcp_scanner
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
# Execute with gcloud creds
python3 __main__.py -o /tmp/output/ -g "$HOME/.config/gcloud"
  • gcp_enum: Skripta u Bash-u za enumeraciju GCP okruženja korišćenjem gcloud cli i čuvanje rezultata u fajlu.

  • GCP-IAM-Privilege-Escalation: Skripte za enumeraciju visokih IAM privilegija i eskalaciju privilegija u GCP zloupotrebom istih (nisam uspeo da pokrenem skriptu za enumeraciju).

gcloud konfiguracija & debugiranje

# Login so gcloud can use your credentials
gcloud auth login
gcloud config set project security-devbox
gcloud auth print-access-token

# Login so SDKs can use your user credentials
gcloud auth application-default login
gcloud auth application-default set-quota-project security-devbox
gcloud auth application-default print-access-token

# Update gcloud
gcloud components update

Snimanje mreže gcloud, gsutil...

Zapamtite da možete koristiti parametar --log-http sa gcloud cli-jem da biste štampali zahteve koje alat vrši. Ako ne želite da se logovi cenzurišu vrednost tokena, koristite gcloud config set log_http_redact_token false

Osim toga, da biste presreli komunikaciju:

gcloud config set proxy/address 127.0.0.1
gcloud config set proxy/port 8080
gcloud config set proxy/type http
gcloud config set auth/disable_ssl_validation True

# If you don't want to completely disable ssl_validation use:
gcloud config set core/custom_ca_certs_file cert.pem

# Back to normal
gcloud config unset proxy/address
gcloud config unset proxy/port
gcloud config unset proxy/type
gcloud config unset auth/disable_ssl_validation
gcloud config unset core/custom_ca_certs_file

Konfigurišite OAuth token u gcloud-u

Da biste koristili ukradeni OAuth token servisnog naloga sa metapodacima, jednostavno možete uraditi sledeće:

# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
gcloud projects list

# Via setup
echo "<token>" > /some/path/to/token
gcloud config set auth/access_token_file /some/path/to/token
gcloud projects list
gcloud config unset auth/access_token_file

Reference

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Last updated