# Vulnerability_scanner
**Repository Path**: yulai_fenglinjing/Vulnerable
## Basic Information
- **Project Name**: Vulnerability_scanner
- **Description**: 智能化漏洞检测与攻击路径分析平台
## 项目描述
全栈安全分析平台,集成漏洞扫描、攻击路径分析和智能风险评估,支持多种常见漏洞的自动化检测和修复建议生成。
- **Primary Language**: Python
- **License**: AFL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2025-10-22
- **Last Updated**: 2025-11-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 智能化漏洞检测与攻击路径分析平台
## 📋 项目概述
本项目是一个全功能安全分析平台,集成漏洞扫描、攻击路径分析和风险评估功能。系统采用机器学习技术对漏洞进行智能分类和风险评分,支持多种常见漏洞类型的自动化检测,并提供详细的修复建议。
### 🔍 核心功能
- **全面的漏洞扫描**:支持SQL注入、XSS、命令注入、信息泄露等多种漏洞类型检测
- **攻击路径分析**:智能分析漏洞间的关联关系,构建潜在攻击链
- **风险评估引擎**:基于XGBoost机器学习模型进行精确风险评分
- **异步任务处理**:使用Celery+Redis实现高性能异步扫描任务处理
- **详细修复建议**:为每种漏洞提供针对性的修复方案
- **多靶场支持**:兼容OWASP WebGoat、Juice Shop等常见安全靶场
## 🛠️ 技术架构
### 后端技术栈
- **Web框架**: Flask 2.3.3
- **异步任务**: Celery 5.3.4 + Redis 5.0.1
- **数据库**: SQLite (支持MySQL扩展)
- **机器学习**: XGBoost 2.0.3 + scikit-learn 1.3.0
- **HTTP客户端**: Requests 2.31.0
- **安全工具**: 自定义扫描引擎
### 前端技术栈
- **框架**: Vue 3.4.21
- **UI组件**: Element Plus 2.7.2
- **图表可视化**: ECharts 5.4.3 + Chart.js 4.5.1
- **网络请求**: Axios 1.6.8
- **路由**: Vue Router 4.3.0
- **构建工具**: Vite 5.2.0
## 📱 系统运行截图
###登录

### 仪表盘界面


### 漏洞扫描




### 攻击路径分析

### 漏洞详情与修复建议

### 靶场扫描演示

###其他的







