GCP Pentesting

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Grundlegende Informationen

Bevor Sie mit dem Pentesting einer GCP-Umgebung beginnen, gibt es einige Grundlagen, die Sie kennen müssen, wie es funktioniert, um Ihnen zu helfen zu verstehen, was Sie tun müssen, wie Sie Misskonfigurationen finden und wie Sie sie ausnutzen können.

Konzepte wie Organisationshierarchie, Berechtigungen und andere grundlegende Konzepte werden erklärt in:

pageGCP - Basic Information

Lernlabore

GCP Pentester/Red Team Methodik

Um eine GCP-Umgebung zu überprüfen, ist es sehr wichtig zu wissen: welche Dienste verwendet werden, was offengelegt wird, wer auf was Zugriff hat und wie interne GCP-Dienste mit externen Diensten verbunden sind.

Aus der Sicht eines Red Teams ist der erste Schritt zur Kompromittierung einer GCP-Umgebung, einige Anmeldeinformationen zu erhalten. Hier sind einige Ideen, wie Sie das erreichen können:

  • Lecks in GitHub (oder ähnlich) - OSINT

  • Social Engineering (Überprüfen Sie die Seite Workspace Security)

  • Passwort-Wiederverwendung (Passwortlecks)

  • Schwachstellen in GCP-gehosteten Anwendungen

  • Serverseitige Anforderungsfälschung mit Zugriff auf Metadaten-Endpunkt

  • Lokales Dateilesen

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

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

    1. Parteien gehackt

  • Interne Mitarbeiter

Oder durch Kompromittierung eines unauthentifizierten Dienstes, der freigegeben ist:

pageGCP - Unauthenticated Enum & Access

Oder wenn Sie eine Überprüfung durchführen, könnten Sie einfach um Anmeldeinformationen mit diesen Rollen bitten:

pageGCP - Permissions for a Pentest

Nachdem Sie es geschafft haben, Anmeldeinformationen zu erhalten, müssen Sie wissen, wem diese Anmeldeinformationen gehören, und auf was sie Zugriff haben, daher müssen Sie eine grundlegende Aufzählung durchführen:

Grundlegende Aufzählung

SSRF

Für weitere Informationen darüber, wie Sie GCP-Metadaten aufzählen, überprüfen Sie die folgende Hacktricks-Seite:

Whoami

In GCP können Sie verschiedene Optionen ausprobieren, um herauszufinden, wer Sie sind:

#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

Org Enumeration

Organisationen auflisten

# 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

Prinzipien & IAM-Aufzählung

Wenn Sie über ausreichende Berechtigungen verfügen, wird Ihnen das Überprüfen der Berechtigungen jeder Entität im GCP-Konto helfen zu verstehen, was Sie und andere Identitäten tun können und wie Sie Berechtigungen eskalieren können.

Wenn Sie nicht über ausreichende Berechtigungen zum Aufzählen von IAM verfügen, können Sie versuchen, sie bruteforce zu stehlen, um sie herauszufinden. Überprüfen Sie, wie die Aufzählung und das Brute-Forcing durchgeführt werden in:

pageGCP - IAM, Principals & Org Policies Enum

Nun, da Sie einige Informationen zu Ihren Anmeldeinformationen haben (und wenn Sie ein Red-Team sind, hoffentlich nicht entdeckt wurden). Es ist an der Zeit herauszufinden, welche Dienste in der Umgebung verwendet werden. Im folgenden Abschnitt können Sie einige Möglichkeiten zur Aufzählung einiger gängiger Dienste überprüfen.

Dienste Aufzählung

GCP verfügt über eine erstaunliche Anzahl von Diensten, auf der folgenden Seite finden Sie Grundinformationen, Aufzählungs- Spickzettel, wie man Entdeckung vermeidet, Persistenz erlangt und andere Post-Exploitation-Tricks zu einigen von ihnen:

pageGCP - Services

Beachten Sie, dass Sie nicht alle Arbeiten manuell durchführen müssen, weiter unten in diesem Beitrag finden Sie einen Abschnitt über automatische Tools.

Darüber hinaus haben Sie in diesem Stadium möglicherweise mehr Dienste entdeckt, die unauthentifizierten Benutzern ausgesetzt sind, die Sie möglicherweise ausnutzen können:

pageGCP - Unauthenticated Enum & Access

Berechtigungseskalation, Post-Exploitation & Persistenz

Der häufigste Weg, sobald Sie einige Cloud-Anmeldeinformationen erhalten haben oder einen Dienst kompromittiert haben, der in einer Cloud ausgeführt wird, besteht darin, falsch konfigurierte Berechtigungen des kompromittierten Kontos zu missbrauchen. Daher sollten Sie zuerst Ihre Berechtigungen aufzählen.

Während dieser Aufzählung sollten Sie sich daran erinnern, dass Berechtigungen auch auf der höchsten Ebene der "Organisation" festgelegt werden können.

pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - Persistence

Öffentlich zugängliche Dienste

Beim Aufzählen von GCP-Diensten haben Sie möglicherweise festgestellt, dass einige von ihnen Elemente ins Internet exponieren (VM/Container-Ports, Datenbanken oder Warteschlangendienste, Snapshots oder Buckets...). Als Pentester/Red Teamer sollten Sie immer überprüfen, ob Sie sensible Informationen/Schwachstellen darauf finden können, da sie Ihnen möglicherweise weiteren Zugriff auf das AWS-Konto ermöglichen könnten.

In diesem Buch sollten Sie Informationen darüber finden, wie Sie exponierte GCP-Dienste finden und überprüfen können. Wie Sie Schwachstellen in exponierten Netzwerkdiensten finden, empfehle ich Ihnen, nach dem spezifischen Dienst unter folgendem Link zu suchen:

GCP <--> Workspace Pivoting

Das Kompromittieren von Prinzipalen in einer Plattform könnte einem Angreifer ermöglichen, die andere zu kompromittieren, überprüfen Sie dies unter:

pageGCP <--> Workspace Pivoting

Automatische Tools

# 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-Skript zur Auflistung einer GCP-Umgebung unter Verwendung von gcloud cli und Speicherung der Ergebnisse in einer Datei.

  • GCP-IAM-Privilege-Escalation: Skripte zur Auflistung hoher IAM-Berechtigungen und zum Eskalieren von Berechtigungen in GCP durch deren Missbrauch (Ich konnte das Auflistungsskript nicht ausführen).

gcloud Konfiguration & Debugging

# 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

Erfassen von gcloud, gsutil... Netzwerk

Denken Sie daran, dass Sie den Parameter --log-http mit der gcloud-Befehlszeile verwenden können, um die Anfragen anzuzeigen, die das Tool ausführt. Wenn Sie nicht möchten, dass die Protokolle den Tokenwert schwärzen, verwenden Sie gcloud config set log_http_redact_token false

Darüber hinaus, um die Kommunikation abzufangen:

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

Um einen extrahierten Dienstkonten-OAuth-Token vom Metadaten-Endpunkt zu verwenden, können Sie einfach Folgendes tun:

# 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

Referenzen

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated