CVE-2019-5736 runc容器逃逸漏洞复现

  • 2019 年 10 月 6 日
  • 筆記

0X1 漏洞详情

Docker、containerd或者其他基于runc的容器运行时存在安全漏洞,攻击者可以通过特定的容器镜像或者exec操作可以获取到宿主机的runc执行时的文件句柄并修改掉runc的二进制文件,从而获取到宿主机的root执行权限。

0X2影响范围:Docker版本 < 18.09.2 或者使用 runc版本 <= 1.0-rc6的环境,请自行根据厂商建议进行修复。

0X3 漏洞复现

首先搭建环境,由于Kali和Ubuntu已经安装了docker,因此重新安装漏洞版本比较麻烦,所以直接使用网上已有的环境进行复现。

kali上下载github源文件,链接是:

https://github.com/agppp/cve-2019-5736-poc

查看文件:

编辑stage2.c文件,修改shell代码,设置反弹到本地的ip和端口:

编译环境:docker build cve .

这个过程会慢一些,等待。。。

然后运行命令:docker run -d cve /bin/bash -c "tail -f /dev/null"

备份docker-runc文件,在kali下该文件目录在/usr/sbin/目录下:

然后进入容器内:

到root目录下,运行run.sh脚本

kali下开启另一个终端进行端口监听:

退出容器然后再重新进入容器,漏洞被触发,shell反弹过来

至此,漏洞复现完毕!

0X4 漏洞修复

升级docker或者runC