GCP - Cloud Functions Enum
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
で実行されます。
ディスクは 読み取り専用でマウントされていません。
列挙
特権昇格
次のページでは、クラウドファンクションの権限を悪用して特権を昇格させる方法を確認できます:
pageGCP - Cloudfunctions Privesc認証されていないアクセス
pageGCP - Cloud Functions Unauthenticated Enum攻撃後の利用
pageGCP - Cloud Functions Post Exploitation永続性
pageGCP - Cloud Functions Persistence参考文献
最終更新