Vulhub
2026/5/29工具平台资源工具平台资源Vulhub大约 6 分钟
Vulhub
是什么
Vulhub 是一个基于 Docker 的漏洞靶场集合,包含大量已知漏洞的复现环境。它由国内安全团队维护,提供了丰富的漏洞复现场景,是学习漏洞原理和进行安全研究的重要资源。
平台特点:
- 漏洞丰富:涵盖 Web、中间件、数据库、操作系统等多个领域
- 环境统一:基于 Docker 构建,一键部署
- 文档详细:每个漏洞都有详细的复现步骤和原理分析
- 持续更新:定期添加新发现的漏洞
- 免费开源:完全免费,代码开源
Vulhub 是安全研究人员、CTF 选手和安全初学者的重要学习资源。
安装与配置
安装 Docker
# Ubuntu/Debian
sudo apt update
sudo apt install docker.io docker-compose
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
# CentOS/RHEL
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker
# macOS
# 下载 Docker Desktop:https://www.docker.com/products/docker-desktop
# Windows
# 下载 Docker Desktop:https://www.docker.com/products/docker-desktop
# 需要启用 WSL2
# 验证安装
docker --version
docker-compose --version克隆 Vulhub 仓库
# 克隆仓库
git clone https://github.com/vulhub/vulhub.git
cd vulhub
# 或使用国内镜像
git clone https://gitee.com/vulhub/vulhub.git
cd vulhub
# 查看目录结构
ls -la配置 Docker 镜像加速
# 创建或编辑 /etc/docker/daemon.json
sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
]
}
EOF
# 重启 Docker
sudo systemctl restart docker基本用法
目录结构
vulhub/
├── web/ # Web 应用漏洞
│ ├── apache/ # Apache 漏洞
│ ├── nginx/ # Nginx 漏洞
│ ├── tomcat/ # Tomcat 漏洞
│ ├── spring/ # Spring 漏洞
│ ├── struts2/ # Struts2 漏洞
│ ├── php/ # PHP 漏洞
│ ├── python/ # Python 漏洞
│ └── ...
├── middleware/ # 中间件漏洞
│ ├── redis/ # Redis 漏洞
│ ├── mysql/ # MySQL 漏洞
│ ├── postgres/ # PostgreSQL 漏洞
│ ├── mongodb/ # MongoDB 漏洞
│ └── ...
├── os/ # 操作系统漏洞
│ ├── linux/ # Linux 漏洞
│ └── ...
├── docker/ # Docker 相关漏洞
└── ...启动靶场
# 进入漏洞目录
cd web/spring/CVE-2018-1270
# 查看目录内容
ls -la
# 通常包含:
# - docker-compose.yml
# - README.md(漏洞说明和复现步骤)
# - 其他相关文件
# 启动靶场
docker-compose up -d
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs停止靶场
# 停止靶场
docker-compose down
# 停止并删除所有数据
docker-compose down -v访问靶场
# Web 类靶场
# 通常通过浏览器访问 http://localhost:端口号
# 端口号在 docker-compose.yml 中定义
# 数据库类靶场
# 使用对应的客户端连接
# 如 mysql -h 127.0.0.1 -P 3306 -u root -pCTF常用技巧
常用靶场列表
Web 漏洞
# Spring 系列
web/spring/CVE-2018-1270 # Spring Messaging RCE
web/spring/CVE-2022-22947 # Spring Cloud Gateway RCE
web/spring/CVE-2022-22963 # Spring Cloud Function SpEL RCE
# Struts2 系列
web/struts2/s2-045 # Struts2 S2-045 RCE
web/struts2/s2-046 # Struts2 S2-046 RCE
web/struts2/s2-048 # Struts2 S2-048 RCE
web/struts2/s2-057 # Struts2 S2-057 RCE
# Tomcat 系列
web/tomcat/CVE-2017-12615 # Tomcat PUT 方法 RCE
web/tomcat/CVE-2019-0232 # Tomcat CGI RCE
web/tomcat/CVE-2020-1938 # Tomcat AJP 文件包含
# PHP 系列
web/php/CVE-2018-19518 # PHP imap RCE
web/php/inclusion # PHP 文件包含漏洞
web/php/upload # PHP 文件上传漏洞
# Nginx 系列
web/nginx/CVE-2017-7529 # Nginx 越界读
web/nginx/insecure-configuration # Nginx 配置不当
# Apache 系列
web/apache/CVE-2017-15715 # Apache 文件上传绕过
web/apache/CVE-2021-41773 # Apache 路径遍历
web/apache/CVE-2021-42013 # Apache 路径遍历绕过中间件漏洞
# Redis 系列
middleware/redis/4-unacc # Redis 未授权访问
middleware/redis/CVE-2022-0543 # Redis Lua RCE
# MySQL 系列
middleware/mysql/CVE-2012-2122 # MySQL 认证绕过
middleware/mysql/weak-password # MySQL 弱口令
# PostgreSQL 系列
middleware/postgres/CVE-2019-9193 # PostgreSQL RCE
# MongoDB 系列
middleware/mongodb/weak-password # MongoDB 弱口令应用漏洞
# WordPress
web/wordpress/CVE-2019-6110 # WordPress 插件漏洞
# Drupal
web/drupal/CVE-2018-7600 # Drupal RCE
web/drupal/CVE-2018-7602 # Drupal RCE
# Joomla
web/joomla/CVE-2017-8917 # Joomla SQL 注入
# ThinkPHP
web/thinkphp/5-rce # ThinkPHP RCE
web/thinkphp/2-rce # ThinkPHP RCE
# Laravel
web/laravel/CVE-2021-3129 # Laravel RCE
# FastJSON
web/fastjson/1.2.24-rce # FastJSON RCE
# Jackson
web/jackson/CVE-2019-12384 # Jackson RCE漏洞复现流程
1. 选择漏洞
- 根据学习目标选择漏洞
- 阅读漏洞说明和原理
2. 启动靶场
- 进入漏洞目录
- 运行 docker-compose up -d
- 等待环境启动完成
3. 阅读文档
- 仔细阅读 README.md
- 了解漏洞原理
- 学习复现步骤
4. 复现漏洞
- 按照文档步骤操作
- 使用推荐的工具
- 记录复现过程
5. 深入学习
- 分析漏洞成因
- 学习修复方案
- 了解相关 CVE
6. 清理环境
- 运行 docker-compose down
- 清理相关文件配合 CTF 学习
1. Web 方向
- 复现常见 Web 漏洞
- 学习漏洞利用技巧
- 练习代码审计
2. Pwn 方向
- 复现操作系统漏洞
- 学习漏洞利用技术
- 练习 Exploit 编写
3. Crypto 方向
- 复现密码学漏洞
- 学习攻击方法
- 练习密码分析
4. Misc 方向
- 复现中间件漏洞
- 学习信息收集
- 练习渗透测试漏洞原理分析
1. 阅读漏洞公告
- 了解漏洞影响范围
- 学习漏洞成因
- 查看 CVSS 评分
2. 分析漏洞代码
- 查看漏洞相关代码
- 理解漏洞触发条件
- 学习漏洞利用方法
3. 学习修复方案
- 了解官方修复方案
- 学习安全编码实践
- 了解防御措施
4. 编写分析报告
- 记录漏洞分析过程
- 总结漏洞原理
- 提出防御建议使用技巧
# 1. 快速启动特定漏洞
cd vulhub/web/spring/CVE-2018-1270
docker-compose up -d
# 2. 批量启动多个靶场
for vuln in web/spring/CVE-2018-1270 web/tomcat/CVE-2017-12615; do
cd "$vuln"
docker-compose up -d
cd ../..
done
# 3. 查看靶场状态
docker-compose ps
# 4. 重启靶场
docker-compose restart
# 5. 查看靶场日志
docker-compose logs -f
# 6. 进入靶场容器
docker-compose exec web bash
# 7. 清理所有靶场
for dir in $(find . -name "docker-compose.yml" -exec dirname {} \;); do
cd "$dir"
docker-compose down -v
cd -
done学习路径建议
1. 初学者
- 从简单漏洞开始(如 Redis 未授权访问)
- 学习基础工具使用
- 阅读漏洞原理文档
2. 进阶者
- 复现中等难度漏洞
- 学习漏洞利用技巧
- 尝试编写 Exploit
3. 高级者
- 复现高难度漏洞
- 分析漏洞成因
- 学习防御措施常见问题
Docker 启动失败
原因:Docker 服务未启动或配置错误。
解决:
# 启动 Docker 服务
sudo systemctl start docker
# 检查 Docker 状态
sudo systemctl status docker
# 检查 Docker 日志
sudo journalctl -u docker镜像拉取失败
原因:网络问题或镜像源配置错误。
解决:
# 配置镜像加速
# 编辑 /etc/docker/daemon.json
# 或使用代理
export HTTP_PROXY=http://proxy:port
export HTTPS_PROXY=http://proxy:port端口冲突
原因:端口已被其他服务占用。
解决:
# 检查端口占用
netstat -tulpn | grep port
# 修改 docker-compose.yml 中的端口映射
# 将 "8080:80" 改为 "8081:80"容器无法访问
原因:网络配置问题或防火墙限制。
解决:
# 检查容器状态
docker-compose ps
# 检查容器日志
docker-compose logs
# 检查防火墙设置
sudo ufw status
sudo iptables -L磁盘空间不足
原因:Docker 镜像和容器占用大量空间。
解决:
# 清理未使用的镜像
docker image prune
# 清理未使用的容器
docker container prune
# 清理所有未使用的资源
docker system prune -a漏洞复现失败
原因:环境配置错误或漏洞条件不满足。
解决:
- 仔细阅读 README.md
- 检查环境配置
- 确认漏洞条件
- 尝试其他复现方法
性能问题
原因:资源限制或配置不当。
解决:
# 增加 Docker 资源限制
# 在 Docker Desktop 设置中调整
# 或使用 --memory 和 --cpus 参数
docker-compose up -d --memory=2g --cpus=2版本兼容性问题
原因:Docker 或 Docker Compose 版本过低。
解决:
# 更新 Docker
sudo apt update
sudo apt upgrade docker.io
# 更新 Docker Compose
sudo apt upgrade docker-compose
# 或使用最新版本
# 从官网下载最新版本