# GCP - Cloud Run Enum {{#include ../../../banners/hacktricks-training.md}} ## Cloud Run Cloud Runは、Googleのスケーラブルなインフラストラクチャの上で**コンテナを直接実行**できるサーバーレスの管理されたコンピューティングプラットフォームです。 コンテナを実行することができ、Go、Node.js、Python、Java、.NET Core、またはRubyを使用している場合は、**コンテナを自動的に構築する**[source-based deployment](https://cloud.google.com/run/docs/deploying-source-code)オプションを使用できます。 GoogleはCloud Runを**Google Cloud上の他のサービスと連携してうまく機能するように構築しました**ので、フル機能のアプリケーションを構築できます。 ### Services and jobs Cloud Runでは、コードは_**サービス**_として継続的に実行されるか、_**ジョブ**_として実行されます。サービスとジョブは同じ環境で実行され、Google Cloud上の他のサービスとの統合を同じように使用できます。 - **Cloud Run services.** ウェブリクエストやイベントに応答するコードを実行するために使用されます。 - **Cloud Run jobs.** 作業(ジョブ)を実行し、作業が完了すると終了するコードを実行するために使用されます。 ## Cloud Run Service Google [Cloud Run](https://cloud.google.com/run)は、環境変数を検索することもできる別のサーバーレスオファーです。Cloud Runは、デフォルトでコンテナ内のポート8080で実行される小さなウェブサーバーを作成し、HTTP GETリクエストを待機します。リクエストが受信されると、ジョブが実行され、ジョブログがHTTPレスポンスを介して出力されます。 ### Relevant details - **デフォルト**では、ウェブサーバーへの**アクセス**は**公開**ですが、**内部トラフィック**(VPCなど)に**制限**することもできます。\ さらに、ウェブサーバーに接続するための**認証**は、**すべてを許可する**か、**IAMを介して認証を要求する**ことができます。 - デフォルトでは、**暗号化**は**Google管理キー**を使用しますが、**KMS**からの**CMEK**(顧客管理暗号化キー)を**選択**することもできます。 - **デフォルト**では、使用される**サービスアカウント**は**Compute Engineのデフォルトアカウント**で、プロジェクトに対して**Editor**アクセス権を持ち、**スコープ`cloud-platform`**があります。 - 実行のために**平文の環境変数**を定義することが可能で、**クラウドシークレットをマウント**したり、**環境変数にクラウドシークレットを追加**したりすることもできます。 - **Cloud SQLとの接続を追加**したり、**ファイルシステムをマウント**したりすることも可能です。 - デプロイされたサービスの**URL**は、**`https://-.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 # 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 # Get revisions gcloud run revisions list --region gcloud run revisions describe --region # Get domains gcloud run domain-mappings list gcloud run domain-mappings describe # Attempt to trigger a job unauthenticated curl # Attempt to trigger a job with your current gcloud authorization curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" ``` ## Cloud Run ジョブ Cloud Run ジョブは、**完了するまで実行され、リクエストを処理しないコンテナ**により適しています。ジョブはリクエストを処理したり、ポートで待機したりする能力がありません。これは、Cloud Run サービスとは異なり、ジョブはウェブサーバーをバンドルすべきではないことを意味します。代わりに、ジョブコンテナは完了したら終了するべきです。 ### 列挙 ```bash gcloud beta run jobs list gcloud beta run jobs describe --region gcloud beta run jobs get-iam-policy --region ``` ## 権限昇格 次のページでは、**クラウドランの権限を悪用して権限を昇格させる方法**を確認できます: {{#ref}} ../gcp-privilege-escalation/gcp-run-privesc.md {{#endref}} ## 認証されていないアクセス {{#ref}} ../gcp-unauthenticated-enum-and-access/gcp-cloud-run-unauthenticated-enum.md {{#endref}} ## ポストエクスプロイト {{#ref}} ../gcp-post-exploitation/gcp-cloud-run-post-exploitation.md {{#endref}} ## 永続性 {{#ref}} ../gcp-persistence/gcp-cloud-run-persistence.md {{#endref}} ## 参考文献 - [https://cloud.google.com/run/docs/overview/what-is-cloud-run](https://cloud.google.com/run/docs/overview/what-is-cloud-run) {{#include ../../../banners/hacktricks-training.md}}