MrEchoFi/docklab

GitHub: MrEchoFi/docklab

docklab 是一个基于 Docker 和 Rust 的安全实验工具,通过提供一次性隔离终端,让用户安全地练习渗透测试和 CVE 概念验证,而无需启动虚拟机。

Stars: 2 | Forks: 2

# docklab **用于安全练习 IT 运维、CVE 概念验证和渗透测试的一次性、隔离终端。** 基于 Docker 构建,因此在会话中执行的任何操作都不会永久影响您的主机。 [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md) [![Rust](https://img.shields.io/badge/rust-2021%20edition-orange.svg)](Cargo.toml) [![Platforms](https://img.shields.io/badge/platforms-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey.svg)](INSTALLATION.md) [安装指南](INSTALLATION.md) · [教程](TUTORIAL.md) · [贡献指南](CONTRIBUTING.md) · [安全政策](SECURITY.md) · [社区](COMMUNITY.md)
## 这是什么? `docklab`(二进制文件名为 `lab`)用一条命令取代了沉重的“启动虚拟机以安全运行此漏洞”的工作流。该项目围绕三个理念构建: 1. **攻击者终端** —— 一个容器化的、一次性的 shell,您可以进入其中练习 IT 运维、构建和运行 CVE PoC,或者只是获取一个一次性的 Linux 环境,您在其中执行的任何操作都无法触及您的主机文件系统。 2. **漏洞靶机实验室库** —— 真实的、针对特定 CVE 的 Dockerfile,您可以构建并运行它们,以亲手实践特定的历史漏洞,而不是仅仅停留在阅读层面。 3. **默认隔离,而非手动步骤** —— 绝不进行主机绑定挂载。会话创建的任何内容(已安装的工具、克隆的 PoC、漏洞利用产物)仅存在于该容器的可写层中,并在您拆除会话的瞬间消失。 请参阅 [SOLVING_REAL_WORLD_PROBLEMS.md](SOLVING_REAL_WORLD_PROBLEMS.md) 以更深入地了解每个理念背后的动机。 ### 目前已实现的功能 `docklab` 处于早期阶段(`0.1.0`)。理念 #1 是 CLI 目前实际实现的功能 —— 它封装了 `docker` 命令,因此您无需记住“给我一个一次性 Kali Linux shell”的复杂咒语: - `lab create` 会拉取公开的 `kalilinux/kali-rolling` 镜像,并直接将您放入名为 `docklab` 的容器内的交互式 shell 中,同时在首次运行时自动安装一些常用的渗透测试/IT 工具(`curl`、`wget`、`nmap`、`nano`、`git`、`net-tools`、`lynis`)。 - `lab reconnect` 稍后会重新附加到同一个容器 —— 您在其中安装或创建的任何内容仍然存在。 - `lab mon` 会打开一个实时的 TUI 仪表板:容器状态、资源统计、磁盘使用情况、网络设置和正在运行的进程。 - `lab close` 会拆除所有内容 —— 停止容器,将其删除,并移除镜像 —— 不留任何痕迹。 理念 #2 目前以**内容的形式存在,尚未成为 CLI 功能**:`labs/` 提供了三个真实的、完全独立构建的 CVE Dockerfile(请参阅下方的[内置 CVE 实验室内容](#bundled-cve-lab-content)),您可以使用 `docker` 手动构建和运行它们。将它们接入 `lab catalog` 和 `lab start ` 是下一个里程碑 —— 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md#about-labs)。 理念 #3 在目前现有功能中依然成立 —— 没有绑定挂载,通过 `lab close` 进行全面拆除 —— 但尚未包含该工具成熟版本应具备的更深层次的保证(按会话划分的网络隔离、capability 权限限制、资源限制)。简而言之:`docklab` 是当今获取一次性 shell 的一种快速、诚实的方式,并正致力于成为一个经过强化的实验平台 —— 但目前还不是。请参阅 [SECURITY.md](SECURITY.md) 了解此版本提供的确切威胁模型。 ## 快速开始 ``` lab create # pulls kalilinux/kali-rolling, builds you a shell, drops you in # ...在 container 内进行你的工作... exit # leaves the container stopped (not deleted) lab reconnect # jump back into the same container later lab mon # open the live TUI dashboard in another terminal lab close # stop + remove the container and image entirely ``` 完整演练:[TUTORIAL.md](TUTORIAL.md)。 ## 安装 按速度排序,有三种方式可以让 `lab` 运行起来: ``` # 1. 预构建的 binary,已经在此 repo 的 dist/ 目录下(最快,不需要 Rust) chmod +x dist/lab-linux-x86_64 sudo cp dist/lab-linux-x86_64 /usr/local/bin/lab # 2. 通过 Cargo 从源码安装 git clone https://github.com/MrEchoFi/docklab.git cd docklab cargo install --path . # installs `lab` to ~/.cargo/bin # 3. 自己构建它 cargo build --release # binary lands at target/release/lab ``` `dist/` 提供了适用于 Linux、Windows 和 macOS(Intel + Apple Silicon)的二进制文件,以及用于校验的 `SHA256SUMS` 文件 —— 请参阅 [INSTALLATION.md](INSTALLATION.md#verifying-a-download) 获取各操作系统对应的校验和命令。 您需要安装 Docker 并能通过 `docker` CLI 访问(`docker ps` 应能在不带 `sudo` 的情况下运行)—— `lab` 会调用 `docker` 命令,它并不直接与 Docker daemon 通信。 完整的各平台详细说明,包括每个 `dist/` 二进制文件的构建方式及其在目标操作系统上的验证程度: **[INSTALLATION.md](INSTALLATION.md)**。 ## 命令概览 | 命令 | 功能 | |---|---| | `lab create` | 拉取 `kalilinux/kali-rolling` 并将其作为名为 `docklab` 的交互式容器启动,在首次运行时安装基础工具集 | | `lab close` | 停止并强制移除 `docklab` 容器,随后移除 `kalilinux/kali-rolling` 镜像 | | `lab mon` | 打开实时 TUI 仪表板:概览、资源统计、磁盘使用情况、网络设置、正在运行的进程 | | `lab reconnect` | 重新附加到现有的 `docklab` 容器(`docker start -ai`) | | 标志 | 功能 | |---|---| | `--version` | 打印 `lab ` | | `-V`, `--verbose` | 在运行每个底层 `docker` 命令之前打印该命令 | | `-h`, `--help` | 打印命令/标志参考 | | `--guide` | 打印典型工作流的简短演练 | 标志在任何调用中都会被识别(`lab --version`、`lab -h` 等),并且其优先级高于子命令。 ### `lab mon` 按键 | 按键 | 操作 | |---|---| | `1`–`5` | 在 概览 / 统计 / 磁盘使用情况 / 网络 / 进程 标签页之间切换 | | `r` | 强制刷新当前激活的标签页 | | `h` 或 `?` | 切换帮助浮层 | | `g` | 切换快速入门指南浮层 | | `q` 或 `Esc` | 退出(或关闭已打开的浮层) | ## 内置 CVE 实验室内容 此仓库中的 `labs/` 包含了三个历史 CVE 的参考资料 —— `CVE-2011-2523`(vsftpd 2.3.4 后门)、`CVE-2014-6271`(Shellshock)和 `CVE-2021-44228`(Log4Shell)—— 每个都包含 `metadata.yaml` 简报/提示以及一个重现漏洞的独立 `docker/Dockerfile`。**这些尚未接入 `lab` CLI**:目前没有 `lab catalog` 或 `lab start ` 命令。要使用它们,请直接使用 `docker` 构建并运行,例如: ``` docker build -t docklab-vsftpd-backdoor labs/CVE-2011-2523/docker docker run --rm -it -p 2121:21 -p 6200:6200 docklab-vsftpd-backdoor ``` 然后从同一 Docker 网络上的 `lab create` shell 中对其进行攻击,或者根据您的喜好进行网络连接。将这些直接集成到 CLI 中(`lab catalog`、`lab start `)是最受期待的下一个功能 —— 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md#about-labs)。 ## 文档导航 | 文档 | 适用对象 | |---|---| | [TUTORIAL.md](TUTORIAL.md) | 首次使用的用户 —— 端到端的 `lab` 工作流 | | [INSTALLATION.md](INSTALLATION.md) | 从源码进行 Linux / macOS / Windows 设置 | | [SOLVING_REAL_WORLD_PROBLEMS.md](SOLVING_REAL_WORLD_PROBLEMS.md) | 项目存在的原因及其替代的方案 | | [CONTRIBUTING.md](CONTRIBUTING.md) | 开发环境设置、项目布局、PR 流程 | | [SECURITY.md](SECURITY.md) | 报告漏洞、负责任的使用 | | [COMMUNITY.md](COMMUNITY.md) | 行为准则、道德规范、参与方式 | ## 许可证 MIT —— 请参阅 [LICENSE.md](LICENSE.md)。`labs/` 下的内置 CVE 实验室特意包含了历史漏洞;请参阅许可证文件中的范围说明和 [SECURITY.md](SECURITY.md) 了解相关处理方式。
标签:Docker, Maven, Rust, 可视化界面, 安全防御评估, 漏洞验证, 网络流量审计, 虚拟化隔离, 请求拦截, 通知系统