mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-12 15:50:19 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat
This commit is contained in:
@@ -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}}
|
||||
|
||||
@@ -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/)
|
||||
|
||||
Reference in New Issue
Block a user