# GCP - 汎用パーミッション Privesc

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

## 汎用の注目すべき権限

### \*.setIamPolicy

もしユーザーがリソースに対して **`setIamPolicy`** 権限を持っている場合、そのリソースのIAMポリシーを変更して自身により多くの権限を付与できるため、そのリソース内で**権限を昇格**できます。\
この権限は、リソースがコードの実行を許可しており `iam.ServiceAccounts.actAs` が不要な場合に、**他のプリンシパルへ昇格**するためにも利用され得ます。

- _cloudfunctions.functions.setIamPolicy_
- Cloud Function のポリシーを変更して、自分が呼び出せるようにする。

この種の権限を持つリソースタイプは数十種類あり、[https://cloud.google.com/iam/docs/permissions-reference](https://cloud.google.com/iam/docs/permissions-reference) で setIamPolicy を検索するとすべて確認できます。

### \*.create, \*.update

これらの権限は、リソースを**新しく作成したり更新したりすることで**権限昇格を試みる際に非常に有用です。特に、Service Account に対して **iam.serviceAccounts.actAs** 権限を持っていて、あなたが .create/.update を持つリソースが Service Account をアタッチできる場合に有効です。

### \*ServiceAccount\*

この権限は通常、あるリソース内の Service Account に**アクセスまたは変更**を行えるようにします（例: compute.instances.setServiceAccount）。これは**特権昇格の経路**につながる可能性がありますが、ケースごとに依存します。

### iam.ServiceAccounts.actAs

この権限があれば、Service Account をそれをサポートするリソースにアタッチできます（例: Compute Engine VM, Cloud Function, Cloud Run, 等）。\
もし自分のユーザーより多くの権限を持つ Service Account をコード実行可能なリソースにアタッチできれば、その Service Account でコードを実行することで権限を昇格できます。

Cloud Hacktricks で `iam.ServiceAccounts.actAs` を検索すると、この権限を使った複数の権限昇格例が見つかります。

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