## 🔧 API文档
系统提供RESTful API,主要端点包括:
### 扫描管理
- `POST /api/scan` - 提交新的扫描任务
- `GET /api/scan//status` - 查询扫描状态
- `GET /api/scan//report` - 获取扫描报告
- `DELETE /api/scan/` - 取消扫描任务
### 漏洞管理
- `GET /api/vuln/` - 获取漏洞详情
- `GET /api/vulnerabilities` - 列出所有漏洞
- `GET /api/vulnerabilities/statistics` - 获取漏洞统计信息
- `GET /api/vulnerabilities/` - 按类型获取漏洞
### 用户认证
- `POST /api/auth/login` - 用户登录
- `POST /api/auth/register` - 用户注册
- `POST /api/auth/logout` - 用户登出
- `GET /api/auth/profile` - 获取用户信息
### 系统管理
- `GET /api/system/status` - 获取系统状态
- `GET /health` - 健康检查
- `GET /api/system/components` - 获取系统组件信息
- `GET /api/system/resources` - 获取系统资源使用情况
### 靶场管理
- `GET /api/targets` - 获取靶场列表
- `POST /api/targets` - 添加新靶场
- `PUT /api/targets/` - 更新靶场信息
- `DELETE /api/targets/` - 删除靶场
## 📊 支持的漏洞类型
- **SQL注入 (SQL Injection)** - 检测各种SQL注入漏洞,包括盲注、时间盲注等
- **跨站脚本 (XSS)** - 检测反射型、存储型和DOM型XSS漏洞
- **命令注入 (Command Injection)** - 检测操作系统命令执行漏洞
- **目录遍历 (Directory Traversal)** - 检测路径遍历漏洞
- **信息泄露 (Information Disclosure)** - 检测敏感文件泄露、配置信息泄露等
- **不安全的反序列化 (Insecure Deserialization)** - 检测反序列化漏洞
- **服务器端请求伪造 (SSRF)** - 检测SSRF漏洞和内网探测风险
- **弱密码检测 (Weak Passwords)** - 检测常见服务的弱密码问题
- **XML外部实体注入 (XXE)** - 检测XML解析漏洞
## 🛡️ 安全特性
- **智能风险评估** - 使用XGBoost机器学习模型进行漏洞风险评分
- **攻击路径分析** - 自动构建潜在攻击链,识别高风险攻击路径
- **修复建议生成** - 为每个漏洞提供针对性的修复方案
- **扫描限速机制** - 内置智能限速,避免对目标系统造成过大压力
- **漏洞误报过滤** - 多层验证机制,减少误报率
- **敏感信息保护** - 自动脱敏处理,保护扫描过程中的敏感数据
## 📈 系统架构
### 核心组件
- **扫描引擎** - 多线程漏洞扫描器,支持9种漏洞类型检测
- **风险评估模块** - 基于机器学习的漏洞风险评分系统
- **任务调度系统** - 分布式任务队列,支持异步和定时扫描
- **数据存储层** - SQLite数据库,存储扫描结果和系统配置
- **缓存系统** - Redis缓存,提升系统性能
- **前后端分离架构** - 提供Vue 3和Streamlit两种前端界面
### 数据流
1. 用户通过前端界面提交扫描任务
2. Flask API接收并验证请求,创建扫描任务
3. Celery工作队列处理扫描任务
4. 扫描引擎执行漏洞检测
5. 扫描结果存储到SQLite数据库
6. 风险评估模块分析并评分
7. 前端获取并展示结果
## 📝 系统配置
### 主要配置文件
- `app.py` - Flask应用主配置
- `app/services/celery_config.py` - Celery配置
- `app/utils/redis_config.py` - Redis连接配置
- `app/models/database.py` - 数据库配置
### 环境变量
- `FLASK_ENV` - Flask运行环境(development/production)
- `SECRET_KEY` - Flask应用密钥
- `REDIS_URL` - Redis连接URL
- `DATABASE_URL` - 数据库连接URL
## 🧪 使用演示
### 基本扫描示例
```python
import requests
import time
# 提交扫描任务
response = requests.post('http://localhost:5000/api/scan', json={
'target': 'http://example.com',
'scan_depth': 2,
'scan_types': ['sql_injection', 'xss'],
'scan_speed': 'normal',
'recursive': True
})
data = response.json()
scan_id = data['scan_id']
print(f"扫描任务已创建,ID: {scan_id}")
# 轮询扫描状态
while True:
status_response = requests.get(f'http://localhost:5000/api/scan/{scan_id}/status')
status_data = status_response.json()
print(f"扫描进度: {status_data['progress']}%, 状态: {status_data['status']}")
if status_data['status'] in ['completed', 'failed']:
break
time.sleep(5)
# 获取扫描报告
report_response = requests.get(f'http://localhost:5000/api/scan/{scan_id}/report')
report = report_response.json()
print(f"扫描完成,发现 {len(report.get('vulnerabilities', []))} 个漏洞")
print(f"高危漏洞: {sum(1 for v in report.get('vulnerabilities', []) if v.get('severity') == 'high')}")
print(f"中危漏洞: {sum(1 for v in report.get('vulnerabilities', []) if v.get('severity') == 'medium')}")
print(f"低危漏洞: {sum(1 for v in report.get('vulnerabilities', []) if v.get('severity') == 'low')}")
```
### 健康检查示例
```python
import requests
# 检查系统健康状态
response = requests.get('http://localhost:5000/health')
health_data = response.json()
print(f"系统状态: {health_data.get('status')}")
print(f"数据库连接: {'正常' if health_data.get('system_status', {}).get('database') else '异常'}")
print(f"Redis连接: {'正常' if health_data.get('system_status', {}).get('redis') else '异常'}")
print(f"API版本: {health_data.get('version')}")
print(f"运行时间: {health_data.get('uptime')}秒")
# 打印已加载的模块
print("\n已加载的扫描模块:")
for module in health_data.get('system_status', {}).get('loaded_modules', []):
print(f"- {module}")
```
### 靶场扫描示例
```python
import requests
# 获取靶场列表
response = requests.get('http://localhost:5000/api/targets')
targets = response.json()
print("可用靶场:")
for target in targets:
print(f"- {target['name']}: {target['url']} ({target['description']})")
# 扫描指定靶场
if targets:
target_to_scan = targets[0]['url']
print(f"\n开始扫描靶场: {target_to_scan}")
scan_response = requests.post('http://localhost:5000/api/scan', json={
'target': target_to_scan,
'scan_depth': 3,
'scan_types': ['all'],
'is_target_range': True
})
scan_data = scan_response.json()
print(f"扫描任务已创建,ID: {scan_data['scan_id']}")
```
## 🚀 快速开始
### 环境要求
- Python 3.8+
- Node.js 16+ (可选,用于Vue前端)
- Redis 6.0+ (必需)
### 一键启动(推荐)
项目提供了一键启动脚本,可以自动安装依赖、启动所有服务:
```bash
# Windows系统
python start.py
# Linux/MacOS系统
python3 start.py
```
### 手动安装步骤
#### 1. 克隆项目
```bash
git clone https://gitee.com/yourusername/vulnerability-scanner.git
cd vulnerability-scanner
```
#### 2. 安装Python依赖
```bash
# 创建虚拟环境(推荐)
python -m venv venv
# 激活虚拟环境
# Windows
venv\Scripts\activate
# Linux/MacOS
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
```
#### 3. 启动Redis服务
- **Windows**: 从 https://github.com/microsoftarchive/redis/releases 下载并安装Redis,然后启动服务
- **Linux (Ubuntu/Debian)**: `sudo systemctl start redis-server`
- **MacOS**: `brew services start redis`
#### 4. 启动各个组件
```bash
# 初始化数据库(首次运行)
python init_db.py
# 启动Flask应用
python app.py
# 启动Celery Worker(在新终端中)
celery -A app.services.celery_config worker --loglevel=info
# 启动Streamlit前端(在新终端中,可选)
streamlit run app/frontend/app.py
# 启动Vue前端(在新终端中,可选)
cd frontend
npm install # 仅首次运行
npm run dev
```
## 🔒 安全考虑
- **授权使用** - 本工具仅用于授权的安全测试和教育目的
- **合法合规** - 请勿对未授权的系统进行扫描,使用时应遵循相关法律法规和道德规范
- **负责任使用** - 扫描可能对目标系统造成压力,请合理设置扫描参数
- **数据保护** - 避免在公共环境中使用本工具扫描包含敏感信息的系统
- **靶场测试** - 推荐在OWASP WebGoat、Juice Shop等标准安全靶场进行测试学习
## 🤝 贡献指南
我们欢迎社区贡献!请按照以下步骤参与:
1. Fork 项目
2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 开启 Pull Request
### 贡献类型
- 新增漏洞扫描模块
- 改进风险评估算法
- 优化前端界面
- 修复bug和性能问题
- 完善文档
### 代码规范
- 遵循PEP 8编码规范(Python)
- 提交前运行测试确保代码质量
- 为新增功能编写文档和示例
## 📝 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
## 📧 联系方式
项目维护者: [项目负责人](mailto:contact@example.com)
项目链接: [https://gitee.com/yourusername/vulnerability-scanner](https://gitee.com/yourusername/vulnerability-scanner)
## 📋 常见问题
### Q: 扫描过程中遇到错误怎么办?
A: 检查目标URL是否可访问,Redis服务是否正常运行,查看日志获取详细错误信息。
### Q: 为什么某些漏洞没有被检测到?
A: 漏洞扫描存在一定的局限性,建议结合其他安全测试方法使用。
### Q: 如何提高扫描效率?
A: 可以调整扫描深度、选择特定漏洞类型、设置适当的扫描速度。
### Q: 系统支持分布式部署吗?
A: 是的,通过配置共享Redis和数据库,可以部署多个Celery worker节点。
### Q: 如何扩展系统支持更多漏洞类型?
A: 在`scripts`目录下创建新的扫描脚本,并在`script_metadata.json`中注册。
---
*注: 本项目为开源安全工具,使用时请确保遵守相关法律法规。*
---
## 🚩 项目状态
- ✅ Flask API服务正常运行
- ✅ 健康检查端点(/health)已配置
- ✅ 漏洞扫描核心功能已实现
- ✅ 风险评估模型已加载
- ✅ 数据库连接正常
- ✅ Redis缓存服务正常
- ✅ Streamlit前端已就绪
- ✅ Celery任务队列已配置
- ⚠️ Vue前端需要Node.js环境
*使用`python start.py`一键启动所有服务!*