# GCP - Privilege Escalation

{{#include ../../../banners/hacktricks-training.md}}

## Introduzione all'Escalation dei Privilegi in GCP <a href="#introduction-to-gcp-privilege-escalation" id="introduction-to-gcp-privilege-escalation"></a>

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 <a href="#bypassing-access-scopes" id="bypassing-access-scopes"></a>

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}}
