GCP Pentesting

Zacznij od zera i stań się ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Przed rozpoczęciem testowania penetracyjnego środowiska GCP, istnieje kilka podstawowych rzeczy, których musisz się nauczyć o jego działaniu, aby pomóc Ci zrozumieć, co musisz zrobić, jak znaleźć błędy konfiguracji i jak je wykorzystać.

Pojęcia takie jak hierarchia organizacji, uprawnienia i inne podstawowe koncepcje są wyjaśnione w:

pageGCP - Basic Information

Laboratoria do nauki

Metodologia testera penetracyjnego/Red Teamu GCP

Aby przetestować środowisko GCP, bardzo ważne jest poznanie: jakie usługi są używane, co jest eksponowane, kto ma dostęp do czego, oraz jak są połączone wewnętrzne usługi GCP i usługi zewnętrzne.

Z punktu widzenia Red Teamu, pierwszym krokiem do skompromitowania środowiska GCP jest zdobycie jakichś poświadczeń. Oto kilka pomysłów, jak to zrobić:

  • Wycieki w githubie (lub podobne) - OSINT

  • Inżynieria społeczna (Sprawdź stronę Bezpieczeństwo Workspace)

  • Ponowne użycie hasła (wycieki haseł)

  • Luki w aplikacjach hostowanych w GCP

  • Server Side Request Forgery z dostępem do punktu końcowego metadanych

  • Odczyt lokalnego pliku

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

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

  • Firmy naruszone

  • Wewnętrzny pracownik

Lub poprzez skompromitowanie nieszyfrowanej usługi wystawionej:

pageGCP - Unauthenticated Enum & Access

Lub jeśli wykonujesz przegląd, po prostu możesz poprosić o poświadczenia z tymi rolami:

pageGCP - Permissions for a Pentest

Po uzyskaniu poświadczeń, musisz wiedzieć, komu one należą, i do czego mają dostęp, dlatego musisz wykonać 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 wypróbować kilka opcji, aby spróbować 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

Wyszukiwanie 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

Zasady i Wyliczanie IAM

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 zwiększyć uprawnienia.

Jeśli nie masz wystarczających uprawnień do wyliczenia IAM, możesz je przechwycić metodą brute-force, aby je ustalić. Sprawdź, jak wykonać wyliczenie i atak brute-force w:

pageGCP - IAM, Principals & Org Policies Enum

Teraz, gdy masz pewne informacje o swoich poświadczeniach (i jeśli jesteś zespołem czerwonym, miejmy nadzieję, że nie zostałeś wykryty). Czas dowiedzieć się, które usługi są używane w środowisku. W następnym rozdziale możesz sprawdzić kilka sposobów wyliczenia niektórych powszechnych usług.

Wyliczanie Usług

GCP oferuje ogromną liczbę usług, na następnej stronie znajdziesz podstawowe informacje, oszustwa wyliczania, jak unikać wykrycia, uzyskać trwałość i inne sztuczki post-eksploatacyjne dotyczące niektórych z nich:

pageGCP - Services

Zauważ, że nie musisz wykonywać całej pracy ręcznie, poniżej w tym poście znajdziesz sekcję dotyczącą narzędzi automatycznych.

Ponadto, na tym etapie możesz odkryć więcej usług wystawionych na użytkowników bez uwierzytelnienia, możesz je wykorzystać:

pageGCP - Unauthenticated Enum & Access

Eskalacja Uprawnień, Post-Eksploatacja i Trwałość

Najczęstszym sposobem, gdy zdobędziesz pewne poświadczenia chmurowe lub skompromitujesz jakąś usługę działającą w chmurze, jest nadużywanie źle skonfigurowanych uprawnień, jakie skompromitowane konto może mieć. Dlatego pierwszą rzeczą, jaką powinieneś zrobić, jest wyliczenie swoich uprawnień.

Ponadto, podczas tego wyliczania, pamiętaj, że uprawnienia mogą być ustawione na najwyższym poziomie "Organizacji".

pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - Persistence

Usługi Publicznie Wystawione

Podczas wyliczania usług GCP możesz natrafić na niektóre z nich, które wystawiają elementy do Internetu (porty VM/Kontenerów, bazy danych lub usługi kolejek, migawki lub kubełki...). Jako pentester/zespół czerwony zawsze powinieneś sprawdzić, czy możesz znaleźć wrażliwe informacje / podatności na nich, ponieważ mogą zapewnić Ci dalszy dostęp do konta AWS.

W tej książce powinieneś znaleźć informacje na temat tego, jak znaleźć usługi GCP wystawione i jak je sprawdzić. Jeśli chodzi o znalezienie podatności w wystawionych usługach sieciowych, polecam szukać konkretnej usługi w:

Pivoting GCP <--> Workspace

Skompromitowanie podmiotów w jednej platformie może pozwolić atakującemu na skompromitowanie drugiej, sprawdź to w:

pageGCP <--> Workspace Pivoting

Narzędzia Automatyczne

# 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 wyliczenia środowiska GCP przy użyciu interfejsu wiersza poleceń gcloud i zapisania wyników do pliku.

  • GCP-IAM-Privilege-Escalation: Skrypty do wyliczenia wysokich uprawnień IAM i eskalacji uprawnień w GCP nadużywając ich (Nie udało mi się uruchomić skryptu wyliczającego).

Konfiguracja gcloud & debugowanie

# 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 sieci gcloud, gsutil...

Pamiętaj, że możesz użyć parametru --log-http z wierszem poleceń gcloud aby wydrukować żądania, które wykonuje narzędzie. Jeśli nie chcesz, aby dzienniki cenzurował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 tokenu OAuth w gcloud

Aby użyć skradzionego tokenu OAuth konta usługi z punktu końcowego metadanych, wystarczy wykonać:

# 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

Odnośniki

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated