
Kubestriker是一款针对Kubernetes的快速安全审计工具,Kubestriker可以对Kubernetes的infra容器执行大量深入检测,以帮助研究人员识别其中存在的安全错误配置以及其他安全问题。这些安全问题可能是工程师或开发人员在使用Kubernetes会遇到的,尤其是在大规模生成环境之中,一个小小的安全问题可能会带来严重的安全风险。
Kubestriker不依赖于特定平台运行,它可以在多个平台上工作,比如说自托管的Kubernetes、Amazon EKS、Azure AKS和Google GKE等。

扫描自管理和云提供商管理的Kubernetes infra; 各种服务或开放端口的网络侦察阶段扫描; 如果启用了不安全的读写或只读服务,则执行自动扫描; 执行验证扫描和未验证扫描; 扫描群集中的各种IAM错误配置; 扫描各种包含错误配置的容器; 扫描各种包含错误配置的Pod安全策略; 扫描各种错误配置的网络策略; 扫描群集中某个主题的权限; 在容器上运行命令并返回输出; 提供包含错误配置的服务的终端节点; 提供可能的权限提升详细信息; 详细的扫描报告;
在安装该工具或克隆并运行该应用程序之前,我们需要在本地安装好Git、Python 3和pip。我们建议广大研究人员在虚拟环境中安装和使用该工具。
接下来,我们可以在命令行工具中运行下列命令。
创建Python虚拟环境:
$ python3 -m venv env激活Python虚拟环境:
$ source env/bin/activate克隆项目代码库:
$ git clone https://github.com/vchinnipilli/kubestriker.git切换至项目目录:
$ cd kubestriker安装依赖组件:
$ pip install -r requirements.txt避免弹出错误提醒:
$ pip install prompt-toolkit==1.0.15
$ pip install -r requirements.txt部署Kubestriker:
$ python -m kubestriker此时,我们将能够看到当前工作目录中已经生成了工具实例。
为了安装并运行Kubestriker,我们需要在本地系统上安装好pip工具。接下来,我们可以在命令行工具中运行下列命令。
创建Python虚拟环境:
$ python3 -m venv env激活Python虚拟环境:
$ source env/bin/activate使用pip安装Kubestriker:
$ pip install kubestriker避免弹出错误提醒:
$ pip install prompt-toolkit==1.0.15
$ pip install kubestriker部署Kubestriker:
$ python -m kubestriker此时,我们将能够看到当前工作目录中已经生成了工具实例。
点击底部【阅读原文】获取Kubestriker容器的最新发布版本。
配置Kubestriker容器:
$ docker run -it --rm -v /Users/vasantchinnipilli/.kube/config:/root/.kube/config -v "$(pwd)":/kubestriker --name kubestriker cloudsecguy/kubestriker:v1.0.0将上述命令中的用户vasantchinnipilli 替换成你自己的用户名,并修改Kube配置文件的绝对路径:
$ docker run -it --rm -v /Users/<yourusername>/.kube/config:/root/.kube/config -v "$(pwd)":/kubestriker --name kubestriker cloudsecguy/kubestriker:v1.0.0部署Kubestriker:
$ python -m kubestriker此时,我们将能够看到当前工作目录中已经生成了工具实例。

认证扫描要求用户至少具有只读权限,并在扫描期间提供令牌。请使用下面提供的链接创建只读用户:
Amazon EKS只读权限用户创建:点击底部【阅读原文】获取
Azure AKS只读权限用户创建:点击底部【阅读原文】获取
Google GKE只读权限用户创建:点击底部【阅读原文】获取
使用基于访问控制的角色创建一个主题:点击底部【阅读原文】获取
从EKS集群获取一个令牌:
$ aws eks get-token --cluster-name cluster-name --region ap-southeast-2从AKS集群获取一个令牌:
$ az aks get-credentials --resource-group myResourceGroup --name myAKSCluster从GKE集群获取一个令牌:
$ gcloud container clusters get-credentials CLUSTER_NAME --zone=COMPUTE_ZONE从服务账号获取一个令牌:
$ kubectl -n namespace get secret serviceaccount-token -o jsonpath='{.data.token}'从一个Pod直接获取令牌或通过命令行执行漏洞获取令牌:
$ cat /run/secrets/kubernetes.io/serviceaccount/token如果允许对目标群集进行匿名访问,则可以对目标执行未认证扫描。
识别Kubernetes主节点上开放的不安全端口:

使用kubelet读写和只读开放端口来识别Worker节点:

本项目的开发与发布遵循Apache开源许可证协议。
Kubestriker:点击底部【阅读原文】获取