GCP Pentesting
基本信息
在开始进行GCP环境的pentesting之前,您需要了解一些基本知识,以帮助您理解需要做什么、如何查找错误配置以及如何利用它们。
诸如组织层次结构、权限和其他基本概念在以下内容中进行了说明:
学习实验室
GCP Pentester/Red Team 方法论
为了审计GCP环境,了解以下内容非常重要:使用了哪些服务,什么是被暴露的,谁对什么有访问权限,以及内部GCP服务与外部服务是如何连接的。
从Red Team的角度来看,攻陷GCP环境的第一步是设法获取一些凭证。以下是一些获取凭证的想法:
在github(或类似平台)中的泄露 - OSINT
社交工程(查看页面 Workspace Security)
密码重用(密码泄露)
GCP托管应用中的漏洞
服务器端请求伪造 访问元数据端点
本地文件读取
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
第三方被攻破
内部员工
或者通过攻陷一个未认证的服务:
或者如果您正在进行审查,您可以直接请求凭证,使用这些角色:
在您成功获取凭证后,您需要知道这些凭证属于谁,以及他们可以访问什么,因此您需要进行一些基本的枚举:
基本枚举
SSRF
有关如何枚举GCP元数据的更多信息,请查看以下hacktricks页面:
Whoami
在GCP中,您可以尝试几种选项来猜测您是谁:
您还可以使用 API 端点 /userinfo
获取有关用户的更多信息:
组织枚举
Principals & IAM Enumeration
如果您拥有足够的权限,检查 GCP 账户内每个实体的权限将帮助您了解您和其他身份可以做什么,以及如何提升权限。
如果您没有足够的权限来枚举 IAM,您可以通过暴力破解来获取它们。 查看如何进行枚举和暴力破解:
现在您已经获得了一些关于您的凭据的信息(如果您是红队,希望您没有被检测到)。是时候找出环境中正在使用哪些服务。 在接下来的部分中,您可以查看一些枚举常见服务的方法。
Services Enumeration
GCP 拥有惊人的服务数量,在以下页面中,您将找到基本信息、枚举备忘单,如何避免检测,获取持久性以及其他关于其中一些服务的后期利用技巧:
请注意,您不需要手动执行所有工作,下面的帖子中您可以找到关于自动工具的部分。
此外,在此阶段,您可能会发现**更多暴露给未认证用户的服务,**您可能能够利用它们:
Privilege Escalation, Post Exploitation & Persistence
一旦您获得了一些云凭据或已妥协某个在云中运行的服务,最常见的方法是滥用被妥协账户可能拥有的错误配置权限。因此,您应该做的第一件事是枚举您的权限。
此外,在此枚举过程中,请记住权限可以在“组织”的最高级别设置。
Publicly Exposed Services
在枚举 GCP 服务时,您可能发现其中一些向互联网暴露元素(VM/容器端口、数据库或队列服务、快照或存储桶...)。 作为渗透测试者/红队成员,您应该始终检查是否可以在它们上找到敏感信息/漏洞,因为它们可能为您提供进一步访问 AWS 账户的机会。
在本书中,您应该找到关于如何查找暴露的 GCP 服务以及如何检查它们的信息。关于如何查找暴露的网络服务中的漏洞,我建议您搜索特定的服务:
GCP <--> Workspace Pivoting
妥协一个平台中的主体可能允许攻击者妥协另一个平台,请查看:
Automatic Tools
在GCloud 控制台中,您可以在 https://console.cloud.google.com/iam-admin/asset-inventory/dashboard 查看项目使用的资源和 IAM。
在这里,您可以查看此 API 支持的资产:https://cloud.google.com/asset-inventory/docs/supported-asset-types
检查可以在多个云中使用的工具。
gcp_scanner:这是一个 GCP 资源扫描器,可以帮助确定某些凭据在 GCP 上拥有的访问级别。
gcp_enum: Bash脚本,用于使用gcloud cli枚举GCP环境并将结果保存到文件中。
GCP-IAM-Privilege-Escalation: 脚本用于枚举高IAM权限并在GCP中利用这些权限提升权限(我无法运行枚举脚本)。
BF My GCP Permissions: 脚本用于暴力破解您的权限。
gcloud config & debug
捕获 gcloud, gsutil... 网络
请记住,您可以使用 参数 --log-http
与 gcloud
cli 一起 打印 工具正在执行的 请求。如果您不希望日志中遮蔽令牌值,请使用 gcloud config set log_http_redact_token false
此外,要拦截通信:
在 gcloud 中配置 OAuth 令牌
为了使用从元数据端点提取的服务帐户 OAuth 令牌,您可以这样做:
参考
Last updated