尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

断网 4 步跑通 Vulhub 离线靶场:内网隔离环境完整部署指南

断网 4 步跑通 Vulhub 离线靶场:内网隔离环境完整部署指南 断网 4 步跑通 Vulhub 离线靶场内网隔离环境完整部署指南【免费下载链接】vulhubPre-Built Vulnerable Environments Based on Docker-Compose项目地址: https://gitcode.com/GitHub_Trending/vu/vulhub这篇文章写给熟悉 Linux 基础命令、但没做过 Docker 离线部署的运维与安全测试人员。它解决一个具体问题在完全断网、与外网隔离的机器上如何把 Vulhub 漏洞靶场完整跑起来。读完照做你将拥有一套不依赖外网、可反复启停的本地漏洞环境库。场景定位什么时候必须做离线部署气隙Air-gapped机房、银行与政企内网常整段切断外网安全测试只能在隔离环境里进行。渗透测试前你通常需要一台与被测网络同段、但不碰互联网的跳板机在靶机上先演练一遍攻击链路。还有些机房干脆没有公网出口Docker 默认从 Docker Hub 拉镜像的模式在这种环境里直接失效。上面这类场景的共同点是所有依赖必须提前搬到本地。部署完成后你会得到三样东西覆盖 100 漏洞场景的靶场环境库每个场景独立成目录一套本地化的 Docker 镜像库断网也能compose up每个环境一条命令即可启动、停止、清理的一键操作能力环境自检动手前先过一遍这张表检查项要求操作系统Linux推荐 Ubuntu 22.04内存至少 4 GB同时跑多个环境建议 8 GB磁盘至少 50 GB镜像与容器数据会持续占用空间预装软件Docker Engine Docker Compose V2即docker compose子命令离线包安装自检命令与预期结果# 确认 Docker 与 Compose 版本两者都输出版本号即通过 docker --version docker compose version逐步实操从联网机到离线机的完整任务流第一步拿到 Vulhub 项目文件目的说明离线机访问不了外网所以项目文件必须在一台联网机上准备好再整体传输过去。方式 A下载 zip 包# 联网机上下载项目压缩包 wget https://gitcode.com/GitHub_Trending/vu/vulhub/-/archive/master/vulhub-master.zip -O vulhub-master.zip传输到离线机后解压# 离线机上解压项目 unzip vulhub-master.zip cd vulhub-master方式 Bgit clone推荐便于日后同步# 联网机浅克隆速度快体积小 git clone --depth 1 https://gitcode.com/GitHub_Trending/vu/vulhub预期结果联网机上得到完整vulhub目录。把它打包tar czf vulhub.tar.gz vulhub/传到离线机解压看到与下面 environments.toml 同级的一堆环境目录即算成功。第二步Docker 镜像本地化导出 批量导入目的说明离线机无法从 Docker Hub 拉镜像必须把每个环境引用的镜像提前导出成 tar 文件再批量导进离线机。整条链路可以概括成一行联网机导出 → 文件传输 → 离线机导入 → compose 启动。2a. 联网机导出docker save 打成 tar 包先确认目标环境依赖哪些镜像。以 log4j/CVE-2021-44228/ 为例它的 docker-compose.yml 只引用了一个镜像vulhub/solr:8.11.0# 联网机上进入目标环境目录查看 compose 文件引用的镜像 cd log4j/CVE-2021-44228 grep -r image: .把镜像拉到本地并导出其余环境重复同样的动作即可# 联网机上拉取镜像并导出为 tar 包 docker pull vulhub/solr:8.11.0 docker save -o vulhub-solr-8.11.0.tar vulhub/solr:8.11.0预期结果当前目录生成一个vulhub-solr-8.11.0.tar文件体积几百 MB。2b. 离线机导入一条命令批量 docker load建议把所有镜像包统一放进项目的 base/docker/ 目录导入时按目录扫描即可方便日后增量补充。# 离线机上批量导入 base/docker/ 下所有镜像包 find base/docker/ -name *.tar | xargs -I {} docker load -i {}预期结果每导入一个包终端打印Successfully loaded image: vulhub/solr:8.11.0之类的确认行。再执行docker images | grep vulhub能看到对应镜像列表即说明本地镜像库就绪。第三步启动一个示例环境目的说明先用 Log4Shell 场景走通全流程再推广到其他环境。示例环境为 log4j/CVE-2021-44228/底层是依赖 Log4j 2.14.1 的 Apache Solr 8.11.0。# 离线机进入示例环境目录并后台启动 cd log4j/CVE-2021-44228 docker compose up -d预期结果本地已导入vulhub/solr:8.11.0时Docker 直接使用本地镜像不会尝试联网终端提示容器 created、started 即启动成功。随后在浏览器打开http://your-ip:8983能看到 Solr 后台页面your-ip是离线机的 IP不是容器 IP。该环境的 README 还演示了如何用 Java Chains 生成 JNDI payload操作界面大致如下第四步验证状态与日常操作目的说明启动后立刻做一次状态确认并记住日常维护的三条命令。# 查看容器运行状态确认 State 为 Up docker compose ps预期输出关键行Name Command State Ports ------------------------------------------------------------- cve-2021-44228_solr_1 solr -f /opt/solr/solr.in… Up 0.0.0.0:8983-8983/tcp# 实时跟踪容器日志排查启动异常 docker compose logs -f# 停止环境并删除容器与卷一键清理干净 docker compose down -v漏洞环境分类速览类别示例环境Web 服务器httpd/、nginx/应用框架spring/、flask/ssti数据库mysql/CVE-2012-2122、redis/CVE-2022-0543中间件tomcat/、jetty/每个环境目录都附独立的 README 与 README.zh-cn.md打开即能看到复现步骤、Payload 与截图按图索骥即可。排障速查权限错误现象docker compose up报permission denied或 Docker 无权限读取项目文件。原因项目目录属主是其他用户当前用户或 Docker 运行用户没有读权限。修复chmod -R 755 .或确认 Docker 服务能访问当前目录。镜像版本冲突现象导入镜像时报tag already in use或容器内行为与预期不符。原因离线机本地已存在同名标签的旧镜像。修复# 列出镜像删除冲突的旧版本后重新导入 docker images | grep vulhub docker rmi vulhub/solr:8.11.0启动失败现象容器反复重启或命令直接报错。原因Docker 守护进程未运行或资源不足。修复systemctl status docker查看服务状态再看journalctl -u docker -f定位具体错误。收尾到这里断网环境下的 Vulhub 离线部署已经闭环联网机准备项目与镜像离线机导入后一条 compose 命令即可开练。未来想扩展更多环境只需重复联网机构建/拉取 → 导出 tar → 离线机导入这个循环把新的镜像包丢进 base/docker/ 即可。官方文档README.zh-cn.md环境索引environments.toml镜像清理脚本tests/cleanup.sh【免费下载链接】vulhubPre-Built Vulnerable Environments Based on Docker-Compose项目地址: https://gitcode.com/GitHub_Trending/vu/vulhub创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表