【云攻防系列】从攻击者视角聊聊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
  • 发现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
  • 攻击方式

    1. Dashboard未授权访问
    2. 弱口令登录
    3. 通过管理后台创建特权容器进行逃逸
  • 安全建议

    • 管理平台应避免暴露在外网

攻击镜像库

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

攻击第三方组件

  • 常见第三方组件

    • 服务网格(如Istio)
    • API网关(如Apache APISIX)
  • 攻击方式

    • 利用RCE漏洞(如Apache APISIX的RCE)
    • 未授权访问漏洞
    • 其他组件特定漏洞

防御建议

  1. 最小权限原则

    • 严格控制ServiceAccount权限
    • 避免使用特权容器
  2. 安全加固

    • 及时更新组件补丁
    • 禁用不必要的服务端口
  3. 访问控制

    • 管理平台实施严格访问控制
    • 镜像库实施强认证机制
  4. 监控与审计

    • 监控异常API调用
    • 审计容器创建行为
  5. 网络隔离

    • 实施网络策略限制Pod间通信
    • 敏感服务实施网络隔离
  6. 镜像安全

    • 只使用可信镜像源
    • 实施镜像扫描机制
  7. 纵深防御

    • 多层次安全防护
    • 假设单层防御可能被突破
Kubernetes集群安全攻防指南(下) 横向攻击 1. 攻击其他服务 发现内部服务 :通过ClusterIP暴露的内部Service在集群外部不可见,但在内部pod中可通过以下方式发现: 扫描端口 查看环境变量(曾发现环境变量中包含mysql服务地址) 利用方式 : 尝试弱口令登录发现的数据库服务 利用服务漏洞进行攻击 2. 攻击API Server 攻击原理 : Pod与API Server通信使用ServiceAccount的token进行身份验证 如果Pod的ServiceAccount权限过大,可执行高权限操作 关键文件 : Token路径: /run/secrets/kubernetes.io/serviceaccount/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(用户名枚举)验证方法: 返回结果包含所有用户的id及username 攻击第三方组件 常见第三方组件 : 服务网格(如Istio) API网关(如Apache APISIX) 攻击方式 : 利用RCE漏洞(如Apache APISIX的RCE) 未授权访问漏洞 其他组件特定漏洞 防御建议 最小权限原则 : 严格控制ServiceAccount权限 避免使用特权容器 安全加固 : 及时更新组件补丁 禁用不必要的服务端口 访问控制 : 管理平台实施严格访问控制 镜像库实施强认证机制 监控与审计 : 监控异常API调用 审计容器创建行为 网络隔离 : 实施网络策略限制Pod间通信 敏感服务实施网络隔离 镜像安全 : 只使用可信镜像源 实施镜像扫描机制 纵深防御 : 多层次安全防护 假设单层防御可能被突破