前言
突然诈尸
呆了一个月,随便写一点续一下
漏洞介绍
这个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的)
写在最后
最近颓废,溜了溜了