GCP - Cloud Functions Enum

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

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

Cloud Functions

Google Cloud Functions は、イベントに応答して実行されるコードをホストするために設計されており、ホストオペレーティングシステムの管理を必要としません。さらに、これらの関数は、コードが利用できる環境変数の保存をサポートしています。

ストレージ

Cloud Functions のコードは GCP ストレージに保存されています。したがって、GCP のバケットに読み取りアクセス権があるユーザーは、Cloud Functions のコードを読むことができます。 コードは次のようなバケットに保存されています:

gcf-sources-<number>-<region>/<function-name>-<uuid>/version-<n>/function-source.zip 例: gcf-sources-645468741258-us-central1/function-1-003dcbdf-32e1-430f-a5ff-785a6e238c76/version-4/function-source.zip

Cloud Function を保存しているバケットに 書き込み権限 があるユーザーは、実行されるコードを上書きすることができます。

SA

指定されていない場合、プロジェクトに対して Editor 権限を持つ App Engine デフォルトサービスアカウントが Cloud Function にアタッチされます。

トリガー、URL、認証

Cloud Function が作成されるとき、トリガーを指定する必要があります。一般的なものの1つは HTTPS で、これにより、Web ブラウジングを介して関数をトリガーできる URL が作成されます。 他のトリガーには、pub/sub、Storage、Filestore などがあります...

URL の形式は https://<region>-<project-gcp-name>.cloudfunctions.net/<func_name> です。

HTTPS トリガーが使用されると、関数を呼び出すために発信者が IAM 認証を持っている必要があるか誰でも呼び出すことができるかが示されます:

Cloud Function 内部

コードは、Cloud Function 内のフォルダ /workspace同じファイル名でダウンロードされ、ユーザー www-data で実行されます。 ディスクは 読み取り専用でマウントされていません

列挙

# List functions
gcloud functions list
gcloud functions describe <func_name> # Check triggers to see how is this function invoked
gcloud functions get-iam-policy <func_name>

# Get logs of previous runs. By default, limits to 10 lines
gcloud functions logs read <func_name> --limit [NUMBER]

# Call a function
curl https://<region>-<project>.cloudfunctions.net/<func_name>
gcloud functions call <func_name> --data='{"message": "Hello World!"}'

# If you know the name of projects you could try to BF cloud functions names

# Get events that could be used to trigger a cloud function
gcloud functions event-types list

# Access function with authentication
curl -X POST https://<region>-<project>.cloudfunctions.net/<func_name> \
-H "Authorization: bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" \
-d '{}'

特権昇格

次のページでは、クラウドファンクションの権限を悪用して特権を昇格させる方法を確認できます:

pageGCP - Cloudfunctions Privesc

認証されていないアクセス

pageGCP - Cloud Functions Unauthenticated Enum

攻撃後の利用

pageGCP - Cloud Functions Post Exploitation

永続性

pageGCP - Cloud Functions Persistence

参考文献

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

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

最終更新