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, 上游代理, 二进制流解析, 命令执行, 安全防御评估, 容器安全, 容器逃逸, 应用安全, 模拟终端, 系统管理, 网络调试, 自动化, 轻量级工具