CSDN云上容器 ATT&CK 矩阵详解,阿里云助力企业容器化安全落地( 二 )


示例:阿里云容器服务K8s configfile:
CSDN云上容器 ATT&CK 矩阵详解,阿里云助力企业容器化安全落地
本文插图
1.5 Docker daemon公网暴露
Docker以client-server模式工作 , 其中docker daemon服务在后台运行 , 负责管理容器的创建、运行和停止操作 , 并提供docker许多其他运行时功能 。 执行docker命令会调用一个客户端 , 该客户端通过Docker的REST API将命令发送到服务端(docker daemon) 。
在Linux主机上 , docker daemon监听它在/var/run/docker.sock中创建的unix socket 。 为了使docker daemon可管理 , 可以通过配置TCP socket将其暴露在网络中 , 一般情况下2375端口用于未认证的HTTP通信 , 2376用于可信的HTTPS通信 。
如果管理员测试业务时配置不当导致docker.sock通过2375暴露在公网 , 攻击者即可通过该API接管docker服务 。
示例:Docker daemon的2375端口的暴露:
docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock1.6 容器内应用漏洞入侵
同主机安全一样 , 容器中运行的应用侧漏洞(如WEB应用RCE漏洞、Redis未授权访问等)也会成为黑客的突破口 , 攻击者可以利用这些漏洞进入容器内部并发起进一步攻击 。
1.7 Master节点SSH登录凭证泄露
常见的容器集群管理方式是通过登录Master节点或运维跳板机 , 然后再通过kubectl命令工具来控制k8s 。 在此情况下 , 前置节点的SSH凭证泄露或被攻破也会使K8s集群暴露在风险中 。
CSDN云上容器 ATT&CK 矩阵详解,阿里云助力企业容器化安全落地
本文插图
1.8 私有镜像库暴露
在容器化应用场景中 , 公司使用镜像来进行持续集成和自动化部署 , 这些镜像往往通过专用的私有镜像库来管理 。 暴露在公网的私有镜像库极有可能遭受攻击者入侵 , 并通过劫持供应链来渗透下游业务 。
以Harbor为例 , Harbor是一个用于存储和分发Docker镜像的企业级Registry开源服务器 , 集成了Docker Hub、Docker Registry、谷歌容器等 。 它提供了一个简单的GUI , 允许用户根据自己的权限下载、上传和扫描镜像 。 在过去的数年里 , Harbor逐渐受到人们的关注并成为CNCF的孵化项目 , 被企业广泛应用 。 Harbor在2019年披露了一个严重漏洞CVE-2019-16097 , 该漏洞允许攻击者通过发送恶意请求以管理员权限创建用户 , 从而接管Harbor 。 该漏洞利用方式简单 , 对暴露在公网的Harbor服务构成较大威胁 。
2.Execution/执行
2.1 通过kubectl进入容器
Kubectl是一个管理k8s集群的命令行工具 , kubectl在$HOME/.kube目录中寻找一个名为config的文件并连接API Server进行鉴权操作 。 攻击者可以通过kubectl exec指令在任意pod内部执行命令 。
示例:kubectl exec进入pod内部执行指令:
xy@x-8 ~/D/t/K8s_demo> kubectl get podNAME READY STATUS RESTARTS AGEapp-1-wp-0 1/1 Running 0 182dapp-1-wp-1 1/1 Running 0 182dmyapp 1/1 Running 0 11dmyappnew 1/1 Running 0 11dxy@x-8 ~/D/t/K8s_demo> kubectl exec -it myappnew /bin/bashroot@myappnew:/# whoamiroot2.2 创建后门容器
攻击者可通过拥有pods权限的用户创建基础镜像并利用其执行后续渗透操作 。
示例:通过yaml文件创建pod , 并将pod的根目录/挂载到容器/mnt目录下 , 操作宿主机文件:
xy@x-8 ~/D/test> cat mymaster.yamlapiVersion: v1kind: Podmetadata: name: myappnewspec: containers: - image: nginx name: container volumeMounts: - mountPath: /mnt name: test-volume volumes: - name: test-volume hostPath: path: /xy@x-8 ~/D/test> kubectl create -f ~/Desktop/test/mymaster.yamlpod/myappnew createdxy@x-8 ~/D/test> kubectl exec -it myappnew /bin/bashroot@myappnew:/# cd /mntroot@myappnew:/mnt# lsbin checkapp etc lib lost+found mnt proc run srv tmp varboot dev home lib64 media opt root sbin sys usr


推荐阅读