mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 05:33:10 -08:00
Translated ['', 'src/pentesting-cloud/gcp-security/gcp-privilege-escalat
This commit is contained in:
@@ -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}}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
### `orgpolicy.policy.set`
|
||||
|
||||
Un attaccante che sfrutta **orgpolicy.policy.set** può manipolare le politiche organizzative, il che gli permetterà 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/)
|
||||
|
||||
Reference in New Issue
Block a user