Medaz-Sploit/CVE-2025-9074-Docker-Desktop-API-Escape-PoC
GitHub: Medaz-Sploit/CVE-2025-9074-Docker-Desktop-API-Escape-PoC
一个纯 Bash 实现的轻量级 Docker Engine API 交互式 shell,用于在无额外依赖的受限容器环境中通过暴露的 Docker API 创建特权容器并挂载宿主机文件系统,验证容器逃逸风险。
Stars: 0 | Forks: 0
# 🐚 docker-shell
一个轻量级、无依赖的 bash 脚本,可在 Docker 容器内为你提供一个**模拟的交互式 shell**——仅使用 `curl`、`dd`、`od` 和 `awk`。不需要 Python,不需要 `jq`,也不需要编辑器。
专为只有原生 shell 访问权限且需要通过 **Docker Engine API** 在 Docker 容器内执行命令的环境而构建。
## 🧠 工作原理
该脚本不使用 Docker CLI,而是直接通过 HTTP 与 **Docker Engine REST API** 通信(通常在 Docker Desktop / WSL2 环境中暴露为 `http://192.168.65.7:2375`)。
它会:
1. 创建并启动一个挂载了 Windows `C:\` 驱动器的 Alpine Linux 容器
2. 对于你输入的每条命令,通过 API 创建一个 exec 实例
3. 使用纯 `dd` + `od` 解析 Docker 的**多路复用二进制流**输出——不需要 Python
4. 将结果打印回你的终端,就像一个真正的 shell
### Docker 多路复用流
Docker 将所有 exec 输出封装为二进制帧格式:
```
[1 byte: stream type] [3 bytes: padding] [4 bytes: payload size (big-endian)] [payload...]
```
此脚本仅使用标准 Unix 工具逐帧解码该数据。
## ⚙️ 环境要求
- `bash`
- `curl`
- `dd`、`od`、`awk`、`grep`、`cut`——均为标准 Unix 工具
- 可通过 `http://192.168.65.7:2375` 访问的 Docker Engine API(WSL2 上的 Docker Desktop)
不需要 `jq`,不需要 Python,不需要 nano,也不需要编辑器。
## 🚀 安装
```
git clone https://github.com/yourusername/docker-shell.git
cd docker-shell
chmod +x docker_shell.sh
bash docker_shell.sh
```
## 💻 使用方法
```
================================================
Docker Emulated Shell [target: alpine_escape]
Commands: start | status | run | exit
================================================
docker> start
docker> status
docker> run ls /mnt
docker> run ls /mnt/Users
docker> run cat /etc/os-release
docker> run id
docker> exit
```
### 命令
| 命令 | 描述 |
|---|---|
| `start` | 创建(如需要)并启动 `alpine_escape` 容器 |
| `status` | 显示容器 ID 和当前状态 |
| `run ` | 在容器内执行任何 shell 命令 |
| `exit` / `quit` | 退出模拟 shell |
## 🗂️ 挂载布局
该容器将你的 Windows `C:\` 驱动器(通过 WSL2)挂载到 `/mnt`:
| Windows 路径 | 容器内路径 |
|---|---|
| `C:\` | `/mnt` |
| `C:\Users` | `/mnt/Users` |
| `C:\Program Files` | `/mnt/Program Files` |
| `C:\Windows\System32` | `/mnt/Windows/System32` |
## ⚠️ 注意事项
- 每一次 `run` 都是一个**独立的 exec 实例**——命令之间的状态不会保留。请使用 `run cd /some/dir && ls` 以便在一次调用中链接命令。
- 该脚本通过**名称**(`alpine_escape`)定位容器,而不是通过 ID,因此不会意外 exec 到错误的容器中。
- 输出使用 `dd` 直接从二进制文件 `/tmp/docker_out.bin` 中逐帧解析。
## 🔧 配置
编辑脚本顶部的这些变量以匹配你的环境:
```
DOCKER="http://192.168.65.7:2375" # Docker Engine API address
CONTAINER="alpine_escape" # Container name
```
## 📄 许可证
AGPLv3
标签:Awesome, Bash, curl, DevSecOps, Docker, Docker Engine API, Red Team, Shell脚本, Web截图, WSL2, 上游代理, 二进制流解析, 命令执行, 安全防御评估, 容器安全, 容器逃逸, 应用安全, 模拟终端, 系统管理, 网络调试, 自动化, 轻量级工具