-
Notifications
You must be signed in to change notification settings - Fork 554
CDK Home CN
cdxy edited this page Jan 20, 2021
·
27 revisions
简体中文 | English
未经授权许可使用CDK攻击目标是非法的。 本程序应仅用于安全测试与研究目的。
CDK是一款为容器环境定制的渗透测试工具,在已攻陷的容器内部提供零依赖的常用命令及PoC/EXP。集成Docker/K8s场景特有的 逃逸、横向移动、持久化利用方式,插件化管理。
目前仍在施工中,欢迎 反馈 及建议 [email protected]。
将可执行文件投递到已攻入的容器内部开始使用
https://github.com/cdk-team/CDK/releases/
Container DucK
Zero-dependency docker/k8s penetration toolkit by <[email protected]>
Find tutorial, configuration and use-case in https://github.com/Xyntax/CDK/wiki
Usage:
cdk evaluate [--full]
cdk run (--list | <exploit> [<args>...])
cdk <tool> [<args>...]
Evaluate:
cdk evaluate Gather information to find weekness 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/Xyntax/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 (get|post) <url> <data> Make request to K8s api-server.
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.
CDK包括三个功能模块
- Evaluate: 容器内部信息收集,以发现潜在的弱点便于后续利用。
- Exploit: 提供容器逃逸、持久化、横向移动等利用方式。
- Tool: 修复渗透过程中常用的linux命令以及与Docker/K8s API交互的命令。
Usage
cdk evaluate [--full]
用于本地信息收集,寻找可用的逃逸点,使用 --full
参数时会包含本地文件扫描。
检测项
类别 | 检测点 | 已支持 | 详细文档 |
---|---|---|---|
本地信息收集 | OS基本信息 | ✔ | link |
本地信息收集 | 可用的Capabilities | ✔ | link |
本地信息收集 | 可用的Linux命令 | ✔ | link |
本地信息收集 | 挂载情况 | ✔ | link |
本地信息收集 | 网络namespace隔离情况 | ✔ | link |
本地信息收集 | 环境变量 | ✔ | link |
本地信息收集 | 敏感服务 | ✔ | link |
本地信息收集 | 敏感目录及文件 | ✔ | link |
本地信息收集 | kube-proxy边界绕过(CVE-2020-8558) | ✔ | |
网络探测 | K8s Api-server信息 | ✔ | link |
网络探测 | K8s Service-account信息 | ✔ | link |
网络探测 | 云厂商Metadata API | ✔ | link |
列举全部exp
cdk run --list
执行指定的exp
cdk run <script-name> [options]
列表
类别 | 功能 | 调用名 | 已支持 | 文档 |
---|---|---|---|---|
容器逃逸 | docker-runc CVE-2019-5736 | runc-pwn | ✔ | |
容器逃逸 | containerd-shim CVE-2020-15257 | shim-pwn | ✔ | link |
容器逃逸 | docker.sock逃逸PoC(docker-in-docker) | docker-sock-check | ✔ | link |
容器逃逸 | docker.sock部署恶意镜像 | docker-sock-deploy | ✔ | link |
容器逃逸 | 挂载逃逸(特权容器) | mount-disk | ✔ | link |
容器逃逸 | Cgroup逃逸(特权容器) | mount-cgroup | ✔ | link |
容器逃逸 | Procfs目录挂载逃逸 | mount-procfs | ✔ | link |
容器逃逸 | Ptrace逃逸PoC | check-ptrace | ✔ | link |
网络探测 | K8s组件探测 | service-probe | ✔ | link |
信息收集 | 检查和获取Istio元信息 | istio-check | ✔ | link |
远程控制 | 反弹shell | reverse-shell | ✔ | link |
信息窃取 | 扫描AK及API认证凭据 | ak-leakage | ✔ | link |
信息窃取 | 窃取K8s Secrets | k8s-secret-dump | ✔ | link |
信息窃取 | 窃取K8s Config | k8s-configmap-dump | ✔ | link |
持久化 | 部署WebShell | |||
持久化 | 部署后门Pod | k8s-backdoor-daemonset | ✔ | link |
持久化 | 部署影子K8s api-server | k8s-shadow-apiserver | ✔ | link |
持久化 | K8s MITM攻击(CVE-2020-8554) | k8s-mitm-clusterip | ✔ | link |
持久化 | 部署K8s CronJob |
还原部分常用的Linux命令,解决容器环境缩减的问题。参数略有不同,详见下面文档链接:
cdk nc [options]
cdk ps
列表
子命令 | 描述 | 已支持 | 详细文档 |
---|---|---|---|
nc | TCP隧道 | ✔ | link |
ps | 获取进程信息 | ✔ | link |
ifconfig | 获取网络信息 | ✔ | link |
vi | 文本编辑 | ✔ | link |
kcurl | 发包到K8s api-server | ✔ | link |
dcurl | 发包到Docker HTTP API | ||
ucurl | 发包到Docker Unix Socket | ✔ | link |
rcurl | 发包到Docker Registry API | ||
probe | IP/端口扫描 | ✔ | link |
kproxy | kubectl代理转发 |
- echo loader便于通过web RCE植入CDK
- EDR检测对抗
- 条件编译
- 开发文档