2580369ll/cm-VulnScanner
GitHub: 2580369ll/cm-VulnScanner
一个基于 FastAPI 和 Vue 3 构建的自动化 Web 漏洞扫描平台,通过插件化引擎检测七大类 Web 漏洞并提供可视化管理与报告导出功能。
Stars: 1 | Forks: 0
# 🛡️ VulnScanner — 自动化 Web 漏洞扫描平台
一个 **Web 管理平台 + 自动化扫描引擎**,覆盖 **7 类 Web 漏洞**的自动化检测,支持 WAF 识别与自适应绕过,内置置信度评分与去重。
**在线演示:** http://121.43.231.191:8082 | Token: 通过环境变量 `SCANNER_TOKEN` 配置
## ✨ 核心功能 (v2.0)
### 漏洞检测(7 类)
| 功能 | 说明 |
|------|------|
| 🔍 **SQL 注入** | Error-based / Boolean Blind / Time Blind / Union-based,自动识别 5 种数据库 |
| 💉 **XSS** | 反射型 / 存储型 / DOM-based,3 级 Payload 库 + 自动变异绕过 |
| 📁 **文件上传** | 14 种绕过 Payload:扩展名/Content-Type/魔法字节/图片马/条件竞争 |
| 💻 **命令注入** | Time-based + Output-based + Error-based,覆盖 Linux/Windows |
| 📂 **路径遍历/LFI** | Linux/Windows 路径 + 编码绕过 + PHP 封装器检测 |
| 🌐 **SSRF** | 云元数据 / 内网服务探测 / 协议走私 / IP 绕过变体 |
| 🔓 **信息泄露** | 200+ 敏感路径:.git/.env/备份文件/Swagger/Actuator/phpinfo |
### 引擎特性
| 功能 | 说明 |
|------|------|
| 🛡️ **WAF 识别** | 自动检测阿里云WAF/Cloudflare/安全狗/长亭雷池/ModSecurity |
| 🔧 **WAF 绕过** | 统一绕过引擎:7 编码器 + 9 Tamper + 链式绕过 |
| 📊 **置信度评分** | 每个漏洞 0-1 置信度,自动去重保留最高分 |
| 🔌 **插件架构** | 继承 BasePlugin 即可扩展,自动注册到引擎 |
| 🔐 **Token 认证** | Bearer Token + 登录页 + 路由守卫 |
| 🚫 **任务取消** | Redis 信号机制,运行中任务可随时取消 |
### Web 管理平台
| 功能 | 说明 |
|------|------|
| 📊 **仪表盘** | ECharts 可视化统计,漏洞类型/严重度分布 |
| 📋 **任务管理** | 创建/列表/详情/删除,7 种漏洞类型可选 |
| ⚡ **实时进度** | WebSocket 推送扫描进度,漏洞实时展示 |
| 📄 **报告导出** | JSON/HTML 格式,含完整 PoC 和修复建议 |
| 🎯 **内置靶场** | 7 个 PHP 漏洞靶场用于自测验证 |
| 🐳 **一键部署** | Docker Compose 5 服务编排,10 分钟上线 |
## 🏗️ 技术架构
Nginx → Vue 3 (前端) + FastAPI (后端) → Redis + PostgreSQL
→ Celery Worker (扫描引擎)
- **后端框架:** FastAPI (异步) + Celery (异步任务)
- **前端:** Vue 3 + Element Plus + ECharts
- **数据库:** PostgreSQL + Redis
- **扫描引擎:** httpx (异步HTTP) + BeautifulSoup
- **容器化:** Docker Compose
## 🚀 快速启动
### 前置要求
- Docker & Docker Compose
- 至少 4GB 可用内存
### 启动
# 1. 克隆项目
cd vuln-scanner
# 2. 一键启动所有服务
docker-compose up -d
# 3. 等待服务就绪后访问
# 前端: http://localhost
# API 文档: http://localhost:8000/docs
# 靶场: http://localhost:8080/targets/sqli/
### 测试扫描器
1. 访问前端 `http://localhost`
2. 点击「创建任务」
3. 输入靶场 URL: `http://targets:80/targets/sqli/`
4. 勾选 SQL注入,点击「开始扫描」
5. 查看实时扫描进度和结果
## 📂 项目结构
vuln-scanner/
├── docker-compose.yml # 一键部署编排
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI 入口
│ │ ├── config.py # 配置管理
│ │ ├── api/ # REST API + WebSocket
│ │ ├── models/ # SQLAlchemy 模型
│ │ ├── scanner/ # ★ 扫描引擎
│ │ │ ├── engine.py # 调度引擎
│ │ │ ├── crawler.py # 爬虫
│ │ │ ├── waf_detector.py # WAF检测
│ │ │ ├── plugins/ # 漏洞插件
│ │ │ │ ├── sqli.py # SQL注入检测
│ │ │ │ ├── xss.py # XSS检测
│ │ │ │ └── file_upload.py # 文件上传检测
│ │ │ ├── payloads/ # Payload库
│ │ │ └── bypass/ # WAF绕过
│ │ ├── tasks/ # Celery 异步任务
│ │ └── utils/ # 工具(报告生成等)
│ └── requirements.txt
├── frontend/ # Vue 3 前端
│ └── src/
│ ├── views/ # 页面
│ │ ├── Dashboard.vue # 仪表盘
│ │ ├── TaskCreate.vue # 创建任务
│ │ ├── TaskDetail.vue # 任务详情(实时进度)
│ │ └── VulnDetail.vue # 漏洞详情
│ └── components/ # 通用组件
├── targets/ # 漏洞靶场
│ ├── sqli/index.php # SQL注入靶场
│ ├── xss/index.php # XSS靶场
│ └── upload/index.php # 文件上传靶场
└── nginx/ # Nginx 配置
## 🧪 漏洞靶场
项目内置 3 个 PHP 漏洞靶场用于测试:
| 靶场 | 地址 | 注入点 |
|------|------|--------|
| SQL 注入 | `/targets/sqli/` | GET search(Error-based) + POST login(Boolean盲注) + GET id(Time/Union) |
| XSS | `/targets/xss/` | GET q(反射型) + 留言板(存储型) + URL hash(DOM-based) |
| 文件上传 | `/targets/upload/` | 无过滤/Content-Type/扩展名黑名单/魔数校验 |
## 🔧 插件扩展
扫描器支持插件化扩展。添加新漏洞类型只需 3 步:
1. 在 `backend/app/scanner/payloads/` 添加 Payload 库
2. 继承 `BasePlugin` 实现 `check()` 方法
3. 在 `engine.py` 的 `plugin_map` 注册
# 示例: 添加 SSRF 插件
class SSRFPlugin(BasePlugin):
name = "ssrf"
vuln_type = "ssrf"
async def check(self, ip: InjectionPoint) -> list[Finding]:
# 检测逻辑...
pass
## 📝 待做功能
- [ ] 命令注入检测插件
- [ ] SSRF 检测插件
- [ ] 越权 (IDOR/BAC) 检测插件
- [ ] 用户认证系统
- [ ] 定时扫描任务
- [ ] 邮件/钉钉告警通知
## ⚠️ 免责声明
本工具仅供**授权的安全测试**和**学习研究**使用。使用者应遵守相关法律法规,在获得明确授权后方可对目标进行扫描。作者不对任何未授权使用导致的后果负责。
## 📄 License
MIT License
标签:CISA项目, DInvoke, DOE合作, Splunk, Web安全, XXE攻击, 安全测试平台, 搜索引擎查询, 测试用例, 蓝队分析, 请求拦截, 运行时操纵, 逆向工具