# GCP - Apikeys Privesc

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

## Apikeys

Sledeće dozvole su korisne za kreiranje i krađu API ključeva, ne zaboravite ovo iz dokumentacije: _API ključ je jednostavna enkriptovana niska koja **identifikuje aplikaciju bez ikakvog principala**. Korisni su za pristup **javnim podacima anonimno**, i koriste se za **povezivanje** API zahteva sa vašim projektom za kvotu i **naplatu**._

Dakle, sa API ključem možete naterati tu kompaniju da plati za vašu upotrebu API-a, ali nećete moći da eskalirate privilegije.

Za više informacija o API ključevima proverite:

{{#ref}}
../gcp-services/gcp-api-keys-enum.md
{{#endref}}

Za druge načine kreiranja API ključeva proverite:

{{#ref}}
gcp-serviceusage-privesc.md
{{#endref}}

### Brute Force API Key access <a href="#apikeys.keys.create" id="apikeys.keys.create"></a>

Pošto možda ne znate koje API-je su omogućene u projektu ili ograničenja primenjena na API ključ koji ste pronašli, bilo bi zanimljivo pokrenuti alat [**https://github.com/ozguralp/gmapsapiscanner**](https://github.com/ozguralp/gmapsapiscanner) i proveriti **šta možete pristupiti sa API ključem.**

### `apikeys.keys.create` <a href="#apikeys.keys.create" id="apikeys.keys.create"></a>

Ova dozvola omogućava da **kreirate API ključ**:
```bash
gcloud services api-keys create
Operation [operations/akmf.p7-[...]9] complete. Result: {
"@type":"type.googleapis.com/google.api.apikeys.v2.Key",
"createTime":"2022-01-26T12:23:06.281029Z",
"etag":"W/\"HOhA[...]==\"",
"keyString":"AIzaSy[...]oU",
"name":"projects/5[...]6/locations/global/keys/f707[...]e8",
"uid":"f707[...]e8",
"updateTime":"2022-01-26T12:23:06.378442Z"
}
```
Možete pronaći skriptu za automatizaciju [**kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/b-apikeys.keys.create.sh).

> [!CAUTION]
> Imajte na umu da po defaultu korisnici imaju dozvole za kreiranje novih projekata i dodeljuje im se uloga Vlasnika nad novim projektom. Tako da korisnik može **kreirati projekat i API ključ unutar ovog projekta**.

### `apikeys.keys.getKeyString` , `apikeys.keys.list` <a href="#apikeys.keys.getkeystringapikeys.keys.list" id="apikeys.keys.getkeystringapikeys.keys.list"></a>

Ove dozvole omogućavaju **listanje i dobijanje svih apiKeys i dobijanje Ključa**:
```bash
for  key  in  $(gcloud services api-keys list --uri); do
gcloud services api-keys get-key-string "$key"
done
```
Možete pronaći skriptu za automatizaciju [**kreiranja, eksploatacije i čišćenja ranjivog okruženja ovde**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/c-apikeys.keys.getKeyString.sh).

### `apikeys.keys.undelete` , `apikeys.keys.list` <a href="#serviceusage.apikeys.regenerateapikeys.keys.list" id="serviceusage.apikeys.regenerateapikeys.keys.list"></a>

Ove dozvole vam omogućavaju da **prikazujete i regenerišete obrisane API ključeve**. **API ključ se daje u izlazu** nakon što je **obrisano**:
```bash
gcloud services api-keys list --show-deleted
gcloud services api-keys undelete <key-uid>
```
### Kreirajte internu OAuth aplikaciju za phishing drugih radnika

Proverite sledeću stranicu da biste saznali kako to učiniti, iako ova akcija pripada servisu **`clientauthconfig`** [prema dokumentaciji](https://cloud.google.com/iap/docs/programmatic-oauth-clients#before-you-begin):

{{#ref}}
../../workspace-security/gws-google-platforms-phishing/
{{#endref}}

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