rohithreddy-cyber/vulnscan-web-vulnerability-scanner
GitHub: rohithreddy-cyber/vulnscan-web-vulnerability-scanner
VulnScan 是一款基于 Python Flask 的实时 Web 漏洞扫描器,集多线程端口扫描、服务指纹识别、HTTP 安全头分析与风险评分于一体,并可生成专业 PDF/TXT 审计报告。
Stars: 1 | Forks: 0
# VulnScan – 实时 Web 漏洞扫描器与端口审计工具
**VulnScan** 是一个功能完备、可用于生产环境的网络安全审计 Web 应用程序。它基于 Python 并利用 Flask 微框架构建,能够执行**真正的 TCP 连接探测**、**Socket Banner 抓取**以及**实时 HTTP 请求检查**(通过 `requests` 库),从而对主机进行审计并汇总全面的漏洞评估。
本应用专门设计为网络安全学生的迷你项目和作品集展示,非常适合用于 GitHub、技术面试和实习演示。
## ⚠️ 教育免责声明及仅供授权使用
## 核心功能与增强特性
1. **交互式仪表板**:包含实时统计卡片,如总扫描次数、今日扫描次数、开放端口总数、平均扫描时间、最近扫描目标,以及高/中/低风险漏洞的分布明细。
2. **执行摘要**:附加了一段动态的安全评估段落,概述了被审计目标的威胁态势、漏洞总数、风险百分比和风险等级。
3. **高级风险评分系统**:使用专门的发现严重性权重逻辑计算风险:
- 高危发现 = 30 分
- 中危发现 = 15 分
- 低危发现 = 5 分
- 最高风险评分 = 100%(通过带有颜色标识的 Bootstrap 进度条进行可视化展示)。
4. **扫描统计信息**:跟踪已扫描端口总数、开放端口、关闭端口、被过滤端口(通过 socket 连接超时动态区分)、扫描持续时间以及平均端口延迟。
5. **分类修复建议**:自动将发现的漏洞和建议按安全领域(网络安全、服务器安全、Web 安全和通用最佳实践)进行分组,并以卡片网格形式展示。
6. **唯一报告 ID**:每次扫描都会根据扫描日期和当日索引分配一个唯一的追踪标识符(例如 `VS-20260709-0001`)。
7. **报告导出器(TXT 和 PDF)**:
- **纯文本(TXT)**:格式化的网格报告,概述目标详细信息、开放端口、暴露的 Banner、安全标头和分类的漏洞。
- **ReportLab PDF 编译器**:创建多页的 PDF 报告,包含**专业封面**、**目录**、**执行摘要和统计面板**、**详细发现**、**修复建议**以及**双次扫描的自定义页码页脚**(“Page X of Y”)。
8. **交互式归档与搜索**:历史页面支持动态的客户端搜索、排序(日期、风险评分、目标名称)、风险等级过滤、日期过滤以及快速的 PDF/TXT 下载。
9. **更好的加载体验**:通过 Server-Sent Events (SSE) 将实时进度更新推送到 UI,并配有动画进度条。
10. **重复扫描绕过**:将扫描结果缓存 5 分钟。如果请求对同一主机进行扫描,服务器会自动重定向到缓存的报告,以节约资源。
## 技术栈
- **后端:** Python Flask
- **数据库:** SQLite3(内置)
- **扫描与网络审计:** `socket`, `requests`, `urllib3`, `ipaddress`(纯 Python 标准库)
- **文档生成:** `reportlab`(PDF 编译器)
- **前端设计:** HTML5, CSS3, Bootstrap 5, Font Awesome, JavaScript (ES6)
## 文件夹结构
```
vulnscan/
├── app.py # Main Flask application, routes, and SSE streaming
├── config.py # Timeouts, database paths, and thread limits
├── requirements.txt # Python dependency list
├── README.md # Setup guide and features documentation
│
├── scanner/
│ ├── __init__.py
│ ├── port_scanner.py # Multithreaded TCP port scanning (Open/Closed/Filtered)
│ ├── banner_scanner.py # Socket-level service banner grabbing and version parsing
│ ├── service_detector.py # Port-to-service signature resolver
│ ├── header_checker.py # HTTP request response header analyzer (CSP, HSTS, etc.)
│ ├── vulnerability_checker.py # Correlates open ports and headers to CWE/OWASP findings
│ └── report_generator.py # Formats plain-text (TXT) and custom ReportLab PDF reports
│
├── database/
│ └── db.py # SQLite schema configuration, migrations, and transactions
│
├── reports/ # Local cache directory for compiled PDF/TXT reports
│
├── static/
│ ├── css/
│ │ └── custom.css # Custom custom stylesheets, animations, and badges
│ └── js/
│ └── main.js # Real-time SSE handler, progress bar, and history filtering
│
├── templates/
│ ├── base.html # Main template containing layout, header, footer
│ ├── dashboard.html # Metrics cards and recent scan lists
│ ├── scan.html # Target input panel and animated progress checklists
│ ├── report_view.html # Detailed web-based audit report view
│ ├── history.html # Interactive scan archives with sort and filter panels
│ └── about.html # Detailed developer profile, objectives, and tech stack
│
└── utils/
├── __init__.py
└── validation.py # Domain/IP validators, Punycode parser, and GeoIP lookup
```
## 安装与设置
### 前置条件
- 您的系统上需安装 Python 3.8+。
### 步骤
1. **克隆/下载仓库**并导航至项目目录:
cd "Vulnerability Scanner (Mini Project)/vulnscan"
2. **安装依赖项**:
pip install -r requirements.txt
3. **启动 Flask 服务器**:
python app.py
4. **打开 Web 仪表板**:
在您的 Web 浏览器中访问 `http://127.0.0.1:5000`。
## 许可证与致谢
基于 MIT 许可证分发。由网络安全学生 **Rohith Reddy** 出于教育目的开发。
保留所有权利 © 2026。
标签:Flask, 加密, 字符串匹配, 密码管理, 插件系统, 数据可视化, 数据统计, 漏洞扫描器, 端口扫描, 自动化报告, 逆向工具