GCP - Cloud Run Enum

Support 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 管理的密钥,但也可以选择来自KMSCMEK(客户管理的加密密钥)。

  • 默认情况下,使用的服务账户计算引擎默认账户,该账户对项目具有编辑者访问权限,并且具有范围 cloud-platform

  • 可以为执行定义明文环境变量,甚至可以挂载云密钥将云密钥添加到环境变量

  • 还可以添加与 Cloud SQL 的连接挂载文件系统

  • 部署的服务的URLs类似于 https://<svc-name>-<random>.a.run.app

  • 一个 Run 服务可以有多个版本或修订版,并且可以在多个修订版之间分配流量

Enumeration

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

Cloud Run 作业更适合 运行到完成并且不提供请求的容器。作业没有提供请求或监听端口的能力。这意味着与 Cloud Run 服务不同,作业不应捆绑 Web 服务器。相反,作业容器在完成时应退出。

Enumeration

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

参考资料

支持 HackTricks

Last updated