Docker逃逸漏洞复现(CVE-2019-5736)
因为Docker所使用的是隔离技术,就导致了容器内的进程无法看到外面的进程,但外面的进程可以看到里面,所以如果一个容器可以访问到外面的资源,甚至是获得了宿主主机的权限,这就叫做“Docker逃逸”。
Ubuntu安装指定版本的docker
sudo apt-get installdocker-ce=18.03.0~ce-0~ubuntu
报错:
E: Version '18.03.0~ce-0~ubuntu' for 'docker-ce'was not found
sudo apt-get update sudo apt-get install apt-transport-httpsca-certificates curl software-properties-common curl -fsSLhttps://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64]https://download.docker.com/linux/ubuntu xenial stable"
查看可用的docker版本:
apt-cache madison docker-ce
输出结果:
sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu
随便起个服务
dockersearch redis
dockerpull redis dockerrun -p 6379:6379 -d redis
Docker容器进入
安装go环境编译payload
下载go环境
wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz
解压 tar -C /usr/local -zxvf go1.11.5.linux-amd64.tar.gz 添加环境变量 vim/etc/profile 最后一行添加 export GOROOT=/usr/local/go exportPATH=$PATH:$GOROOT/bin 保存 source/etc/profile cat/proc/1/cgroup
CGO_ENABLED=0GOOS=linux GOARCH=amd64 go build main.go
上传脚本到docker里面
dockercp /root/main 7529741a9265: /root/main
模拟黑客运行payload