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

This commit is contained in:
Translator
2025-11-15 11:48:07 +00:00
parent fc089683be
commit 420929d30a
2 changed files with 40 additions and 10 deletions

View File

@@ -1,25 +1,32 @@
# GCP - Privilegi Generici Privesc
# GCP - Generic Permissions Privesc
{{#include ../../../banners/hacktricks-training.md}}
## Permessi Interessanti Generici
## Permessi generici interessanti
### \*.setIamPolicy
Se possiedi un utente che ha il permesso **`setIamPolicy`** in una risorsa, puoi **escalare i privilegi in quella risorsa** perché sarai in grado di modificare la policy IAM di quella risorsa e darti più privilegi su di essa.\
Questo permesso può anche consentire di **escalare ad altri principi** se la risorsa consente di eseguire codice e il iam.ServiceAccounts.actAs non è necessario.
Se possiedi un utente che ha il permesso **`setIamPolicy`** su una risorsa puoi **escalare i privilegi in quella risorsa** perché potrai modificare la policy IAM della risorsa e concederti più privilegi su di essa.\
Questo permesso può anche permettere di **escalare ad altri principal** se la risorsa permette di eseguire codice e `iam.ServiceAccounts.actAs` non è necessario.
- _cloudfunctions.functions.setIamPolicy_
- Modifica la policy di una Cloud Function per consentire a te stesso di invocarla.
- Modify the policy of a Cloud Function to allow yourself to invoke it.
Ci sono decine di tipi di risorse con questo tipo di permesso, puoi trovarli tutti in [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) cercando setIamPolicy.
Ci sono decine di tipi di risorsa con questo tipo di permesso; puoi trovarli tutti su [https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) cercando setIamPolicy.
### \*.create, \*.update
Questi permessi possono essere molto utili per cercare di escalare i privilegi nelle risorse **creando una nuova o aggiornando una esistente**. Questi tipi di permessi sono particolarmente utili se hai anche il permesso **iam.serviceAccounts.actAs** su un Service Account e la risorsa su cui hai .create/.update può allegare un service account.
Questi permessi possono essere molto utili per tentare di escalare i privilegi sulle risorse creando una nuova risorsa o aggiornandone una esistente. Questi tipi di permessi sono particolarmente utili se hai anche il permesso **iam.serviceAccounts.actAs** su una Service Account e la risorsa su cui hai .create/.update può collegare una service account.
### \*ServiceAccount\*
Questo permesso ti permetterà solitamente di **accedere o modificare un Service Account in qualche risorsa** (es.: compute.instances.setServiceAccount). Questo **potrebbe portare a un vettore di escalation dei privilegi**, ma dipenderà da ciascun caso.
Questo permesso di solito ti permetterà di **accedere o modificare una Service Account in una risorsa** (es.: compute.instances.setServiceAccount). Questo **potrebbe portare a un vettore di escalation di privilegi**, ma dipenderà da ciascun caso.
### iam.ServiceAccounts.actAs
Questo permesso ti permette di collegare una Service Account a una risorsa che lo supporta (es.: Compute Engine VM, Cloud Function, Cloud Run, etc).\
Se puoi collegare una Service Account che ha più privilegi del tuo utente a una risorsa che può eseguire codice, potrai escalare i tuoi privilegi eseguendo codice con quella Service Account.
Search in Cloud Hacktricks for `iam.ServiceAccounts.actAs` to find several examples of how to escalate privileges with this permission.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -6,7 +6,7 @@
### `orgpolicy.policy.set`
Un attaccante che sfrutta **orgpolicy.policy.set** può manipolare le politiche organizzative, il che gli permette di rimuovere alcune restrizioni che ostacolano operazioni specifiche. Ad esempio, il vincolo **appengine.disableCodeDownload** di solito blocca il download del codice sorgente di App Engine. Tuttavia, utilizzando **orgpolicy.policy.set**, un attaccante può disattivare questo vincolo, ottenendo così accesso per scaricare il codice sorgente, nonostante fosse inizialmente protetto.
Un attaccante che sfrutta **orgpolicy.policy.set** può manipolare le policy organizzative, permettendogli di rimuovere determinate restrizioni che ostacolano operazioni specifiche. Per esempio, il vincolo **appengine.disableCodeDownload** di solito impedisce il download del codice sorgente di App Engine. Tuttavia, utilizzando **orgpolicy.policy.set**, un attaccante può disattivare questo vincolo, ottenendo così l'accesso per scaricare il codice sorgente, nonostante inizialmente fosse protetto.
```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>]
```
Un script Python per questo metodo può essere trovato [qui](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/orgpolicy.policy.set.py).
Uno script Python per questo metodo è disponibile [qui](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/orgpolicy.policy.set.py).
### `orgpolicy.policy.set`, `iam.serviceAccounts.actAs`
Di solito non è possibile associare un service account di un progetto diverso a una risorsa perché è applicato un vincolo di policy chiamato **`iam.disableCrossProjectServiceAccountUsage`** che impedisce questa azione.
È possibile verificare se questo vincolo è applicato eseguendo il comando seguente:
```bash
gcloud resource-manager org-policies describe \
constraints/iam.disableCrossProjectServiceAccountUsage \
--project=<project-id> \
--effective
booleanPolicy:
enforced: true
constraint: constraints/iam.disableCrossProjectServiceAccountUsage
```
Questo impedisce a un attaccante di abusare del permesso **`iam.serviceAccounts.actAs`** per impersonare un service account di un altro progetto senza i necessari permessi infrastrutturali aggiuntivi per avviare, ad esempio, una nuova VM, il che potrebbe portare a privilege escalation.
Tuttavia, un attaccante con il permesso **`orgpolicy.policy.set`** può aggirare questa restrizione disabilitando il vincolo **`iam.disableServiceAccountProjectWideAccess`**. Questo permette all'attaccante di associare un service account di un altro progetto a una risorsa nel proprio progetto, incrementando di fatto i suoi privilegi.
```bash
gcloud resource-manager org-policies disable-enforce \
iam.disableCrossProjectServiceAccountUsage \
--project=<project-id>
```
## Riferimenti
- [https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/](https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/)