sophireaks/Vulnerability-Scanner
GitHub: sophireaks/Vulnerability-Scanner
一款带 Flask Web 界面和 HTML 报告输出的模块化轻量 Web 漏洞扫描器,专注于非破坏性安全检查。
Stars: 0 | Forks: 0
# 漏洞扫描器
一个小巧、模块化的 **Web 漏洞扫描器**,带有 Flask 前端和 HTML 报告输出。本项目作为个人网络安全学习项目而构建,旨在练习安全的 Python 开发、模块化设计以及清晰的漏洞报告。
## 功能
- 基于 Flask 构建的 **Web UI**,支持通过浏览器启动扫描
- **模块化 Python 核心**:独立的 `discovery`、`scanner`、`reporting` 和 `tasks` 模块,各部分可独立扩展
- **非破坏性检查** — 仅限被动观察和安全探测
- **HTML 报告输出** — 可读性强、易于共享的发现结果,可直接发送给审阅者
- **防御性编程**:具备超时、异常处理和结构化日志功能,确保工具能够优雅降级而非直接崩溃
- 发布了 **SECURITY.md** 政策,用于负责任的漏洞披露
## 技术栈
| 组件 | 工具 |
|---|---|
| 语言 | Python 3.11+ |
| Web 框架 | Flask |
| 持久化 | SQLite (通过 SQLAlchemy) |
| 报告 | HTML 模板 |
| 并发 | 后台任务 |
## 项目结构
```
.
├── app.py # Flask application entrypoint
├── discovery.py # Target discovery and enumeration
├── scanner.py # Vulnerability checks
├── reporting.py # HTML report generation
├── tasks.py # Background scan tasks
├── templates/ # Jinja2 templates for the web UI
├── vulnerabilities/ # Individual check definitions
├── config.ini # Scanner configuration
├── requirements.txt # Python dependencies
├── vulnerability_report.html # Sample report
├── SECURITY.md # Responsible disclosure policy
└── README.md
```
## 快速入门
### 前置条件
- Python 3.11+
- 一个您拥有**授权**进行扫描的目标(例如 `127.0.0.1`、本地虚拟机或 TryHackMe / HackTheBox 机器)
### 安装
```
git clone https://github.com/sophireaks/Vulnerability-Scanner.git
cd Vulnerability-Scanner
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
python app.py
```
然后在浏览器中打开 Flask 打印的 URL(通常是 `http://127.0.0.1:5000`)。
### 或者使用 Docker
如果您更喜欢使用 Docker 而非本地 Python 环境:
```
docker build -t vuln-scanner:dev .
docker run --rm -p 5000:5000 vuln-scanner:dev
```
然后在浏览器中打开 `http://127.0.0.1:5000`。
## 配置
编辑 `config.ini` 以调整默认行为(超时时间、允许的目标、输出路径)。
## 报告
扫描完成后,将生成一份 HTML 报告。项目中包含一份示例文件 `vulnerability_report.html`。
## 安全使用
在使用此工具之前,请阅读 [`SECURITY.md`](./SECURITY.md)。简而言之:
- 仅扫描您拥有或获得**书面**许可测试的系统。
- 作者对任何滥用行为不承担责任。
- 所有检查在设计上均是非破坏性的——请勿修改此工具以针对您无法控制的系统尝试进行利用。
## 路线图
- [ ] 添加多线程扫描以实现更快的扫描速度
- [ ] 集成轻量级 CVE 查找功能用于服务指纹识别
- [ ] 将发现结果导出为 JSON 格式,以便导入 SIEM
- [ ] 为每项发现结果添加基础的 CVSS 严重性评分
- [ ] 在 Web UI 中加入身份验证和按用户划分的扫描历史记录
## 构建此项目的收获
- 如何使用清晰的模块边界(`discovery`、`scanner`、`reporting`、`tasks`)来构建 Python 项目。
- 如何在专注于安全的后端之上构建小型的 Flask Web UI。
- **防御性编程**在安全工具中的重要性——崩溃的安全工具对任何人都毫无帮助。
- 真实扫描器遵循的端到端工作流程:**发现 -> 枚举 -> 检测 -> 报告**。
- 如何撰写清晰、可执行且无歧义的发现结果——这是真实 SOC 和渗透测试报告中期望的格式。
## 作者
**Sophireak Soeng**
信息技术工程专业学生,金边皇家大学
[LinkedIn](https://www.linkedin.com/in/sophireak-soeng-10b668265/) · [TryHackMe](https://tryhackme.com/p/Sophireak.S) · sophireaksoeng@gmail.com
## 许可证
MIT License — 详见 `LICENSE` 文件。
标签:Flask, HTML报告, Jinja2, Python, Python开发, Snort++, SQLAlchemy, SQLite, Web安全, Web应用扫描, 加密, 反取证, 多模态安全, 安全评估, 密码管理, 插件系统, 无后门, 模块化设计, 漏洞扫描器, 白盒测试, 网络安全, 网络安全学习, 自动化修复, 蓝队分析, 被动扫描, 请求拦截, 逆向工具, 隐私保护, 非破坏性测试