# GCP - Privilege Escalation {{#include ../../../banners/hacktricks-training.md}} ## Introduzione all'Escalation dei Privilegi in GCP GCP, come qualsiasi altro cloud, ha alcuni **principali**: utenti, gruppi e account di servizio, e alcune **risorse** come compute engine, cloud functions…\ Poi, tramite ruoli, **i permessi vengono concessi a questi principali sulle risorse**. Questo è il modo per specificare i permessi che un principale ha su una risorsa in GCP.\ Ci sono alcuni permessi che permetteranno a un utente di **ottenere ancora più permessi** sulla risorsa o su risorse di terze parti, e questo è ciò che viene chiamato **privilege escalation** (anche, lo sfruttamento delle vulnerabilità per ottenere più permessi). Pertanto, vorrei separare le tecniche di escalation dei privilegi in GCP in **2 gruppi**: - **Privesc a un principale**: Questo ti permetterà di **impersonare un altro principale**, e quindi agire come esso con tutti i suoi permessi. ad es.: Abusare di _getAccessToken_ per impersonare un account di servizio. - **Privesc sulla risorsa**: Questo ti permetterà di **ottenere più permessi sulla risorsa specifica**. ad es.: puoi abusare del permesso _setIamPolicy_ su cloudfunctions per permetterti di attivare la funzione. - Nota che alcuni **permessi delle risorse ti permetteranno anche di allegare un account di servizio arbitrario** alla risorsa. Questo significa che sarai in grado di lanciare una risorsa con un SA, entrare nella risorsa e **rubare il token SA**. Pertanto, questo permetterà di escalare a un principale tramite un'escalation della risorsa. Questo è successo in diverse risorse in precedenza, ma ora è meno frequente (ma può ancora accadere). Ovviamente, le tecniche di escalation dei privilegi più interessanti sono quelle del **secondo gruppo** perché ti permetteranno di **ottenere più privilegi al di fuori delle risorse su cui hai già** alcuni privilegi. Tuttavia, nota che **escalare nelle risorse** può darti anche accesso a **informazioni sensibili** o persino ad **altri principali** (forse leggendo un segreto che contiene un token di un SA). > [!WARNING] > È importante notare anche che in **GCP gli Account di Servizio sono sia principali che permessi**, quindi escalare i privilegi in un SA ti permetterà di impersonarlo anche. > [!NOTE] > I permessi tra parentesi indicano i permessi necessari per sfruttare la vulnerabilità con `gcloud`. Questi potrebbero non essere necessari se sfruttati tramite l'API. ## Permessi per la Metodologia di Escalation dei Privilegi Questo è come **testo per permessi specifici** per eseguire azioni specifiche all'interno di GCP. 1. Scarica il repo github [https://github.com/carlospolop/gcp_privesc_scripts](https://github.com/carlospolop/gcp_privesc_scripts) 2. Aggiungi in tests/ il nuovo script ## Bypassare gli ambiti di accesso I token di SA trapelati dal servizio metadata di GCP hanno **ambiti di accesso**. Questi sono **restrizioni** sui **permessi** che il token ha. Ad esempio, se il token ha l'**ambito `https://www.googleapis.com/auth/cloud-platform`**, avrà **accesso completo** a tutti i servizi GCP. Tuttavia, se il token ha l'**ambito `https://www.googleapis.com/auth/cloud-platform.read-only`**, avrà solo **accesso in sola lettura** a tutti i servizi GCP anche se il SA ha più permessi in IAM. Non c'è un modo diretto per bypassare questi permessi, ma puoi sempre provare a cercare **nuove credenziali** nell'host compromesso, **trovare la chiave di servizio** per generare un token OAuth senza restrizioni o **saltare a una VM diversa meno restrittiva**. Quando vengono utilizzati [ambiti di accesso](https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam), il token OAuth generato per l'istanza di calcolo (VM) avrà **una** [**limitazione**](https://oauth.net/2/scope/) **sull'ambito incluso**. Tuttavia, potresti essere in grado di **bypassare** questa limitazione e sfruttare i permessi che ha l'account compromesso. Il **modo migliore per bypassare** questa restrizione è o **trovare nuove credenziali** nell'host compromesso, **trovare la chiave di servizio per generare un token OAuth** senza restrizioni o **compromettere una VM diversa con un SA meno restrittivo**. Controlla SA con chiavi generate con: ```bash for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do echo "Looking for keys for $i:" gcloud iam service-accounts keys list --iam-account $i done ``` ## Tecniche di Escalation dei Privilegi Il modo per elevare i tuoi privilegi in AWS è avere abbastanza permessi per poter, in qualche modo, accedere ai privilegi di altri account/utenti/gruppi di servizio. Collegare le escalation fino ad avere accesso admin sull'organizzazione. > [!WARNING] > GCP ha **centinaia** (se non migliaia) di **permessi** che possono essere concessi a un'entità. In questo libro puoi trovare **tutti i permessi che conosco** che puoi abusare per **escalare i privilegi**, ma se **conosci qualche percorso** non menzionato qui, **per favore condividilo**. **Le sottopagine di questa sezione sono ordinate per servizi. Puoi trovare su ciascun servizio diversi modi per escalare i privilegi sui servizi.** ### Abusare di GCP per escalare privilegi localmente Se sei all'interno di una macchina in GCP potresti essere in grado di abusare dei permessi per escalare i privilegi anche localmente: {{#ref}} gcp-local-privilege-escalation-ssh-pivoting.md {{#endref}} ## Riferimenti - [https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/) - [https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/](https://rhinosecuritylabs.com/cloud-security/privilege-escalation-google-cloud-platform-part-2/#gcp-privesc-scanner) - [https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/](https://about.gitlab.com/blog/2020/02/12/plundering-gcp-escalating-privileges-in-google-cloud-platform/) {{#include ../../../banners/hacktricks-training.md}}