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, 云存储安全, 插件系统, 数据统计, 无后门, 端口扫描, 网络扫描, 网络测绘, 请求拦截, 逆向工具