raj151020/web-vuln-scanner

GitHub: raj151020/web-vuln-scanner

基于 Python 异步架构的轻量级 Web 漏洞扫描器,配备 Flask 可视化仪表盘,支持 23+ 检测模块和多格式报告导出。

Stars: 1 | Forks: 0

# 异步 Web 漏洞扫描器

Python 3.10+ Flask 3.x asyncio + aiohttp MIT License CI status Repo size Last commit

## 维护者说明 - 本项目有意设计为 **本地优先**(默认情况下仪表盘无认证)。 - 在共享/公共网络上运行前,请参阅 [SECURITY.md](SECURITY.md)。 - 欢迎通过 [CONTRIBUTING.md](CONTRIBUTING.md) 进行贡献。 ## 目录 - [为什么开发这个项目](#why-this-project) - [核心功能](#key-features) - [架构](#architecture) - [快速开始](#quick-start) - [使用方法](#usage) - [检测模块](#detection-modules) - [性能](#performance) - [截图](#screenshots) - [项目结构](#project-structure) - [文档](#documentation) - [维护者说明](#maintainer-notes) - [贡献](#contributing) - [许可证](#license) ## 为什么开发这个项目 大多数开源扫描器要么是速度慢的单线程脚本,要么是学习曲线陡峭的庞大框架。本项目取了个折中方案: - **快速** — 异步 I/O 比同步扫描提速约 9 倍 - **模块化** — 每个漏洞类别都是独立的模块,易于扩展 - **可视化** — Flask 仪表盘支持实时进度、严重性图表和一键生成报告 - **经过测试** — 附带一个对抗性测试服务器,覆盖每个检测模块 专为实际的 AppSec 验证、作品集展示和技术面试而构建。 ## 核心功能 | 类别 | 详情 | |---|---| | **扫描引擎** | 异步编排器,支持可配置的并发、速率限制、响应缓存 | | **发现** | 智能爬虫,支持 JS 端点提取、表单检测、参数分类 | | **检测** | 23+ 个模块:SQLi、XSS、CSRF、CMDi、遍历、SSRF、JWT、IDOR、走私等 | | **配置** | Quick / Standard / Deep 预设,可调整爬取限制、超时、提前停止 | | **仪表盘** | Flask UI,支持实时扫描进度、严重性细分、风险评分 | | **报告** | 导出为 HTML、JSON、CSV — 包含 CVSS v3.1 估算和 OWASP 映射 | | **测试** | 内置对抗性服务器,包含 100+ 个有意设置为脆弱的端点 | ## 架构 ``` flowchart LR UI[Flask Dashboard] --> ORCH[Async Scan Engine] ORCH --> CRAWL[Enhanced Crawler] ORCH --> FORMS[Form & Param Extraction] ORCH --> MODS[23+ Vuln Modules] MODS --> DEDUP[Finding Dedup + Scoring] DEDUP --> RPT[Report Export] ORCH --> DB[(SQLite)] TEST[Adversarial Test Server] -.-> MODS ``` **核心组件:** | 文件 | 角色 | |---|---| | `app.py` | 仪表盘路由、扫描生命周期、报告下载 | | `database.py` | SQLite 持久化(扫描、发现、页面) | | `scanner/async_scan_engine.py` | 异步编排器 —— 并发调度所有模块 | | `scanner/async_engine.py` | 共享 HTTP 客户端 —— 池化、速率限制、缓存 | | `scanner/scan_config.py` | 扫描配置和可调参数 | | `scanner/enhanced_crawler.py` | 页面和端点发现 | | `scanner/reporter.py` | 报告生成,包含 CVSS + 修复建议 | ## 快速开始 ``` # 克隆 git clone https://github.com/rajkareliya/web-vuln-scanner.git cd web-vuln-scanner # 虚拟环境 python -m venv .venv # Windows PowerShell: .\.venv\Scripts\Activate.ps1 # Linux / macOS: # source .venv/bin/activate # 安装 pip install -r requirements.txt # 运行 python app.py ``` 在浏览器中打开 **http://127.0.0.1:5001**。 ## 使用方法 ### 仪表盘 ``` python app.py ``` 选择目标 URL 和扫描配置(Quick / Standard / Deep),然后实时查看进度。扫描完成后,查看交互式报告或将其下载为 HTML / JSON / CSV。 ### 对抗性测试服务器 一个内置的 Flask 服务器,包含 100+ 个有意设置为脆弱的端点,用于回归测试: ``` python tests/test_server.py # starts on :5099 python tests/run_pentest_suite.py # runs the full test suite ``` ### 基准测试 比较同步与异步的性能: ``` python benchmark_scan.py --target http://127.0.0.1:5099 ``` ## 检测模块
注入 (Injection) - SQL 注入(基于报错、布尔盲注、基于时间) - JSON API SQL 注入 - 命令注入(包括盲注时序) - CRLF / Header 注入 - Host Header 注入
跨站脚本攻击 (XSS) - 反射型 XSS - 存储型 XSS(基于 Canary 验证) - 基于 DOM 的 XSS(源/汇分析) - 上下文感知 Payload - SVG 上传 XSS
服务端 - SSRF(含 IP 编码绕过、协议走私) - HTTP 请求走私(CL.TE / TE.CL) - Web 缓存投毒 - XXE(通过 OOB 检测)
访问控制与会话 - CSRF(Token 存在性 + SameSite Cookie 分析) - IDOR(顺序 ID 探测) - JWT 漏洞(alg:none、弱 HMAC、缺失 exp) - 开放重定向(3xx + JS + meta-refresh)
配置错误 - 缺失安全响应头 - CORS 配置错误 - 目录列举 - 敏感文件暴露(.env, .git, 备份文件) - 子域名接管 - 开放端口检测
## 性能 | 模式 | 运行时间 | 提速比 | |---|---:|---:| | 同步 | ~65 s | 1.0× | | **异步** | **~7.3 s** | **8.9×** | 对抗性回归测试(针对内置测试服务器): | 指标 | 结果 | |---|---:| | 测试用例 | 105 | | 检出数量 | 105 | | 检出率 | **100%** | ![Benchmark chart](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/48b6490062221450.svg) ## 截图 | 仪表盘 | 报告 | |---|---| | ![Dashboard](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/1009806936221451.png) | ![Report](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c436df035a221452.png) | ## 项目结构 ``` web-vuln-scanner/ ├── app.py # Flask dashboard ├── database.py # SQLite persistence ├── requirements.txt ├── scanner/ # Detection engine │ ├── async_scan_engine.py │ ├── async_engine.py │ ├── scan_config.py │ ├── enhanced_crawler.py │ ├── reporter.py │ ├── async_sqli.py # ... and 20+ more modules │ └── ... ├── templates/ # Jinja2 templates ├── static/ # CSS & JS ├── tests/ │ ├── test_server.py # Adversarial test server │ └── run_pentest_suite.py ├── docs/ # Architecture, methodology, case study ├── screenshots/ └── examples/reports/ # Sample output artifacts ``` ## 文档 | 文档 | 描述 | |---|---| | [架构](docs/architecture.md) | 系统设计和数据流 | | [安全方法论](docs/security_methodology.md) | 检测技术说明 | | [案例研究](docs/case_study.md) | 工程决策和经验教训 | | [渗透测试场景](docs/advanced_pentest_scenarios.md) | 对抗性绕过技术 | ## 贡献 欢迎贡献。请先开启一个 Issue 来讨论您想要进行的更改。有关指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 [MIT](LICENSE) — Raj Kareliya

专为学习、作品集展示和授权安全测试而构建。

标签:aiohttp, asyncio, ATT&CK 框架, CISA项目, Flask仪表盘, OWASP Top 10, Python安全工具, Web漏洞扫描器, 代码生成, 反取证, 可视化报告, 安全测试, 安全评估, 对称加密, 开源扫描器, 异步扫描, 攻击性安全, 渗透测试工具, 网络安全, 自动化审计, 计算机取证, 逆向工具, 隐私保护