zainabtariq24/VulnScanner

GitHub: zainabtariq24/VulnScanner

VulnScanner 是一款带实时 Dashboard 和自动爬虫的 Web 应用漏洞扫描器,专为教育目的演示常见 OWASP 漏洞的检测与报告流程而设计。

Stars: 0 | Forks: 0

# 🛡️ VulnScanner ### 带有实时 Web Dashboard 的 Web 应用漏洞扫描器 *检测最常见的 OWASP Web 漏洞,可视化结果,并导出专业的 PDF 报告。* [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b7cb36d4c3150956.svg)](https://github.com/zainabtariq24/VulnScanner/actions/workflows/ci.yml) [![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![Flask](https://img.shields.io/badge/Flask-3.0-000000?logo=flask&logoColor=white)](https://flask.palletsprojects.com/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Status](https://img.shields.io/badge/status-educational-success.svg)](#-disclaimer)
## 📖 概述 **VulnScanner** 是一个端到端的 Web 安全工具包,由三个协同工作的部分组成,旨在演示完整的*攻击 → 检测 → 报告*工作流: | 组件 | 功能 | |-----------|--------------| | 🎯 **模拟易受攻击网站** | 一个注入了**故意设计**的漏洞的 Flask 应用,用作安全、合法的测试目标。 | | 🔍 **扫描引擎** | 一个纯 Python 引擎,用于爬取目标并探测 10 类漏洞,报告带有严重性评级的发现结果。 | | 🖥️ **Web Dashboard** | 一个精美的 Web UI,用于运行扫描器、流式传输实时进度、绘制结果图表并导出 PDF 报告。 | ## ✨ 功能 - **9 项漏洞检查** — SQL Injection、Reflected & Stored XSS、CSRF、IDOR、Open Redirect、不安全的 Cookie flags、缺失的 Security Headers、HTTPS/HSTS 以及暴力破解 Rate Limiting。 - **🕷️ 自动爬虫** — 对目标(同域名)进行蜘蛛爬取以发现链接和表单,然后探测它找到的所有内容,因此覆盖范围不限于硬编码的 endpoint 列表。 - **💾 持久化扫描历史** — 已完成的扫描存储在 SQLite 中,重启后依然保留,可在专门的历史记录页面中浏览。 - **📤 多格式导出** — 支持将任何报告下载为 **PDF**、**JSON** 或 **CSV**。 - **严重性评分** — 每项发现均被评为 `HIGH` / `MEDIUM` / `LOW` / `INFO`。 - **实时 Web Dashboard** — 实时进度条、可展开的发现结果以及交互式圆环图 (Chart.js)。 - **CLI 模式** — 在终端中运行完整扫描,并输出整洁的表格报告。 - **可操作的修复建议** — 每个漏洞均附带具体的修复建议。 - **线程安全的扫描引擎** — 支持并发扫描,具有有界的内存状态。 - **经过测试** — 自动化的 `pytest` 测试套件(16 项测试),涵盖检测逻辑和爬虫。 ## 🖼️ 截图 **扫描输入** ![主页](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/b88a19d7c2150958.png) **结果 Dashboard** — 摘要卡片、交互式图表、可展开的发现结果以及修复建议 ![结果 Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/48d81f3c78151004.png) **扫描历史** — 跨重启持久化保存 ![扫描历史](https://raw.githubusercontent.com/zainabtariq24/VulnScanner/main/docs/screenshot-history.png) ## 🏗️ 架构 ``` ┌───────────────────────────┐ │ Web Dashboard (8080) │ Flask + Chart.js + ReportLab │ scanner_web/app.py │ └─────────────┬─────────────┘ │ imports ▼ ┌───────────────────────────┐ │ Scanner Engine │ requests + prettytable │ scanner/scanner.py │ └─────────────┬─────────────┘ │ HTTP probes ▼ ┌───────────────────────────┐ │ Target Website (5000) │ any authorised URL — │ mock_website/app.py │ bundled mock site by default └───────────────────────────┘ ``` ## 🧰 技术栈 - **语言:** Python 3.10+ - **Web 框架:** Flask 3 - **HTTP 客户端:** Requests - **报告生成:** ReportLab (PDF), PrettyTable (CLI) - **前端:** Vanilla JS, Chart.js, custom CSS - **测试:** pytest ## 🚀 快速开始 ### 1. 前置条件 - Python **3.10 或更高版本** - `pip` 以及(推荐)虚拟环境 ### 2. 安装 ``` # Clone the repository git clone cd Project # Create and activate a virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt ``` ### 3. 运行 打开**两个终端**。 **终端 1 — 启动目标(模拟易受攻击站点):** ``` python run_website.py # serves http://127.0.0.1:5000 ``` **终端 2 — 启动 Web Dashboard:** ``` python run_web_scanner.py # open http://127.0.0.1:8080 ``` 在 Dashboard 中输入 `localhost:5000` 并点击 **Scan Now**。 #### 更喜欢命令行? ``` python run_scanner.py # scans http://127.0.0.1:5000 by default python run_scanner.py http://example.com # scan any authorised target ``` ## 🔬 漏洞覆盖范围 | # | 漏洞 | 测试位置 | 严重性 | |---|---------------|-------------------|----------| | 1 | SQL Injection | `/login`, `/search` + 爬取的表单 | 🔴 High | | 2 | Reflected XSS | `/search` + 爬取的表单 | 🔴 High | | 3 | Stored XSS | `/comments` | 🔴 High | | 4 | IDOR | `/profile/`, `/api/user/` | 🔴 High | | 5 | 缺失 HTTPS / HSTS | 全站 | 🔴 High | | 6 | 缺失 CSRF 保护 | 所有表单 | 🟠 Medium | | 7 | 缺失 Security Headers | 全站 | 🟠 Medium | | 8 | 不安全的 Cookie flags | 全站 | 🟠 Medium | | 9 | Open Redirect | `/redirect`(+ 常见参数) | 🟠 Medium | | 10 | 无 Rate Limiting | `/login` | 🟠 Medium | ## 🧪 测试 ``` pip install -r requirements-dev.txt pytest -v ``` 该测试套件 Mock 了 HTTP 响应,因此可以离线运行,无需实际目标。 ## 📁 项目结构 ``` Project/ ├── mock_website/ # Intentionally vulnerable target app │ ├── app.py │ └── templates/ ├── scanner/ # Core scanning engine │ └── scanner.py ├── scanner_web/ # Web dashboard (Flask + Chart.js + PDF/JSON/CSV export) │ ├── app.py │ ├── storage.py # SQLite persistence for scan history │ └── templates/ ├── tests/ # Automated pytest suite │ └── test_scanner.py ├── run_website.py # Launch the mock target (port 5000) ├── run_web_scanner.py # Launch the web dashboard (port 8080) ├── run_scanner.py # Launch the CLI scanner ├── requirements.txt ├── requirements-dev.txt └── README.md ``` ## 🗺️ 路线图 - [x] 将扫描历史持久化到数据库 (SQLite) - [x] 用于自动发现 endpoint/表单的自动爬虫 - [x] 多格式导出 (PDF / JSON / CSV) - [x] Open Redirect 及不安全 cookie 检查 - [ ] 添加已认证的扫描支持(session/cookie 注入) - [ ] 扩展检查(SSRF、目录遍历) - [ ] 使用 `docker-compose` 对全栈进行 Docker 化 - [ ] CI pipeline (GitHub Actions) 运行测试套件 ## ⚠️ 免责声明 本项目仅供**教育目的**使用。 - 内置的 `mock_website` 是**故意不安全的** — 切勿将其部署到公共服务器。 - 仅扫描您**拥有**或获得**明确书面授权**进行测试的系统。未经授权的扫描可能是违法的。 - 作者对滥用行为不承担任何责任。 ## 📄 许可证 基于 [MIT License](LICENSE) 发布。
标签:CISA项目, Flask, Python, Web安全, 加密, 后端开发, 字符串匹配, 安全规则引擎, 无后门, 漏洞扫描器, 自动化爬虫, 蓝队分析, 逆向工具