Docker未授权访问漏洞

一、漏洞介绍

1.1 漏洞成因

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

1.2 漏洞概况

fofa搜索全国端口占有概况:
在这里插入图片描述

二、攻击过程

2.1 信息收集

》》nmap探测是否开放此端口(略)

渗透测试时进行全端口扫描,单一测试时直接-p 2379

2.2 漏洞探测

》》如果访问如下页面,返回一个json格式的值{“message”:“page not found”}即存在漏洞:(或者使用客户端的远程访问查看,方法在2.3 漏洞利用中可看到)
在这里插入图片描述

》》浏览器访问查看目标的基本信息

<ip>:2379/version
<ip>:2379/info

在这里插入图片描述

2.3 漏洞利用

》》首先自己的公网V屁S上需要有docker客户端(安装略)

# 然后通过docker client执行目标服务器容器命令

》》列出当前所有镜像
在这里插入图片描述
》》列出所有容器
在这里插入图片描述
》》启动宿主机的镜像,并将该宿主机的根目录挂在早容器的/mnt目录下(启动之后就会获得一个docker 容器shell)

docker -H tcp://<ip>:2375 run -it -v /:/mnt <Image ID> /bin/bash

(这里可以看到对方操作系统是Ubuntu)
在这里插入图片描述

由于很多命令都不可用,比如ifconfig、netstat这里我们需要进行一个服务器提权,提到宿主机的权限,使用的方法是公私钥提权登录

》》攻击者v屁s上生成一对公私钥

》》ssh-keygen -t rsa
》》输入密钥名
》》输入密码

》》查看并复制服务器公钥
在这里插入图片描述

Tips:复制时注意到最后一个字符,防止复制到空格之类的,粘贴时自动换行

》》进入到victim挂在的目录下(/mnt/root)
在这里插入图片描述
》》进入.ssh目录,查看是否有公钥存在(如果有则将之前的公钥进行重定向覆盖)
在这里插入图片描述

Tips:这里可以先保存下对方原来的公钥,等利用公私钥登录权限维持后再给对方换回去,以隐匿操作

》》使用私钥成功登录(这里可以看到是阿里的一个云主机)
在这里插入图片描述

》》给对方留一个纸条就离开吧
(即使诱惑再大,任何情况下不要查看修改对方主机中的文件!
 即使诱惑再大,任何情况下不要查看修改对方主机中的文件!
 即使诱惑再大,任何情况下不要查看修改对方主机中的文件!)
在这里插入图片描述
》》不要忘记将原来的公钥文件再覆盖回去
在这里插入图片描述

三、防御方法

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

猜你喜欢

转载自blog.csdn.net/Aaron_Miller/article/details/107761955