首页 渗透工具 正文

K8sPenTool:一款覆盖完整攻击链的 Kubernetes 渗透测试图形化工具

摘要

随着云原生架构的普及,Kubernetes 集群的安全问题越来越受到关注。APIServer 未授权访问、Kubelet 配置不当、特权容器滥用……这些常见风险点散落在渗透流程的各个环节,安全研究人员往往需要在多条命令和多个工具之间来回切换。K8sPenTool 正是为解决这一痛点而生的 K8s 渗透测试工具——它把常见的 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 权限检查。

K8sPenTool 命令执行模块:通过 APIServer exec 在 Pod 中执行命令

权限维持:一键创建高权限服务账号

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

K8sPenTool 权限维持模块:创建高权 ServiceAccount 与 ClusterRoleBinding

kubectl 操作面板:图形化的集群管理入口

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

K8sPenTool 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 或参与贡献:

评论
博主关闭了评论
友情链接