sergioacosta-dev/vuln-scanner
GitHub: sergioacosta-dev/vuln-scanner
基于Flask的Nmap漏洞扫描器,用于发现网络漏洞。
Stars: 0 | Forks: 0
# 漏洞扫描器
一个独立的 Flask 网络应用,使用 Nmap NSE 漏洞脚本扫描配置的网络目标,将结果存储在 SQLite 中,并在发现新漏洞时发送电子邮件和桌面通知。
## 功能说明
- 通过网页仪表板添加目标主机和端口
- 使用 Nmap `--script vuln` 扫描以检测已知漏洞
- 将所有发现存储在 SQLite 中,并在扫描之间去重
- 在发现新漏洞时发送 Gmail 邮件和 Windows 桌面通知
- 定时扫描每 6 小时在后台自动运行
## 架构
```
User → Flask Dashboard
↓
[Targets DB] → Scanner (Nmap NSE) → [Findings DB]
↓
Notifier (Email + Desktop)
↑
APScheduler (every 6h)
```
## 技术栈
- Python 3 / Flask
- python-nmap (Nmap 包装器)
- APScheduler (后台扫描任务)
- SQLite (内置,无需服务器)
- plyer (Windows 桌面通知)
- smtplib (Gmail SMTP,stdlib)
- python-dotenv
## 安装
### 环境要求
- Python 3.10+
- 已安装 Nmap:https://nmap.org/download.html
- 启用两步验证的 Gmail 账户
### 安装步骤
```
python -m venv venv
source venv/Scripts/activate # Windows Git Bash
# 或使用 PowerShell:
venv\Scripts\Activate.ps1
pip install -r requirements.txt
```
### 配置
将 `.env.example` 复制到 `.env` 并填写您的凭证:
```
GMAIL_USER=your@gmail.com
GMAIL_APP_PASSWORD=xxxx xxxx xxxx xxxx
NOTIFY_EMAIL=your@gmail.com
SCAN_INTERVAL_HOURS=6
```
要生成 Gmail 应用密码:谷歌账户 → 安全 → 两步验证 → 应用密码。
### 运行
```
python app.py
```
仪表板在 http://127.0.0.1:5000
## 我学到的
- **安全:** Nmap NSE 脚本如何检测已知漏洞,基于 CVE 的严重性推断
- **Flask:** 多路由应用,Jinja2 模板,闪存消息,测试客户端
- **调度:** 在 Flask 应用内部运行的 APScheduler 后台任务
- **通知:** 使用应用密码的 Gmail SMTP,通过 plyer 的 Windows 桌面提示
- **SQLite:** 关系型模式设计,去重逻辑,跨表连接
## 截图
标签:2-Step Verification, APScheduler, CTI, CVE, Flask, Gmail, Gmail API, GPT, Nmap, Nmap脚本, NSE, Python, SQLite, Web界面, 数字签名, 无后门, 桌面通知, 漏洞管理, 环境变量配置, 用户认证, 电子邮件通知, 网络安全, 自动化任务调度, 虚拟驱动器, 逆向工具, 隐私保护