前言

突然诈尸

呆了一个月,随便写一点续一下

漏洞介绍

这个API主要目的是取代命令行界面;Dcoker swarm是docker下的分布化应用的本地集群,开放2375监听容器时,会调用这个API,方便docker集群管理和扩展(绑定在0.0.0.0上,http会返回404page not fount)

漏洞检测

随手打了一个测试环境,挺简单的,装好docker以后修改一下配置文件就行了

这里就不去扫端口了,直接用goby扫一下:

emmm,gobyNB

这里通过访问http:ip:2375/version 也可以看到是开放了api的:

漏洞利用

首先需要再攻击机上安装docker,我这里已经装好了:

然后使用:docker -H tcp://ip:2375 images 查看该服务器上docker已有的镜像:

接下来,我们要将宿主机的根目录挂载到这个镜像下面:

docker -H tcp://ip:2375 run -it -v /:/mnt imageId /bin/bash

这里的:/:/mnt 也就是将宿主机的根目录 / 挂载到容器中的 /mnt 下挂载完以后,已经进入容器;

接下来看一下/mnt目录下是否有宿主机的根目录:

这样就已经挂载进容器了,接下来拿shell,既然已经有整个目录的读写权限了,那我们就有很多方法拿shell:

  • 写公钥:将自己的公钥写入到 authorized_keys
  • 写webshell:如果宿主机开放了web服务,且知道web目录,可以通过写webshell更进一步
  • 写定时任务:在系统中写入定时任务,反弹shell

这里因为是新开的一个服务器,所以就装了个docker,没法写webshell之类的,就用第一种方法写公钥:

然后使用我们自己的私钥进行登录:

这里看到已经ssh远程登陆到宿主机了:

这就是第一种方法,挺简单的

解决办法

  • 设置ACL,只允许信任的IP端口连接对应端口
  • 开启TLS,使用生成的证书进行认证

(办法眼熟很正常,C的)

写在最后

最近颓废,溜了溜了

最后修改:2020 年 10 月 23 日
如果觉得我的文章对你有用,请随意赞赏