GCP - Cloud Run Enum

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

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

Cloud Run

Cloud Runは、Googleのスケーラブルなインフラストラクチャの上でコンテナを直接実行できるサーバーレス管理されたコンピューティングプラットフォームです。

コンテナを実行するか、Go、Node.js、Python、Java、.NET Core、またはRubyを使用している場合は、ソースベースのデプロイメントオプションを使用して、コンテナをビルドできます。

GoogleはCloud Runを他のGoogle Cloudサービスとの連携に適して構築しているため、フル機能のアプリケーションを構築できます。

サービスとジョブ

Cloud Runでは、コードは_サービスまたはジョブ_として連続して実行することができます。サービスとジョブは同じ環境で実行され、他のGoogle Cloudサービスと同じ統合を使用できます。

  • Cloud Runサービス。 Webリクエストまたはイベントに応答するコードを実行するために使用されます。

  • Cloud Runジョブ。 作業(ジョブ)を実行し、作業が完了すると終了するコードを実行するために使用されます。

Cloud Runサービス

Google Cloud Runは、環境変数を検索できる別のサーバーレスオファーです。 Cloud Runは、デフォルトでコンテナ内のポート8080で実行される小さなWebサーバーを作成し、HTTP GETリクエストを待機しています。 リクエストを受信すると、ジョブが実行され、ジョブログがHTTPレスポンス経由で出力されます。

関連する詳細

  • デフォルトでは、Webサーバーへのアクセス公開されていますが、内部トラフィックに制限することもできます。 また、Webサーバーに連絡する認証すべて許可するか、IAM経由で認証を要求することもできます。

  • デフォルトでは、暗号化にはGoogleが管理するキーが使用されますが、KMSからのCMEK(顧客管理型暗号化キー)も選択できます。

  • デフォルトでは、使用されるサービスアカウントは、プロジェクトに対してEditorアクセス権を持つCompute Engineデフォルトのものであり、**スコープcloud-platform**を持っています。

  • 実行用にクリアテキスト環境変数を定義したり、クラウドシークレットをマウントしたり、クラウドシークレットを環境変数に追加したりすることができます。

  • Cloud SQLとの接続を追加したり、ファイルシステムをマウントしたりすることも可能です。

  • デプロイされたサービスのURLは**https://<svc-name>-<random>.a.run.app**のようになります。

  • Runサービスには1つ以上のバージョンまたはリビジョンを持たせ、複数のリビジョン間でトラフィックを分割することができます。

列挙

# List services
gcloud run services list
gcloud run services list --platform=managed
gcloud run services list --platform=gke

# Get info of a service
gcloud run services describe --region <region> <svc-name>

# Get info of all the services together
gcloud run services list --format=yaml
gcloud run services list --platform=managed --format=json
gcloud run services list --platform=gke --format=json

# Get policy
gcloud run services get-iam-policy --region <region> <svc-name>

# Get revisions
gcloud run revisions list --region <region>
gcloud run revisions describe --region <region> <revision>

# Get domains
gcloud run domain-mappings list
gcloud run domain-mappings describe <name>

# Attempt to trigger a job unauthenticated
curl <url>

# Attempt to trigger a job with your current gcloud authorization
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" <url>

Cloud Run ジョブ

Cloud Run ジョブは、完了まで実行されるコンテナに適しています。ジョブはリクエストを処理したりポートでリッスンしたりする機能を持っていません。つまり、Cloud Run サービスとは異なり、ジョブにはウェブサーバーをバンドルするべきではありません。代わりに、ジョブのコンテナは完了した時点で終了すべきです。

列挙

gcloud beta run jobs list
gcloud beta run jobs describe --region <region> <job-name>
gcloud beta run jobs get-iam-policy --region <region> <job-name>

特権昇格

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

pageGCP - Run Privesc

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

pageGCP - Cloud Run Unauthenticated Enum

攻撃後の処理

pageGCP - Cloud Run Post Exploitation

永続性

pageGCP - Cloud Run Persistence

参考文献

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

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

最終更新