GCP Pentesting

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

Voordat jy begin met pentesting van 'n GCP-omgewing, is daar 'n paar basiese dinge wat jy moet weet oor hoe dit werk om jou te help verstaan wat jy moet doen, hoe om misconfiguraties te vind en hoe om dit uit te buit.

Konsepte soos organisasie hiërargie, toestemmings en ander basiese konsepte word verduidelik in:

pageGCP - Basic Information

Laboratoriums om te leer

GCP Pentester/Red Team Metodologie

Om 'n GCP-omgewing te oudit, is dit baie belangrik om te weet: watter diensse word gebruik, wat blootgestel word, wie het toegang tot wat, en hoe interne GCP-diensse en eksterne diensse gekoppel is.

Vanuit 'n Red Team-oogpunt is die eerste stap om 'n GCP-omgewing te kompromitteer om te slaag om sekere geldeenhede te verkry. Hier het jy 'n paar idees oor hoe om dit te doen:

  • Lekke in github (of soortgelyk) - OSINT

  • Sosiale Ingenieurswese (Kyk na die bladsy Workspace Security)

  • Wagwoord hergebruik (wagwoordlek)

  • Kwesbaarhede in GCP-gehoste Aansoeke

  • Bedienerkant Aanvraagvervalsing met toegang tot metadata-eindpunt

  • Plaaslike Lêes van Lêers

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

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

  • 3de partye gekraak

  • Interne Werknemer

Of deur 'n onbevestigde diens wat blootgestel is, te kompromitteer:

pageGCP - Unauthenticated Enum & Access

Of as jy 'n ondersoek doen, kan jy net vra vir geldeenhede met hierdie rolle:

pageGCP - Permissions for a Pentest

Nadat jy daarin geslaag het om geldeenhede te verkry, moet jy weet aan wie daardie geldeenhede behoort, en wat hulle toegang tot het, dus moet jy 'n paar basiese opname uitvoer:

Basiese Opname

SSRF

Vir meer inligting oor hoe om GCP-metadata te opneem, kyk na die volgende hacktricks-bladsy:

Wie is ek

In GCP kan jy verskeie opsies probeer om te raai wie jy is:

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

Beginsels & IAM Opsomming

Indien jy genoeg toestemmings het, die voorregte van elke entiteit binne die GCP-rekening nagaan sal jou help om te verstaan wat jy en ander identiteite kan doen en hoe om voorregte te eskaleer.

Indien jy nie genoeg toestemmings het om IAM op te som nie, kan jy hulle brute-force steel om dit uit te vind. Kyk hoe om die opsomming en brute-forcing te doen in:

pageGCP - IAM, Principals & Org Policies Enum

Nou dat jy inligting oor jou geloofsbriewe het (en as jy 'n rooi span is, hopelik het jy nie opgespoor nie). Dit is tyd om uit te vind watter dienste in die omgewing gebruik word. In die volgende afdeling kan jy 'n paar maniere vind om sekere algemene dienste op te som.

Dienste Opsomming

GCP het 'n verbysterende hoeveelheid dienste, op die volgende bladsy sal jy basiese inligting, opsomming-spiekbriefjes, hoe om opsporing te vermy, verkry volharding, en ander post-exploitation-truuks oor sommige van hulle vind:

pageGCP - Services

Let daarop dat jy nie al die werk handmatig hoef te doen nie, onderaan in hierdie pos kan jy 'n afdeling oor outomatiese gereedskap vind.

Verder, in hierdie stadium het jy dalk meer dienste ontdek wat aan ongeagte gebruikers blootgestel is, jy mag hulle kan uitbuit:

pageGCP - Unauthenticated Enum & Access

Voorregte Eskalasie, Post Exploitation & Volharding

Die mees algemene manier nadat jy 'n paar wolk-geloofsbriewe verkry het of 'n diens wat binne 'n wolk hardloop, gekompromitteer het, is om sleutelvoorregte te misbruik wat die gekompromitteerde rekening mag hê. Dus, die eerste ding wat jy moet doen is om jou voorregte op te som.

Verder, gedurende hierdie opsomming, onthou dat toestemmings op die hoogste vlak van "Organisasie" ingestel kan word.

pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - Persistence

Openlik Blootgestelde Dienste

Terwyl jy GCP-dienste opsom, mag jy sommige van hulle vind wat elemente aan die internet blootstel (VM/Containers-poorte, databasisse of tou-dienste, oomblikke of houers...). As pentester/rooi spanner moet jy altyd nagaan of jy sensitiewe inligting / kwesbaarhede daarop kan vind aangesien hulle jou dalk verdere toegang tot die AWS-rekening kan bied.

In hierdie boek behoort jy inligting te vind oor hoe om blootgestelde GCP-dienste te vind en hoe om hulle te toets. Oor hoe om kwesbaarhede in blootgestelde netwerkdienste te vind, sal ek aanbeveel om te soek vir die spesifieke diens in:

GCP <--> Workspace Pivoting

Kompromittering van beginsels in een platform mag 'n aanvaller toelaat om die ander een te kompromitteer, kyk daarna in:

pageGCP <--> Workspace Pivoting

Outomatiese Gereedskap

# 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-skrip om 'n GCP-omgewing te ontleed deur die gcloud-cli te gebruik en die resultate in 'n lêer te stoor.

  • GCP-IAM-Privilege-Escalation: Skripte om hoë IAM-voorregte te ontleed en voorregte in GCP te eskaleer deur hulle te misbruik (Ek kon nie die ontleed-skrip laat loop nie).

gcloud-configurasie & foutopsporing

# 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

Vang gcloud, gsutil... netwerk

Onthou dat jy die parameter --log-http kan gebruik met die gcloud cli om die versoeke wat die instrument uitvoer te druk. As jy nie wil hê dat die logs die tokenwaarde verberg nie, gebruik gcloud config set log_http_redact_token false

Verder, om die kommunikasie te onderskep:

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 konfigureer in gcloud

Om 'n uitgelekte diensrekening OAuth-token vanaf die metadata-eindpunt te gebruik kan jy net doen:

# 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

Verwysings

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated