Files
hacktricks-cloud/src/pentesting-cloud/gcp-security

GCP Pentesting

{{#include ../../banners/hacktricks-training.md}}

Basiese Inligting

Voordat jy begin pentesting '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 miskonfigurasies te vind en hoe om dit te benut.

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

{{#ref}} gcp-basic-information/ {{#endref}}

Laboratoriums om te leer

GCP Pentester/Red Team Metodologie

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

Vanuit 'n Red Team perspektief, is die eerste stap om 'n GCP omgewing te kompromitteer om daarin te slaag om 'n paar akkrediteer te verkry. Hier is 'n paar idees oor hoe om dit te doen:

  • Leaks in github (of soortgelyk) - OSINT
  • Sosiale Ingenieurswese (Kyk die bladsy Workspace Security)
  • Wagwoord hergebruik (wagwoord leaks)
  • Kw vulnerabilities in GCP-gehoste toepassings
  • Server Side Request Forgery met toegang tot metadata eindpunt
  • Plaaslike Lêer Lees
  • /home/USERNAME/.config/gcloud/*
  • C:\Users\USERNAME\.config\gcloud\*
  • 3de partye gekompromitteer
  • Interne Werknemer

Of deur 'n nie-geauthentiseerde diens wat blootgestel is te kompromitteer:

{{#ref}} gcp-unauthenticated-enum-and-access/ {{#endref}}

Of as jy 'n hersiening doen, kan jy net vraag vir akkrediteer met hierdie rolle:

{{#ref}} gcp-permissions-for-a-pentest.md {{#endref}}

Note

Nadat jy daarin geslaag het om akkrediteer te verkry, moet jy weet aan wie behoort daardie akkrediteer, en waartoe hulle toegang het, so jy moet 'n paar basiese enumerasie uitvoer:

Basiese Enumerasie

SSRF

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

{{#ref}} https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html {{#endref}}

Whoami

In GCP kan jy verskeie opsies probeer om te probeer 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

Jy kan ook die API-eindpunt /userinfo gebruik om meer inligting oor die gebruiker te verkry:

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

Organisasie Enumerasie

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

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

As jy nie genoeg regte het om IAM te enumereer nie, kan jy dit steal brute-force om dit uit te vind.
Kyk hoe om die numerasie en brute-forcing te doen in:

{{#ref}} gcp-services/gcp-iam-and-org-policies-enum.md {{#endref}}

Note

Nou dat jy 'n bietjie inligting oor jou akrediteer het (en as jy 'n red team is, hoop ek jy is 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 kyk om 'n paar algemene dienste te enumereer.

Dienste Enumerasie

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

{{#ref}} gcp-services/ {{#endref}}

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

Boonop, in hierdie fase mag jy meer dienste ontdek het wat aan nie-geverifieerde gebruikers blootgestel is, jy mag in staat wees om dit te benut:

{{#ref}} gcp-unauthenticated-enum-and-access/ {{#endref}}

Voorreg Verhoging, Post Exploitatie & Volharding

Die mees algemene manier, sodra jy 'n paar wolk akrediteer of 'n paar dienste wat binne 'n wolk loop gecompromitteer het, is om misgeconfigureerde voorregte wat die gecompromitteerde rekening mag hê, te misbruik. So, die eerste ding wat jy moet doen is om jou voorregte te enumereer.

Boonop, tydens hierdie enumerasie, onthou dat regte op die hoogste vlak van "Organisasie" gestel kan word.

{{#ref}} gcp-privilege-escalation/ {{#endref}}

{{#ref}} gcp-post-exploitation/ {{#endref}}

{{#ref}} gcp-persistence/ {{#endref}}

Publiek Blootgestelde Dienste

Terwyl jy GCP dienste enumereer, mag jy sommige van hulle elemente aan die Internet blootstel (VM/Containers poorte, databasisse of wagdiens, snapshots of emmers...).
As pentester/red teamer moet jy altyd kyk of jy sensitiewe inligting / kwesbaarhede op hulle kan vind, aangesien dit jou verdere toegang tot die AWS-rekening mag bied.

In hierdie boek behoort jy inligting te vind oor hoe om blootgestelde GCP dienste te vind en hoe om dit te kontroleer. Oor hoe om kwesbaarhede in blootgestelde netwerkdienste te vind, sou ek jou aanbeveel om te soek na die spesifieke diens in:

{{#ref}} https://book.hacktricks.wiki/ {{#endref}}

GCP <--> Workspace Pivotering

Die kompromentering van beginsels in een platform mag 'n aanvaller toelaat om die ander een te kompromenteer, kyk dit in:

{{#ref}} gcp-to-workspace-pivoting/ {{#endref}}

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 evalueer met behulp van gcloud cli en die resultate in 'n lêer te stoor.
  • GCP-IAM-Privilege-Escalation: Skripte om hoë IAM-privileges te evalueer en om privileges in GCP te verhoog deur dit te misbruik (Ek kon nie die evalueer-skrip laat loop nie).
  • BF My GCP Permissions: Skrip om jou toestemmings te bruteforce.

gcloud konfigurasie & 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

Capture gcloud, gsutil... netwerk

Onthou dat jy die parameter --log-http met die gcloud cli kan gebruik om die versoeke wat die hulpmiddel uitvoer te druk. As jy nie wil hê die logs moet die token waarde redigeer nie, gebruik gcloud config set log_http_redact_token false

Boonop, 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 uitgeputte diensrekening OAuth-token van 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

{{#include ../../banners/hacktricks-training.md}}