GCP - Cloud Run Enum

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: 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. 用于运行响应 web 请求或事件的代码。
  • Cloud Run jobs. 用于运行执行工作(作业)的代码,并在工作完成时退出。

Cloud Run Service

Google Cloud Run 是另一个无服务器的服务,您也可以在其中搜索环境变量。Cloud Run 默认创建一个小型 web 服务器,运行在容器内的 8080 端口,等待 HTTP GET 请求。当请求被接收时,将执行一个作业,并通过 HTTP 响应输出作业日志。

Relevant details

  • 默认情况下,web 服务器的访问公开的,但也可以限制为内部流量(VPC…)
    此外,联系 web 服务器的身份验证可以是允许所有通过 IAM 进行身份验证
  • 默认情况下,加密使用Google 管理的密钥,但也可以选择来自KMSCMEK(客户管理的加密密钥)。
  • 默认情况下,使用的服务账户计算引擎默认账户,该账户对项目具有编辑者访问权限,并且具有范围 cloud-platform
  • 可以为执行定义明文环境变量,甚至可以挂载云密钥将云密钥添加到环境变量
  • 还可以添加与 Cloud SQL 的连接挂载文件系统
  • 部署的服务的URLs 类似于 https://<svc-name>-<random>.a.run.app
  • 一个 Run Service 可以有多个版本或修订版,并且可以在多个修订版之间分流流量

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>

权限提升

在以下页面中,您可以查看如何滥用 cloud run 权限以提升权限

GCP - Run Privesc

未经身份验证的访问

GCP - Cloud Run Unauthenticated Enum

后期利用

GCP - Cloud Run Post Exploitation

持久性

GCP - Cloud Run Persistence

参考

Tip

学习并练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
学习并练习 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
学习并练习 Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks