# 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}}