philipmagar/vulnerability-scanner
GitHub: philipmagar/vulnerability-scanner
一个集成端口扫描、服务检测、CVE 查询与风险评分的全栈网络漏洞扫描工具,提供 CLI、REST API 和 React 可视化仪表板。
Stars: 0 | Forks: 0
# 漏洞扫描器
一个基于 Python 的网络端口扫描器,用于识别目标主机上的开放端口并映射服务。
## 设置
### 后端设置
```
git clone https://github.com/philipmagar/vulnerability-scanner.git
cd vulnerability-scanner
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
```
### 前端设置
```
cd frontend
npm install
```
### Docker 设置
```
docker-compose up --build
```
## 用法
### 运行 CLI 扫描
```
python -m app.scanner.test_scan
```
### 运行 FastAPI REST 服务器
```
python -m uvicorn app.main:app --reload
```
一旦运行,访问 `http://127.0.0.1:8000/docs` 查看交互式 OpenAPI 文档。
### 运行 React 前端仪表板
```
cd frontend
npm run dev
```
一旦运行,打开 `http://localhost:5173` 访问仪表板。Vite 开发服务器将所有 `/api` 请求代理到位于 `http://localhost:8000` 的 FastAPI 后端。
## 开发日志
**第 1 天**
- 搭建项目结构和虚拟环境
- 安装依赖 (fastapi, uvicorn, python-nmap, scapy, requests, rich)
- 构建了核心 `PortScanner` 类,支持 TCP connect 扫描和服务名称解析
**第 2 天**
- 添加 `__init__.py` 文件以修复包导入问题
- 修复了计时打印 bug(之前在端口循环内部进行打印)
- 修复了测试脚本中重复调用扫描的问题
- 为所有扫描结果添加了服务名称丰富功能
- 添加了带有颜色编码端口状态的 rich 终端表格
**第 3 天**
- 使用 queue 和 threads 创建了高性能的 `ThreadedPortScanner`(将扫描时间从约 8.6 秒缩短至约 1 秒)
- 标准化了扫描器输出(基于字典的结果列表)
- 构建了支持并发扫描的 FastAPI REST API (`app/main.py`)
**第 4 天**
- 修复并增强了 `BannerGrabber`,增加了 HTTP 探测功能
- 将 banner 抓取集成到顺序执行的 `PortScanner` 和 `ThreadedPortScanner` 中(在线程中并发处理)
- 为 CLI 工具和 FastAPI REST API 添加了获取 banner 的支持
**第 5 天**
- 重构扫描器,使用 `ServiceDetector` 分析 banner 并检测服务(识别 SSH、HTTP、FTP、AMQP 等)
- 通过将端口扫描、banner 抓取和服务检测合并为**每个端口单次连接**,优化了网络效率
- 修复了服务检测中的导入和 socket 超时处理问题,以防止捕获空 banner 和引擎崩溃
**第 6 天**
- 实现并集成了 `VersionDetector`,带有针对 SSH、HTTP、FTP、SMTP 和 MySQL banner 的专门解析正则表达式
- 将版本检测直接集成到顺序和多线程扫描器中
- 更新了 FastAPI endpoint schema 和 CLI 表格输出,以显示检测到的软件和版本字段
**第 7 天**
- 实现了 `CVELookup` 类,具有自定义版本解析、范围检查和子字符串匹配功能
- 创建了本地示例漏洞数据库 (`vulnerabilities.json`),包含已知的安全漏洞(例如针对 OpenSSH、Apache、nginx、vsFTPd、ProFTPD、Exim、MySQL 的漏洞)
- 添加了新的 FastAPI REST endpoint:`/api/v1/cve/lookup` 和 `/api/v1/cve/search`
- 将自动 CVE 匹配集成到主要的 `/api/v1/scan` 端口扫描结果中
**第 8 天**
- 创建了 `RiskScorer` 模块,将 CVSS 分数分类为 NVD 严重性级别 (LOW, MEDIUM, HIGH, CRITICAL)
- 实现了遵循官方 CVSS v3.1 Roundup 规范数学计算的聚合主机风险评分算法
- 在 `/api/v1/scan` FastAPI endpoint 响应中添加了整体的 `risk_summary` 指标
- 使用 rich 控制面板、严重性细分和详细的修复建议,将 CLI 端口扫描器 (`test_scan.py`) 升级为美观的交互式安全评估仪表板
**第 9 天**
- 添加了 HTML 报告生成模块 (`HTMLReportGenerator`)
- 创建了新的 FastAPI endpoint `POST /api/v1/scan/report`,用于执行扫描并直接返回简化的 HTML 漏洞报告
- 更新了 `app/main.py` 以路由和处理 HTML 报告请求
**第 10 天**
- 集成 SQLite 数据库,以持久化存储网络扫描历史和严重性评分指标
- 在 `app/database.py` 中实现了数据库操作,具有自动连接处理和表初始化功能
- 添加了 `/api/v1/scans` endpoint 以列出所有过去的扫描摘要
- 添加了 `/api/v1/scans/{scan_id}` endpoint 以检索完整的扫描详细日志
- 添加了 `/api/v1/scans/{scan_id}/report` endpoint,用于动态生成和检索已保存扫描的 HTML 报告
**第 11 天**
- 添加了 Docker 容器化支持,采用多阶段 `Dockerfile` 和 python:3.12-slim 基础镜像
- 配置了 `docker-compose.yml`,支持通过单个命令进行开发部署,并启用了代码卷挂载
**第 12 天**
- 构建了 React + Vite 前端仪表板 (`frontend/`),具有现代深色玻璃拟态 UI
- 实现了扫描表单,包含目标 IP、端口列表、线程数、超时时间和 banner 抓取开关
- 添加了实时扫描结果表,包含服务、版本和每个端口的 CVE 漏洞卡片
- 集成了整体主机风险摘要面板,包含 CVSS 分数、严重性徽章和严重性细分图表
- 构建了扫描历史侧边栏,从 `/api/v1/scans` 加载所有过去的扫描,并允许用户深入查看任何已保存的报告
- 在 FastAPI 后端启用了 CORS,以支持来自 React 开发服务器的跨域请求
- 配置了 Vite 代理(`/api` → `http://localhost:8000`)以实现无缝的本地开发
## 路线图
- [x] 并发扫描
- [x] FastAPI REST endpoint
- [x] 用于服务版本的 banner 抓取
- [x] 健壮的服务检测和映射
- [x] 软件和版本提取
- [x] CVE 查找
- [x] CVSS 风险评分
- [x] 报告导出 (JSON / HTML)
- [x] 扫描历史的数据库持久化
- [x] Docker 容器化
- [x] 带有扫描历史和 CVE 可视化的 React 前端仪表板
标签:AV绕过, FastAPI, Python, React, Syscalls, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络扫描, 网络测绘, 请求拦截, 逆向工具