Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat

This commit is contained in:
Translator
2025-11-15 11:48:05 +00:00
parent 8eca07c195
commit b482d5ad2a
2 changed files with 39 additions and 9 deletions

View File

@@ -1,4 +1,4 @@
# GCP - Privilégios Genéricos Privesc
# GCP - Privesc de Permissões Genéricas
{{#include ../../../banners/hacktricks-training.md}}
@@ -6,20 +6,27 @@
### \*.setIamPolicy
Se você possui um usuário que tem a permissão **`setIamPolicy`** em um recurso, você pode **escalar privilégios nesse recurso** porque poderá alterar a política IAM desse recurso e lhe dar mais privilégios sobre ele.\
Essa permissão também pode permitir **escalar para outros principais** se o recurso permitir a execução de código e o iam.ServiceAccounts.actAs não for necessário.
Se você possui um usuário que tem a **`setIamPolicy`** permission em um recurso você pode **escalar privilégios nesse recurso** porque você poderá alterar a política IAM desse recurso e conceder a si mesmo mais privilégios sobre ele.\
Essa permissão também pode permitir **escalar para outros principals** se o recurso permitir executar código e o `iam.ServiceAccounts.actAs` não for necessário.
- _cloudfunctions.functions.setIamPolicy_
- Modifique a política de uma Cloud Function para permitir que você a invoque.
- Modify the policy of a Cloud Function to allow yourself to invoke it.
Existem dezenas de tipos de recursos com esse tipo de permissão, você pode encontrar todos eles em [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) pesquisando por setIamPolicy.
Existem dezenas de tipos de recursos com esse tipo de permissão; você pode encontrá-los todos em [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) procurando por setIamPolicy.
### \*.create, \*.update
Essas permissões podem ser muito úteis para tentar escalar privilégios em recursos **criando um novo ou atualizando um novo**. Esse tipo de permissão é especialmente útil se você também tiver a permissão **iam.serviceAccounts.actAs** sobre uma Conta de Serviço e o recurso que você tem .create/.update pode anexar uma conta de serviço.
Essas permissões podem ser muito úteis para tentar escalar privilégios em recursos ao **criar um novo** ou **atualizar um existente**. Esse tipo de permissão é especialmente útil se você também tiver a permissão **iam.serviceAccounts.actAs** sobre um Service Account e o recurso sobre o qual você tem .create/.update puder anexar um Service Account.
### \*ServiceAccount\*
Essa permissão geralmente permitirá que você **acesse ou modifique uma Conta de Serviço em algum recurso** (por exemplo: compute.instances.setServiceAccount). Isso **pode levar a um vetor de escalonamento de privilégios**, mas dependerá de cada caso.
Essa permissão geralmente permitirá que você **acesse ou modifique um Service Account em algum recurso** (e.g.: compute.instances.setServiceAccount). Isso **poderia levar a um vetor de escalada de privilégios**, mas dependerá de cada caso.
### iam.ServiceAccounts.actAs
Essa permissão permite que você anexe um Service Account a um recurso que o suporte (e.g.: Compute Engine VM, Cloud Function, Cloud Run, etc).\
Se você conseguir anexar um Service Account que tenha mais privilégios do que seu usuário a um recurso que possa executar código, você poderá escalar seus privilégios executando código com esse Service Account.
Procure no Cloud Hacktricks por `iam.ServiceAccounts.actAs` para encontrar vários exemplos de como escalar privilégios com essa permissão.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -6,7 +6,7 @@
### `orgpolicy.policy.set`
Um atacante aproveitando **orgpolicy.policy.set** pode manipular políticas organizacionais, o que lhe permitirá remover certas restrições que impedem operações específicas. Por exemplo, a restrição **appengine.disableCodeDownload** geralmente bloqueia o download do código-fonte do App Engine. No entanto, ao usar **orgpolicy.policy.set**, um atacante pode desativar essa restrição, obtendo assim acesso para baixar o código-fonte, apesar de inicialmente estar protegido.
Um atacante que explora **orgpolicy.policy.set** pode manipular políticas organizacionais, o que lhe permitirá remover certas restrições que impedem operações específicas. Por exemplo, a restrição **appengine.disableCodeDownload** normalmente bloqueia o download do código-fonte do App Engine. No entanto, usando **orgpolicy.policy.set**, um atacante pode desativar essa restrição, obtendo assim acesso para baixar o código-fonte, apesar de ele inicialmente estar protegido.
```bash
# Get info
gcloud resource-manager org-policies describe <org-policy> [--folder <id> | --organization <id> | --project <id>]
@@ -14,8 +14,31 @@ gcloud resource-manager org-policies describe <org-policy> [--folder <id> | --or
# Disable
gcloud resource-manager org-policies disable-enforce <org-policy> [--folder <id> | --organization <id> | --project <id>]
```
Um script em python para este método pode ser encontrado [aqui](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/orgpolicy.policy.set.py).
Um script Python para este método pode ser encontrado [aqui](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/orgpolicy.policy.set.py).
### `orgpolicy.policy.set`, `iam.serviceAccounts.actAs`
Normalmente não é possível anexar um service account de um projeto diferente a um recurso porque existe uma restrição de policy aplicada chamada **`iam.disableCrossProjectServiceAccountUsage`** que impede essa ação.
É possível verificar se essa restrição está aplicada executando o seguinte comando:
```bash
gcloud resource-manager org-policies describe \
constraints/iam.disableCrossProjectServiceAccountUsage \
--project=<project-id> \
--effective
booleanPolicy:
enforced: true
constraint: constraints/iam.disableCrossProjectServiceAccountUsage
```
Isso impede que um atacante abuse da permissão **`iam.serviceAccounts.actAs`** para se passar por uma conta de serviço de outro projeto sem as permissões adicionais de infra necessárias para iniciar uma nova VM, por exemplo, o que poderia levar à escalada de privilégios.
No entanto, um atacante com a permissão **`orgpolicy.policy.set`** pode contornar essa restrição desativando a restrição **`iam.disableServiceAccountProjectWideAccess`**. Isso permite que o atacante anexe uma conta de serviço de outro projeto a um recurso em seu próprio projeto, efetivamente elevando seus privilégios.
```bash
gcloud resource-manager org-policies disable-enforce \
iam.disableCrossProjectServiceAccountUsage \
--project=<project-id>
```
## Referências
- [https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/](https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/)