GCP - Cloud Run Enum

支持 HackTricks

Cloud Run

Cloud Run 是一个无服务器托管计算平台,允许您直接在 Google 的可扩展基础设施上运行容器。

您可以运行您的容器,或者如果您使用 Go、Node.js、Python、Java、.NET Core 或 Ruby,您可以使用基于源代码部署选项,该选项会为您构建容器

Google 已经构建了 Cloud Run,以便与 Google Cloud 上的其他服务良好配合,因此您可以构建功能齐全的应用程序。

服务和作业

在 Cloud Run 上,您的代码可以作为一个_服务或一个作业_连续运行。服务和作业都在相同的环境中运行,并且可以与 Google Cloud 上的其他服务进行相同的集成。

  • Cloud Run 服务。 用于运行响应 web 请求或事件的代码。

  • Cloud Run 作业。 用于运行执行工作(作业)并在工作完成后退出的代码。

Cloud Run 服务

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

相关细节

  • 默认情况下,对 Web 服务器的访问公开的,但也可以限制为内部流量(VPC...) 此外,联系 Web 服务器的身份验证可以是允许所有通过 IAM 要求身份验证

  • 默认情况下,加密使用Google 管理的密钥,但也可以选择来自KMSCMEK(客户管理的加密密钥)。

  • 默认情况下,使用的服务帐号是具有对项目的编辑器访问权限并具有**cloud-platform范围的Compute Engine 默认帐号**。

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

  • 还可以与 Cloud SQL 建立连接挂载文件系统

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

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

枚举

# 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 服务不同,作业不应捆绑 Web 服务器。相反,作业容器应在完成任务后退出。

枚举

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