【云攻防系列】从攻击者视角聊聊K8S集群安全(下)
字数 1179 2025-08-12 11:34:19
Kubernetes集群安全攻防指南(下)
横向攻击
1. 攻击其他服务
-
发现内部服务:通过ClusterIP暴露的内部Service在集群外部不可见,但在内部pod中可通过以下方式发现:
- 扫描端口
- 查看环境变量(曾发现环境变量中包含mysql服务地址)
-
利用方式:
- 尝试弱口令登录发现的数据库服务
- 利用服务漏洞进行攻击
2. 攻击API Server
-
攻击原理:
- Pod与API Server通信使用ServiceAccount的token进行身份验证
- 如果Pod的ServiceAccount权限过大,可执行高权限操作
-
关键文件:
- Token路径:
/run/secrets/kubernetes.io/serviceaccount/token
- Token路径:
-
发现API Server地址:
- 通过Pod环境变量查看(如KUBERNETES_SERVICE_HOST)
-
补充:
- 攻击当前节点kubelet可使用docker0网桥IP:172.17.0.1
- 默认端口10250
3. 中间人攻击
- 攻击场景:
- 通过DNS劫持攻击其他Pod
- 利用K8S中间人漏洞(如CVE-2020-8554、CVE-2020-10749)
攻击K8S管理平台
-
常见管理平台:
- Dashboard
- Rancher
- KubeSphere
- KubeOperator
-
攻击方式:
- Dashboard未授权访问
- 弱口令登录
- 通过管理后台创建特权容器进行逃逸
-
安全建议:
- 管理平台应避免暴露在外网
攻击镜像库
1. 上传恶意镜像(镜像投毒)
- 恶意镜像类型:
- 恶意后门镜像:控制容器,反弹shell
- 恶意EXP镜像:包含容器逃逸EXP,获取宿主机控制权
2. 利用Nday攻击镜像库
-
常见镜像库漏洞:
- Harbor提权漏洞
- 用户名枚举漏洞(如CVE-2020-13794)
- SQL注入
- SSRF
- 未授权访问
-
Harbor漏洞示例:
- CVE-2020-13794(用户名枚举)验证方法:
curl -X GET "http://[victim-ip]/api/users/search?username=_" \ -H "accept: application/json" \ --user [已知用户名]:[密码] - 返回结果包含所有用户的id及username
- CVE-2020-13794(用户名枚举)验证方法:
攻击第三方组件
-
常见第三方组件:
- 服务网格(如Istio)
- API网关(如Apache APISIX)
-
攻击方式:
- 利用RCE漏洞(如Apache APISIX的RCE)
- 未授权访问漏洞
- 其他组件特定漏洞
防御建议
-
最小权限原则:
- 严格控制ServiceAccount权限
- 避免使用特权容器
-
安全加固:
- 及时更新组件补丁
- 禁用不必要的服务端口
-
访问控制:
- 管理平台实施严格访问控制
- 镜像库实施强认证机制
-
监控与审计:
- 监控异常API调用
- 审计容器创建行为
-
网络隔离:
- 实施网络策略限制Pod间通信
- 敏感服务实施网络隔离
-
镜像安全:
- 只使用可信镜像源
- 实施镜像扫描机制
-
纵深防御:
- 多层次安全防护
- 假设单层防御可能被突破