K8sPenTool:一款覆盖完整攻击链的 Kubernetes 渗透测试图形化工具
随着云原生架构的普及,Kubernetes 集群的安全问题越来越受到关注。APIServer 未授权访问、Kubelet 配置不当、特权容器滥用……这些常见风险点散落在渗透流程的各个环节,安全研究人员往往需要在多条命令和多个工具之间来回切换。K8sPenTool 正是为解决这一痛点而生的 K8s 渗透测试工具——它把常见的 Kubernetes 攻击链整合进一个基于 JavaFX 的图形界面,从信息收集一路覆盖到横向移动,让 K8s 安全评估变得直观高效。
本文将从功能模块、技术架构、部署方式等角度,完整介绍这款开源的 Kubernetes 安全测试工具,帮助安全从业者快速上手。
产品介绍:什么是 K8sPenTool
K8sPenTool 是一款面向安全研究人员的 Kubernetes 综合利用 GUI 工具。它将容器环境探测、未授权访问检测、命令执行、权限维持、容器逃逸、横向移动等渗透测试环节,封装为统一的可视化操作面板,使用者无需记忆繁杂的 kubectl 参数和 API 调用方式,在界面上填写目标地址、Token 等参数即可完成对应操作。
工具的设计目标很明确:把 K8s 渗透测试中重复性高、步骤繁琐的工作交给图形界面,让研究人员把精力集中在对集群安全边界的判断上。
核心功能:七大模块覆盖 K8s 攻击全流程
K8sPenTool 按照标准渗透测试流程划分了七个功能模块,各环节环环相扣,构成一条完整的 Kubernetes 攻击链。
| 功能模块 | 主要能力 |
|---|---|
| 🔍 信息收集 | 容器环境识别、特权检测、Capability 解码、K8s 端口扫描、SA Token 枚举 |
| 🚪 初始访问 | APIServer 未授权检测、Kubelet API 利用、Etcd 未授权访问、Dashboard 检测、Kubeconfig 解析 |
| ⚡ 命令执行 | APIServer / Kubelet exec、后门 Pod 部署、反弹 Shell 生成、RBAC 权限检查 |
| 🔒 权限维持 | 高权限 ServiceAccount 创建、CronJob / DaemonSet 持久化、影子 Kubeconfig、宿主机持久化 |
| 🔓 权限提升 | 特权容器逃逸、挂载逃逸(procfs / docker.sock / disk)、内核漏洞利用 |
| 🌐 横向移动 | Secret 窃取、集群内网探测、基于污点容忍的横向扩展 |
| 🛠 kubectl 操作 | 常用 kubectl 快捷命令、自定义命令执行、后门 Pod 管理 |
命令执行:直连 APIServer 操作 Pod
命令执行模块支持通过 APIServer(6443 端口)或 Kubelet 在目标 Pod 中执行命令,可列出集群内所有 Pod,点击表格行自动填充命名空间、Pod 与容器名,执行结果实时回显。此外还支持一键部署后门 Pod、生成反弹 Shell 以及 RBAC 权限检查。

权限维持:一键创建高权限服务账号
权限维持模块可以生成高权限 ServiceAccount 与 ClusterRoleBinding 的 YAML 清单并一键部署,还支持通过 CronJob、DaemonSet 实现持久化,以及影子 Kubeconfig、宿主机持久化等隐蔽驻留手段,帮助评估集群在失陷后的长期风险。

kubectl 操作面板:图形化的集群管理入口
kubectl 操作模块内置了查看 Nodes、Pods、镜像、Services、Secrets、Deployments 等资源的快捷按钮,并提供查看权限、查看 SA、ClusterRoleBindings、部署与删除后门 Pod 等高级功能,同时支持自定义 kubectl 命令与参数,相当于在工具内部集成了一个可视化的 kubectl 终端。

技术优势:轻量、跨平台的 JavaFX 架构
与常见的 Python 或 Go 系安全工具不同,K8sPenTool 选择 Java 技术栈实现,在工程结构上做了清晰的模块拆分:
- 运行环境:Java 17+ / JavaFX 17,跨平台运行,Windows、Linux、macOS 均可使用
- 构建方式:Maven 管理依赖,通过 maven-shade-plugin 打包为单个 Fat JAR,开箱即用
- 数据处理:使用 Gson 进行 JSON 解析,处理 K8s API 返回的结构化数据
- 代码结构:界面层(FXML)与业务逻辑分离,MainController 作为薄委托层,各渗透模块由独立 Handler 实现,便于二次开发与功能扩展
项目结构清晰,主要目录如下:
K8sPenTool/
├── pom.xml # Maven 配置
├── src/main/java/
│ ├── module-info.java
│ └── com/k8spen/tool/
│ ├── Main.java # JavaFX Application 入口
│ ├── Launcher.java # 启动器 (shade 兼容)
│ ├── controller/
│ │ ├── MainController.java # FXML 聚合控制器 (薄委托层)
│ │ ├── ControllerContext.java# 共享上下文与工具方法
│ │ ├── InfoHandler.java # 信息收集
│ │ ├── AccessHandler.java # 初始访问
│ │ ├── ExecHandler.java # 命令执行
│ │ ├── PersistHandler.java # 权限维持
│ │ ├── EscapeHandler.java # 权限提升
│ │ ├── LateralHandler.java # 横向移动
│ │ └── KubectlHandler.java # kubectl 操作
│ └── helper/
│ ├── K8sHttpUtil.java # HTTP 请求工具
│ ├── PodTableItem.java # Pod 表格数据模型
│ └── SecretTableItem.java # Secret 表格数据模型
├── src/main/resources/
│ └── gui.fxml # 界面布局
└── img/ # 截图目录
部署教程:三步完成编译运行
环境要求
- JDK 17 或更高版本
- Maven 3.6+
克隆与打包
git clone https://github.com/trymonoly/K8sPenTool.git
cd K8sPenTool
mvn clean package
启动工具
java -jar target/k8s-pen-tool-1.0.0.jar
如果系统的 java 命令不在 PATH 环境变量中,使用 JDK 的完整路径启动即可:
/path/to/jdk-17/bin/java -jar target/k8s-pen-tool-1.0.0.jar
启动后在顶部目标配置区填写目标集群地址、超时时间、Token 等参数,即可按需切换各功能模块开始测试。
应用场景
- 企业自查:云原生团队在集群上线前,用它模拟攻击者视角检验 APIServer、Kubelet、Etcd 等组件的暴露面
- 渗透测试:红队在授权测试中快速完成从入口点到横向移动的链路验证,减少手工敲命令的时间成本
- 安全研究:作为 Kubernetes 攻击手法的集成演示平台,用于学习容器逃逸、RBAC 提权、Secret 窃取等经典技术
- 防守验证:蓝队借助工具复现攻击行为,检验监控告警体系对异常 Pod 创建、高权账号授予等行为的识别能力
总结
K8sPenTool 把分散的 Kubernetes 渗透手法收敛进一个图形界面,七个模块对应一条完整攻击链,对从事 K8s 安全研究和云原生攻防的从业者来说,是一款值得收藏的效率工具。项目已在 GitHub 开源,感兴趣的读者可以访问仓库获取源码、提交 Issue 或参与贡献: