GCP Pentesting

Reading time: 9 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Osnovne informacije

Pre nego što započnete pentesting GCP okruženja, postoji nekoliko osnovnih stvari koje treba da znate o tome kako funkcioniše da bi vam pomogle da razumete šta treba da radite, kako da pronađete pogrešne konfiguracije i kako da ih iskoristite.

Koncepti kao što su organizacija hijerarhija, dozvole i drugi osnovni koncepti su objašnjeni u:

GCP - Basic Information

Laboratorije za učenje

GCP Pentester/Red Team metodologija

Da biste auditovali GCP okruženje, veoma je važno znati: koje usluge se koriste, šta je izloženo, ko ima pristup čemu, i kako su interne GCP usluge povezane sa spoljnim uslugama.

Sa stanovišta Red Teama, prvi korak za kompromitovanje GCP okruženja je da uspete da dobijete neke akreditive. Ovde imate nekoliko ideja kako to učiniti:

  • Izdavanje na github-u (ili sličnom) - OSINT
  • Društveno inženjerstvo (Pogledajte stranicu Workspace Security)
  • Ponovna upotreba lozinki (curenje lozinki)
  • Ranljivosti 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\*
  • 3rd parties provaljeni
  • Interni zaposleni

Ili kompromitovanjem neautentifikovane usluge koja je izložena:

GCP - Unauthenticated Enum & Access

Ili ako radite reviziju, mogli biste jednostavno da tražite akreditive sa ovim rolama:

GCP - Permissions for a Pentest

note

Nakon što ste uspeli da dobijete akreditive, treba da znate čijim akreditivima pripadaju, i čemu imaju pristup, tako da treba da izvršite neku osnovnu enumeraciju:

Osnovna enumeracija

SSRF

Za više informacija o tome kako da enumerišete GCP metadata pogledajte sledeću hacktricks stranicu:

Cloud SSRF - HackTricks

Whoami

U GCP-u možete probati nekoliko opcija da pokušate da pogodite ko ste:

bash
#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

Možete takođe koristiti API krajnju tačku /userinfo da biste dobili više informacija o korisniku:

bash
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth $(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/userinfo

curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth <access_token>" https://www.googleapis.com/oauth2/v1/userinfo

Org Enumeration

bash
# 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

Principals & IAM Enumeration

Ako imate dovoljno dozvola, proveravanje privilegija svake entiteta unutar GCP naloga će vam pomoći da razumete šta vi i druge identitete možete da radite i kako da povećate privilegije.

Ako nemate dovoljno dozvola da enumerišete IAM, možete ukrasti brute-force da ih otkrijete.
Proverite kako da uradite numeraciju i brute-forcing u:

GCP - IAM, Principals & Org Policies Enum

note

Sada kada imate neke informacije o vašim kredencijalima (i ako ste red tim, nadamo se da niste otkriveni). Vreme je da otkrijete koje se usluge koriste u okruženju.
U sledećem odeljku možete proveriti neke načine da enumerišete neke uobičajene usluge.

Services Enumeration

GCP ima neverovatan broj usluga, na sledećoj stranici ćete pronaći osnovne informacije, cheat sheet-ove za enumeraciju, kako da izbegnete otkrivanje, dobijete persistence, i druge post-exploitation trikove o nekima od njih:

GCP - Services

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

Štaviše, u ovoj fazi možda ste otkrili više usluga izloženih neautentifikovanim korisnicima, možda ćete moći da ih iskoristite:

GCP - Unauthenticated Enum & Access

Privilege Escalation, Post Exploitation & Persistence

Najčešći način kada ste dobili neke cloud kredencijale ili kompromitovali neku uslugu koja radi unutar clouda je da zloupotrebite pogrešno konfigurisane privilegije koje kompromitovani nalog može imati. Dakle, prva stvar koju treba da uradite je da enumerišete svoje privilegije.

Štaviše, tokom ove enumeracije, zapamtite da dozvole mogu biti postavljene na najvišem nivou "Organizacije" takođe.

GCP - Privilege Escalation

GCP - Post Exploitation

GCP - Persistence

Publicly Exposed Services

Dok enumerišete GCP usluge, možda ste pronašli neke od njih koje izlažu elemente internetu (VM/Containers portove, baze podataka ili usluge reda, snimke ili kante...).
Kao pentester/red tim, uvek biste trebali proveriti da li možete pronaći osetljive informacije / ranjivosti na njima jer bi vam mogle pružiti dalji pristup AWS nalogu.

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čujem vam da pretražujete specifičnu uslugu u:

HackTricks - HackTricks

GCP <--> Workspace Pivoting

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

GCP <--> Workspace Pivoting

Automatic Tools

bash
# 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: Bash skripta za enumeraciju GCP okruženja koristeći gcloud cli i čuvanje rezultata u datoteci.
  • GCP-IAM-Privilege-Escalation: Skripte za enumeraciju visokih IAM privilegija i za eskalaciju privilegija u GCP zloupotrebom istih (nisam mogao da pokrenem skriptu za enumeraciju).
  • BF My GCP Permissions: Skripta za bruteforce vaših dozvola.

gcloud config & debug

bash
# 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

Capture gcloud, gsutil... network

Zapamtite da možete koristiti parameter --log-http sa gcloud cli da ispišete zahteve koje alat izvršava. Ako ne želite da logovi redigiraju vrednost tokena, koristite gcloud config set log_http_redact_token false

Pored toga, da biste presreli komunikaciju:

bash
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

OAuth token configure in gcloud

Da biste koristili exfiltrirani OAuth token servisnog naloga sa metadata endpoint-a možete jednostavno uraditi:

bash
# 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

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks