GCP - Containers & GKE Enum
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
在 GCP 容器中,您可以找到 GCP 提供的大多数基于容器的服务,以下是如何枚举最常见的服务:
在以下页面中,您可以查看如何滥用容器权限以提升特权:
这些是形成Kubernetes集群的机器(节点)池。
有关Kubernetes的信息,请查看此页面:
首先,您可以检查您的项目中是否存在任何Kubernetes集群。
如果您确实有一个集群,您可以让 gcloud
自动配置您的 ~/.kube/config
文件。此文件用于在您使用 kubectl 时进行身份验证,kubectl 是与 K8s 集群交互的本地 CLI。尝试此命令。
然后,查看 ~/.kube/config
文件以查看生成的凭据。此文件将用于根据您的活动 gcloud
会话所使用的相同身份自动刷新访问令牌。这当然需要正确的权限设置。
设置完成后,您可以尝试以下命令以获取集群配置。
您可以在 这里 阅读有关 gcloud
的更多信息。
这是一个用于枚举 GCP 中 Kubernetes 的简单脚本:https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum
最初,这种特权提升技术允许在 GKE 集群内部进行 privesc,有效地允许攻击者 完全控制它。
这是因为 GKE 在元数据中提供了 TLS 启动凭据,任何人只需破坏一个 pod 就可以访问。
所使用的技术在以下帖子中进行了说明:
而且这个工具是为了自动化这个过程而创建的:https://github.com/4ARMED/kubeletmein
然而,这种技术利用了 凭借元数据凭据 可以 生成 CSR(证书签名请求)用于 新节点 的事实,而该请求是 自动批准的。 在我的测试中,我检查到 这些请求不再自动批准,所以我不确定这种技术是否仍然有效。
在 这篇文章 中发现了一个可以从 GKE 中的 pod 访问的 Kubelet API 地址,提供了正在运行的 pods 的详细信息:
即使API 不允许修改资源,也可能在响应中找到 敏感信息。使用 Kiterunner 找到了端点 /pods。
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)