# GCP - IAM Post Exploitation

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

## IAM <a href="#service-account-impersonation" id="service-account-impersonation"></a>

Jy kan verdere inligting oor IAM vind in:

{{#ref}}
../gcp-services/gcp-iam-and-org-policies-enum.md
{{#endref}}

### Toegang tot die management console verleen <a href="#granting-access-to-management-console" id="granting-access-to-management-console"></a>

Access to the [GCP management console](https://console.cloud.google.com) word **verskaf aan user accounts, nie service accounts nie**. Om by die webkoppelvlak aan te meld, kan jy **toegang verleen aan 'n Google account** wat jy beheer. Dit kan 'n generiese "**@gmail.com**" account wees; dit hoef **nie 'n lid van die teikenorganisasie te wees nie**.

Om die primitiewe rol van **Owner** aan 'n generiese "@gmail.com" account toe te ken, sal jy egter die **web console** moet gebruik. `gcloud` sal 'n fout gee as jy probeer om 'n permissie bo **Editor** toe te ken.

Jy kan die volgende opdrag gebruik om 'n gebruiker die primitiewe rol van **Editor** aan jou bestaande projek toe te ken:
```bash
gcloud projects add-iam-policy-binding [PROJECT] --member user:[EMAIL] --role roles/editor
```
As dit hier gelukt het, probeer **toegang tot die webkoppelvlak** en verken daarvandaan.

Dit is die **hoogste vlak wat jy kan toewys met die gcloud tool**.

### Verwyder IAM-komponente `iam.*.delete`
Die `iam.*.delete`-toestemmings (bv. `iam.roles.delete`, `iam.serviceAccountApiKeyBindings.delete`, `iam.serviceAccountKeys.delete`, ens.) laat 'n identiteit toe om kritieke IAM-komponente te verwyder soos aangepaste rolle, API-sleutelbindings, service account-sleutels, en die service accounts self. In die hande van 'n aanvaller maak dit moontlik om geldige toegangsmiddele te verwyder om 'n denial of service te veroorsaak.

Om so 'n aanval uit te voer, is dit byvoorbeeld moontlik om rolle te verwyder met behulp van:
```bash
gcloud iam roles delete <ROLE_ID> --project=<PROJECT_ID>
```
### `iam.serviceAccountKeys.disable` || `iam.serviceAccounts.disable`

Die `iam.serviceAccountKeys.disable` en `iam.serviceAccounts.disable` toestemmings laat toe om aktiewe diensrekeningsleutels of diensrekeninge te deaktiveer, wat in die hande van 'n aanvaller gebruik kan word om bedrywighede te versteur, 'n denial of service te veroorsaak, of incident response te belemmer deur die gebruik van geldige credentials te voorkom.

Om 'n diensrekening te deaktiveer, kan jy die volgende opdrag gebruik:
```bash
gcloud iam service-accounts disable <SA_EMAIL> --project=<PROJECT_ID>
```
Om die sleutels van 'n Service Account uit te skakel, kan jy die volgende opdrag gebruik:
```bash
gcloud iam service-accounts keys disable <KEY_ID> --iam-account=<SA_EMAIL>
```
### `iam.*.undelete`
Die `iam.*.undelete`-toestemmings laat toe om voorheen verwyderde elemente te herstel, soos API key bindings, custom roles, of service accounts. In die hande van 'n aanvaller kan dit gebruik word om verdedigende maatreëls om te keer (herstel verwyderde toegang), verwyderde kompromie-vektore te herbou om volharding te behou, of herstelpogings te ontduik, wat die beperking van 'n insident bemoeilik.
```bash
gcloud iam service-accounts undelete "${SA_ID}" --project="${PROJECT}"
```
{{#include ../../../banners/hacktricks-training.md}}
