GCP - Cloudfunctions Privesc

htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ

HackTricks をサポートする他の方法:

cloudfunctions

Cloud Functionsに関する詳細情報:

pageGCP - Cloud Functions Enum

cloudfunctions.functions.createcloudfunctions.functions.sourceCodeSetiam.serviceAccounts.actAs

これらの特権を持つ攻撃者は、任意の(悪意のある)コードを持つ新しいCloud Functionを作成し、それにサービスアカウントを割り当てることができます。その後、メタデータからサービスアカウントトークンを漏洩させ、それに特権を昇格させることができます。 関数をトリガーするためにはいくつかの特権が必要です。

この方法の悪用スクリプトはこちらこちらで見つけることができ、事前にビルドされた.zipファイルはこちらで見つけることができます。

cloudfunctions.functions.updatecloudfunctions.functions.sourceCodeSetiam.serviceAccounts.actAs

これらの特権を持つ攻撃者は、関数のコードを変更し、関連付けられたサービスアカウントを変更してトークンを外部に流出させることができます。 関数をトリガーするためにはいくつかの特権が必要です。

この方法の悪用スクリプトはこちらで見つけることができます。

cloudfunctions.functions.sourceCodeSet

この権限を持つと、ファイルを関数のバケットにアップロードするための署名付きURLを取得できます(ただし、関数のコードは変更されず、引き続き更新する必要があります)

# Generate the URL
curl -X POST https://cloudfunctions.googleapis.com/v2/projects/{project-id}/locations/{location}/functions:generateUploadUrl \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
-d '{}'

攻撃者の視点からは、この権限だけがどれだけ有用かはよくわかりませんが、知っておくと良いでしょう。

cloudfunctions.functions.setIamPolicyiam.serviceAccounts.actAs

前述の**.updateまたは.create**権限を自分自身に付与して特権を昇格させます。

cloudfunctions.functions.update

**iam.serviceAccounts.actAsなしでcloudfunctions**権限のみを持っている場合、関数を更新することはできないため、これは有効な特権昇格ではありません。

バケット書き込み権限

Cloud Functionsのコードが格納されているバケットに書き込み権限を持つ攻撃者は、function_code.zipを上書きしてコードを変更し、実行されると任意のコードを実行できます。

参考文献

htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)!

HackTricksをサポートする他の方法:

最終更新