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, 加密, 字符串匹配, 密码管理, 插件系统, 数据可视化, 数据统计, 漏洞扫描器, 端口扫描, 自动化报告, 逆向工具