你有没有遇到过这样的场景?
收到告警说集群被入侵了,打开审计日志,什么都没记录。
或者,某个业务Pod被攻破后,攻击者顺着ServiceAccount一路提到了集群管理员权限。
问题的根源不在"不知道",而在于没有亲手验证过。
本文通过一套完整的K8s漏洞靶场,带你从攻击者的视角走一遍真实攻击链。
一、为什么需要实战靶场?
K8s安全的难点:攻击是一条链,不是一个点。
一个典型路径:RCE进Pod → ServiceAccount提权 → 特权容器逃逸 → 窃取云凭证 → 横向移动。
实战靶场让你亲手走通攻击链,再亲手堵住缺口。
二、精选靶场与工具
Kubepwn:基于Kind的本地靶场,预置容器逃逸、RBAC提权、RCE等场景。自带Falco+Loki+Grafana监控栈。
⚠️ 仅限教育环境
Kubernetes Goat:21种攻击手法的详细文档,适合初学者。
kube-bench:CIS基准扫描,把模糊风险变成可量化的检查项。
三、三大风险实战训练
🔴 RBAC权限配置不当
模拟:创建高权限SA → 调用API Server列举Secret → 获取凭证 → 创建特权Pod。
防御:用Role/RoleBinding限定namespace;定期review权限;用Gatekeeper禁止cluster-admin绑定。
🔴 审计日志缺失
模拟:在Kubepwn中执行攻击,看Falco捕获了什么、Loki漏掉了什么。
防御:启用审计日志,重点记录pods/exec、secrets、rbac变更;采集到Loki/ES;建立异常检测规则。
🔴 容器逃逸
三种路径:
-
特权容器挂载宿主机根目录:
chroot /host -
通过docker.sock在宿主机创建容器
-
利用运行时CVE(如CVE-2024-21626)
防御:强制Pod Security Standards的Restricted策略;部署Falco监控unshare、mount、chroot;启用Seccomp/AppArmor。
四、快速启动
# 部署Kubepwn
git clone https://github.com/alejandrox1/kubepwn.git && cd kubepwn
python3 deploy.py
# kube-bench扫描
docker run --pid=host -v /etc:/etc:ro -v /var:/var:ro aquasec/kube-bench:latest
学习顺序:Secret窃取 → RBAC提权 → 容器逃逸 → 持久化后门
⚠️ 免责声明
本文仅供教育和授权测试使用。
💬 你在K8s安全中踩过哪些坑?评论区聊聊。