GCP - 容器与 GKE 枚举
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
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
容器
在 GCP 容器中,您可以找到 GCP 提供的大多数基于容器的服务,您可以在这里查看如何枚举最常见的服务:
gcloud container images list
gcloud container images list --repository us.gcr.io/<project-name> #Search in other subdomains repositories
gcloud container images describe <name>
gcloud container subnets list-usable
gcloud container clusters list
gcloud container clusters describe <name>
gcloud container clusters get-credentials [NAME]
# Run a container locally
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh
# Login & Download
sudo docker login -u oauth2accesstoken -p $(gcloud auth print-access-token) https://HOSTNAME
## where HOSTNAME is gcr.io, us.gcr.io, eu.gcr.io, or asia.gcr.io.
sudo docker pull HOSTNAME/<project-name>/<image-name>
Privesc
在以下页面中,您可以查看如何滥用容器权限以提升特权:
Node Pools
这些是形成 Kubernetes 集群的机器(节点)池。
# Pool of machines used by the cluster
gcloud container node-pools list --zone <zone> --cluster <cluster>
gcloud container node-pools describe --cluster <cluster> --zone <zone> <node-pool>
Kubernetes
有关 Kubernetes 的信息,请查看此页面:
首先,您可以检查您的项目中是否存在任何 Kubernetes 集群。
gcloud container clusters list
如果您有一个集群,您可以让 gcloud 自动配置您的 ~/.kube/config 文件。此文件用于在您使用 kubectl 时进行身份验证,kubectl 是与 K8s 集群交互的原生 CLI。尝试这个命令。
gcloud container clusters get-credentials [CLUSTER NAME] --region [REGION]
然后,查看 ~/.kube/config 文件以查看生成的凭据。此文件将用于根据您的活动 gcloud 会话使用的相同身份自动刷新访问令牌。这当然需要正确的权限设置。
设置完成后,您可以尝试以下命令以获取集群配置。
kubectl cluster-info
您可以在 这里 阅读有关 gcloud 的更多信息。
这是一个用于枚举 GCP 中 Kubernetes 的简单脚本:https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum
TLS 启动特权提升
最初,这种特权提升技术允许在 GKE 集群内部进行 privesc,有效地允许攻击者 完全控制它。
这是因为 GKE 在元数据中提供了 TLS 启动凭据,任何人只需破坏一个 pod 就可以 访问。
所使用的技术在以下帖子中进行了说明:
- https://www.4armed.com/blog/hacking-kubelet-on-gke/
- https://www.4armed.com/blog/kubeletmein-kubelet-hacking-tool/
- https://rhinosecuritylabs.com/cloud-security/kubelet-tls-bootstrap-privilege-escalation/
而且这个工具是为了自动化这个过程而创建的:https://github.com/4ARMED/kubeletmein
然而,这种技术利用了 元数据凭据 的事实,可以为 新节点 生成 CSR(证书签名请求),该请求是 自动批准的。
在我的测试中,我检查了 这些请求不再自动批准,所以我不确定这种技术是否仍然有效。
Kubelet API 中的秘密
在 这篇文章 中发现了一个 Kubelet API 地址,可以从 GKE 中的 pod 访问,提供正在运行的 pods 的详细信息:
curl -v -k http://10.124.200.1:10255/pods
即使API 不允许修改资源,也可能在响应中找到 敏感信息。使用 Kiterunner 找到了端点 /pods。
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
- 查看 subscription plans!
- 加入 💬 Discord group 或者 telegram group 或 关注 我们的 Twitter 🐦 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud github 仓库 提交 PRs 来分享 hacking tricks。
HackTricks Cloud

