Docker是一种执行操作系统级虚拟化的计算机程序,也称为"容器化"。
Docker提供了一个用于与Docker守护程序交互的API(称为 Docker 引擎 API)。Docker引擎API是一个RESTful API,可由HTTP客户端(如 wget 或 curl)或HTTP 库访问,HTTP库是大多数现代编程语言的一部分。
此Docker引擎 API 无需身份验证即可访问。可以通过挂载服务器目录达到获取服务器敏感信息的目的
在网址栏输入 目标主机IP:2375/containers/json可获取该主机的Docker容器信息
使用docker命令创建一个alpine容器,并将目标主机的磁盘挂载到容器中。
在攻击机上生成ssh的rsa公钥
将密钥内容拷贝到目标主机的/root/.ssh/authorized_keys中
之后即可通过ssh免密登录目标主机
1、禁止外网访问2375端口或设置白名单
2、内网做网络访问控制,并使用TLS/SSL进行加密通信
漏洞介绍:
该
未
授权
访问
漏洞是因为
docker
remote
api
可以执行
docker
命令,从官方文档可以看出,该
接口
是目的是取代
docker
命令界面,通过url
操作
docker
。
docker
swarm是
docker
下的分布化应用的本地集群,在开放2375监听集群容器时,会调用这个
api
url输入ip:2375/version就会列出基本信息,和
docker
vers...
攻击者利用
docker
client 或者 http 直接请求就可以
访问
这个
API
,可能导致敏感信息泄露,也可以删除
Docker
上的数据。攻击者可进一步利用
Docker
自身特性,直接
访问
宿主机上的敏感信息,或对敏感文件
进行
修改,最终完全控制
服务器
。
Docker
API
未
授权
访问
漏洞
1、漏洞简介
在
Docker
的部署文档中,由于默认存在某些不
安全
的配置样例,导致2375管理端口对外,该
未
授权
访问
漏洞是因为
Docker
API
可以执行
Docker
命令,该
接口
是目的是取代
Docker
命令界面,通过URL
操作
Docker
。
2、漏洞原理
利用
Docker
节点上开放的 TCP 端口 2375 远程执行
Docker
命令,进而可获取
服务器
Root 权限。
3、漏洞环境搭建
这里我们直接使用 vluhub 环境
cd vulhub/
docker
/una
docker
在使用集群管理(如:Kubernetes,swarm)时,要使用
remote
api
对节点
进行
管理。
remote
api
无认证时的默认端口是2375(需要TLS认证默认登录是2376)。
remote
api
默认是可以不需要认证能直接
访问
,能直接对
docker
进行
操作
,如新建容器,删除容器,查看镜像容器信息等
操作
。
remote
api
操作
方法可以参考:
docker
官方文档...