GCP - Containers & GKE Enum
容器
在 GCP 容器中,您可以找到大多数基于容器的服务 GCP 提供的服务,这里您可以看到如何枚举最常见的服务:
提权
在以下页面,您可以查看如何滥用容器权限来提升特权:
GCP - Container Privesc节点池
这些是形成 Kubernetes 集群的机器(节点)池。
Kubernetes
有关 Kubernetes 是什么的信息,请查看此页面:
Kubernetes Pentesting首先,您可以检查您的项目中是否存在任何 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
TLS引导特权升级
最初,此特权升级技术允许在GKE集群内部提升权限,有效地允许攻击者完全控制它。
这是因为GKE在元数据中提供了TLS引导凭据,任何人只要破坏一个pod就可以访问。
所使用的技术在以下帖子中有解释:
而这个工具是为了自动化这个过程而创建的:https://github.com/4ARMED/kubeletmein
然而,该技术滥用了使用元数据凭据可以为新节点生成CSR(证书签名请求),而这是自动批准的。 在我的测试中,我发现这些请求不再自动批准,所以我不确定这个技术是否仍然有效。
Kubelet API中的秘密
在这篇文章中发现了一个Kubelet API地址,可以从GKE中的一个pod内部访问,提供正在运行的pod的详细信息:
即使API不允许修改资源,仍有可能在响应中找到敏感信息。使用Kiterunner找到了端点/pods。
Last updated