GCP Pentesting
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Podstawowe informacje
Zanim rozpoczniesz pentesting środowiska GCP, istnieje kilka podstawowych rzeczy, które musisz wiedzieć o tym, jak to działa, aby pomóc Ci zrozumieć, co musisz zrobić, jak znaleźć błędne konfiguracje i jak je wykorzystać.
Koncepcje takie jak hierarchia organizacji, uprawnienia i inne podstawowe pojęcia są wyjaśnione w:
Laboratoria do nauki
- https://gcpgoat.joshuajebaraj.com/
- https://github.com/ine-labs/GCPGoat
- https://github.com/lacioffi/GCP-pentest-lab/
- https://github.com/carlospolop/gcp_privesc_scripts
Metodologia Pentestera/Red Team w GCP
Aby audytować środowisko GCP, bardzo ważne jest, aby wiedzieć: które usługi są używane, co jest eksponowane, kto ma dostęp do czego i jak wewnętrzne usługi GCP są połączone z zewnętrznymi usługami.
Z punktu widzenia Red Team, pierwszym krokiem do skompromitowania środowiska GCP jest zdobycie jakichś poświadczeń. Oto kilka pomysłów, jak to zrobić:
- Wycieki w githubie (lub podobnych) - OSINT
- Inżynieria społeczna (sprawdź stronę Bezpieczeństwo Workspace)
- Ponowne użycie haseł (wycieki haseł)
- Luki w aplikacjach hostowanych w GCP
- Server Side Request Forgery z dostępem do punktu końcowego metadanych
- Odczyt lokalnych plików
/home/USERNAME/.config/gcloud/*C:\Users\USERNAME\.config\gcloud\*- Złamane przez osoby trzecie
- Wewnętrzny pracownik
Lub poprzez skomprymowanie niezautoryzowanej usługi:
GCP - Unauthenticated Enum & Access
Lub jeśli robisz przegląd, możesz po prostu poprosić o poświadczenia z tymi rolami:
GCP - Permissions for a Pentest
Note
Po zdobyciu poświadczeń musisz wiedzieć do kogo należą te poświadczenia i do czego mają dostęp, więc musisz przeprowadzić podstawową enumerację:
Podstawowa enumeracja
SSRF
Aby uzyskać więcej informacji na temat enumeracji metadanych GCP, sprawdź następującą stronę hacktricks:
Whoami
W GCP możesz spróbować kilku opcji, aby zgadnąć, kim jesteś:
#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żesz również użyć punktu końcowego API /userinfo, aby uzyskać więcej informacji o użytkowniku:
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
Enumeracja organizacji
# 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
Jeśli masz wystarczające uprawnienia, sprawdzenie uprawnień każdej jednostki w koncie GCP pomoże Ci zrozumieć, co Ty i inne tożsamości możecie zrobić oraz jak eskalować uprawnienia.
Jeśli nie masz wystarczających uprawnień do enumeracji IAM, możesz ukraść je za pomocą brute-force, aby je ustalić.
Sprawdź jak przeprowadzić enumerację i brute-forcing w:
GCP - IAM, Principals & Org Policies Enum
Note
Teraz, gdy masz pewne informacje o swoich poświadczeniach (i jeśli jesteś w red team, miejmy nadzieję, że nie zostałeś wykryty). Czas ustalić, które usługi są używane w środowisku.
W następnej sekcji możesz sprawdzić kilka sposobów na enumerację niektórych powszechnych usług.
Services Enumeration
GCP ma zdumiewającą ilość usług, na następnej stronie znajdziesz podstawowe informacje, cheat sheety do enumeracji, jak unikać wykrycia, uzyskać persistence oraz inne triki po eksploatacji dotyczące niektórych z nich:
Zauważ, że nie musisz wykonywać całej pracy ręcznie, poniżej w tym poście znajdziesz sekcję o automatycznych narzędziach.
Co więcej, na tym etapie możesz odkryć więcej usług wystawionych dla nieautoryzowanych użytkowników, które możesz wykorzystać:
GCP - Unauthenticated Enum & Access
Privilege Escalation, Post Exploitation & Persistence
Najczęstszym sposobem, gdy uzyskasz jakieś poświadczenia chmurowe lub skompromitujesz jakąś usługę działającą w chmurze, jest wykorzystanie źle skonfigurowanych uprawnień, które może mieć skompromitowane konto. Dlatego pierwszą rzeczą, którą powinieneś zrobić, jest enumeracja swoich uprawnień.
Co więcej, podczas tej enumeracji pamiętaj, że uprawnienia mogą być ustawione na najwyższym poziomie “Organizacji”.
Publicly Exposed Services
Podczas enumeracji usług GCP mogłeś znaleźć niektóre z nich wystawiające elementy do Internetu (porty VM/Kontenerów, bazy danych lub usługi kolejkowe, migawki lub kosze…).
Jako pentester/red teamer zawsze powinieneś sprawdzić, czy możesz znaleźć wrażliwe informacje / luki w nich, ponieważ mogą one zapewnić Ci dalszy dostęp do konta AWS.
W tej książce powinieneś znaleźć informacje o tym, jak znaleźć wystawione usługi GCP i jak je sprawdzić. Jeśli chodzi o to, jak znaleźć luki w wystawionych usługach sieciowych, polecam wyszukać konkretną usługę w:
GCP <–> Workspace Pivoting
Kompromitacja jednostek w jednej platformie może pozwolić atakującemu na kompromitację drugiej, sprawdź to w:
Automatic Tools
- W konsoli GCloud, w https://console.cloud.google.com/iam-admin/asset-inventory/dashboard możesz zobaczyć zasoby i IAM-y używane przez projekt.
- Tutaj możesz zobaczyć zasoby wspierane przez to API: https://cloud.google.com/asset-inventory/docs/supported-asset-types
- Sprawdź narzędzia, które mogą być używane w kilku chmurach tutaj.
- gcp_scanner: To jest skaner zasobów GCP, który może pomóc określić, jaki poziom dostępu posiadają określone poświadczenia w 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: Skrypt Bash do enumeracji środowiska GCP za pomocą gcloud cli i zapisywania wyników w pliku.
- GCP-IAM-Privilege-Escalation: Skrypty do enumeracji wysokich uprawnień IAM i eskalacji uprawnień w GCP poprzez ich nadużycie (nie mogłem uruchomić skryptu enumerującego).
- BF My GCP Permissions: Skrypt do brutalnego łamania twoich uprawnień.
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
Przechwytywanie gcloud, gsutil… sieci
Pamiętaj, że możesz użyć parametru --log-http z gcloud cli, aby wydrukować żądania, które narzędzie wykonuje. Jeśli nie chcesz, aby logi redagowały wartość tokena, użyj gcloud config set log_http_redact_token false
Ponadto, aby przechwycić komunikację:
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
Konfiguracja tokena OAuth w gcloud
Aby użyć wyekstrahowanego tokena OAuth konta usługi z punktu końcowego metadanych, wystarczy:
# 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
Odniesienia
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

