# GCP - Privilege Escalation

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

## Introduction to GCP Privilege Escalation <a href="#introduction-to-gcp-privilege-escalation" id="introduction-to-gcp-privilege-escalation"></a>

GCP, soos enige ander wolk, het 'n paar **beginsels**: gebruikers, groepe en diensrekeninge, en 'n paar **hulpbronne** soos rekenaar enjin, wolk funksies…\
Dan, via rolle, **word toestemmings aan daardie beginsels oor die hulpbronne toegeken**. Dit is die manier om die toestemmings wat 'n beginsel oor 'n hulpbron in GCP het, te spesifiseer.\
Daar is sekere toestemmings wat 'n gebruiker sal toelaat om **nog meer toestemmings** op die hulpbron of derdeparty hulpbronne te verkry, en dit word **privilege escalatie** genoem (ook, die benutting van die kwesbaarhede om meer toestemmings te verkry).

Daarom wil ek GCP privilege escalatie tegnieke in **2 groepe** verdeel:

- **Privesc na 'n beginsel**: Dit sal jou toelaat om **'n ander beginsel na te volg**, en dus soos dit op te tree met al sy toestemmings. bv.: Misbruik _getAccessToken_ om 'n diensrekening na te volg.
- **Privesc op die hulpbron**: Dit sal jou toelaat om **meer toestemmings oor die spesifieke hulpbron te verkry**. bv.: jy kan _setIamPolicy_ toestemming oor cloudfunctions misbruik om jou toe te laat om die funksie te aktiveer.
- Let daarop dat sommige **hulpbronstoestemmings jou ook sal toelaat om 'n arbitrêre diensrekening aan die hulpbron te heg**. Dit beteken dat jy in staat sal wees om 'n hulpbron met 'n SA te begin, in die hulpbron in te gaan, en **die SA-token te steel**. Daarom sal dit jou toelaat om na 'n beginsel te eskaleer via 'n hulpbron eskalatie. Dit het al in verskeie hulpbronne gebeur, maar nou is dit minder gereeld (maar kan steeds gebeur).

Dit is duidelik dat die mees interessante privilege escalatie tegnieke die van die **tweede groep** is omdat dit jou sal toelaat om **meer voorregte buite die hulpbronne wat jy reeds oor sommige voorregte het, te verkry**. Let egter daarop dat **eskalering in hulpbronne** jou ook toegang kan gee tot **sensitiewe inligting** of selfs tot **ander beginsels** (miskien deur 'n geheim te lees wat 'n token van 'n SA bevat).

> [!WARNING]
> Dit is ook belangrik om daarop te let dat in **GCP Diensrekeninge beide beginsels en toestemmings is**, so die eskalering van voorregte in 'n SA sal jou ook toelaat om dit na te volg.

> [!NOTE]
> Die toestemmings tussen hakies dui die toestemmings aan wat nodig is om die kwesbaarheid met `gcloud` te benut. Dit mag nie nodig wees as dit deur die API benut word nie.

## Permissions for Privilege Escalation Methodology

Dit is hoe ek **toets vir spesifieke toestemmings** om spesifieke aksies binne GCP uit te voer.

1. Laai die github repo [https://github.com/carlospolop/gcp_privesc_scripts](https://github.com/carlospolop/gcp_privesc_scripts) af
2. Voeg in tests/ die nuwe skrip by

## Bypassing access scopes <a href="#bypassing-access-scopes" id="bypassing-access-scopes"></a>

Tokens van SA wat uit die GCP metadata diens gelek het, het **toegangskope**. Dit is **beperkings** op die **toestemmings** wat die token het. Byvoorbeeld, as die token die **`https://www.googleapis.com/auth/cloud-platform`** skaal het, sal dit **volledige toegang** tot al GCP dienste hê. As die token egter die **`https://www.googleapis.com/auth/cloud-platform.read-only`** skaal het, sal dit slegs **lees-alleen toegang** tot al GCP dienste hê, selfs al het die SA meer toestemmings in IAM.

Daar is geen direkte manier om hierdie toestemmings te omseil nie, maar jy kan altyd probeer om **nuwe geloofsbriewe** in die gecompromitteerde gasheer te soek, **die dienssleutel te vind** om 'n OAuth-token sonder beperking te genereer of **na 'n ander VM met minder beperking te spring**.

Wanneer [toegangskope](https://cloud.google.com/compute/docs/access/service-accounts#accesscopesiam) gebruik word, sal die OAuth-token wat vir die rekenaarinstansie (VM) gegenereer word, **'n** [**skaal**](https://oauth.net/2/scope/) **beperking ingesluit** hê. Jy mag egter in staat wees om hierdie beperking te **omseil** en die toestemmings wat die gecompromitteerde rekening het, te benut.

Die **beste manier om** hierdie beperking te omseil, is om of **nuwe geloofsbriewe** in die gecompromitteerde gasheer te vind, om **die dienssleutel te vind om 'n OAuth-token** sonder beperking te genereer of om **'n ander VM met 'n SA met minder beperking te kompromitteer**.

Kontroleer SA met sleutels wat gegenereer is met:
```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
```
## Privilege Escalation Techniques

Die manier om jou bevoegdhede in AWS te verhoog, is om genoeg toestemmings te hê om op een of ander manier toegang te verkry tot ander diensrekening/gebruiker/groep bevoegdhede. Kettingverhogings totdat jy admin toegang oor die organisasie het.

> [!WARNING]
> GCP het **honderde** (indien nie duisende nie) **toestemmings** wat aan 'n entiteit toegeken kan word. In hierdie boek kan jy **alle toestemmings wat ek ken** vind wat jy kan misbruik om **bevoegdhede te verhoog**, maar as jy **'n pad weet** wat hier nie genoem word nie, **deel dit asseblief**.

**Die subbladsye van hierdie afdeling is georden volgens dienste. Jy kan op elke diens verskillende maniere vind om bevoegdhede op die dienste te verhoog.**

### Abusing GCP to escalate privileges locally

As jy binne 'n masjien in GCP is, mag jy in staat wees om toestemmings te misbruik om bevoegdhede selfs plaaslik te verhoog:

{{#ref}}
gcp-local-privilege-escalation-ssh-pivoting.md
{{#endref}}

## References

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