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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
Laboratorije za učenje
- https://gcpgoat.joshuajebaraj.com/
- https://github.com/ine-labs/GCPGoat
- https://github.com/lacioffi/GCP-pentest-lab/
- https://github.com/carlospolop/gcp_privesc_scripts
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:
Whoami
U GCP-u možete probati nekoliko opcija da pokušate 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
Možete takođe koristiti API krajnju tačku /userinfo
da biste dobili više informacija o korisniku:
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
# 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:
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.
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:
GCP <--> Workspace Pivoting
Kompromitovanje principa na jednoj platformi može omogućiti napadaču da kompromituje drugu, proverite to u:
Automatic Tools
- U GCloud konzoli, na https://console.cloud.google.com/iam-admin/asset-inventory/dashboard možete videti resurse i IAM-ove koji se koriste po projektu.
- Ovde možete videti imovinu koju podržava ovaj API: https://cloud.google.com/asset-inventory/docs/supported-asset-types
- Proverite alate koji se mogu koristiti u nekoliko cloud-ova ovde.
- gcp_scanner: Ovo je GCP skener resursa koji može pomoći da se utvrdi koji nivo pristupa određeni kredencijali poseduju na GCP.
# 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
# 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:
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:
# 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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.