GCP - Cloud Run Enum

Reading time: 7 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Cloud Run

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

コンテナを実行することができ、Go、Node.js、Python、Java、.NET Core、またはRubyを使用している場合は、コンテナを自動的に構築するsource-based deploymentオプションを使用できます。

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

Services and jobs

Cloud Runでは、コードは_サービスとして継続的に実行されるか、ジョブ_として実行されます。サービスとジョブは同じ環境で実行され、Google Cloud上の他のサービスとの統合を同じように使用できます。

  • Cloud Run services. ウェブリクエストやイベントに応答するコードを実行するために使用されます。
  • Cloud Run jobs. 作業(ジョブ)を実行し、作業が完了すると終了するコードを実行するために使用されます。

Cloud Run Service

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

Relevant details

  • デフォルトでは、ウェブサーバーへのアクセス公開ですが、内部トラフィック(VPCなど)に制限することもできます。
    さらに、ウェブサーバーに接続するための認証は、すべてを許可するか、IAMを介して認証を要求することができます。
  • デフォルトでは、暗号化Google管理キーを使用しますが、KMSからのCMEK(顧客管理暗号化キー)を選択することもできます。
  • デフォルトでは、使用されるサービスアカウントCompute Engineのデフォルトアカウントで、プロジェクトに対してEditorアクセス権を持ち、**スコープcloud-platform**があります。
  • 実行のために平文の環境変数を定義することが可能で、クラウドシークレットをマウントしたり、環境変数にクラウドシークレットを追加したりすることもできます。
  • Cloud SQLとの接続を追加したり、ファイルシステムをマウントしたりすることも可能です。
  • デプロイされたサービスのURLは、**https://<svc-name>-<random>.a.run.app**に似ています。
  • Run Serviceは1つ以上のバージョンまたはリビジョンを持つことができ、複数のリビジョン間でトラフィックを分割できます。

Enumeration

bash
# 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 サービスとは異なり、ジョブはウェブサーバーをバンドルすべきではないことを意味します。代わりに、ジョブコンテナは完了したら終了するべきです。

列挙

bash
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>

権限昇格

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

GCP - Run Privesc

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

GCP - Cloud Run Unauthenticated Enum

ポストエクスプロイト

GCP - Cloud Run Post Exploitation

永続性

GCP - Cloud Run Persistence

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする