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