MuskanDhamuria/WebVulnerabilityScanner

GitHub: MuskanDhamuria/WebVulnerabilityScanner

一个基于 Python 的模块化 Web 漏洞扫描器,用于自动检测 SQL 注入、反射型 XSS 和缺失的 HTTP 安全头,支持多格式报告输出与风险评分。

Stars: 0 | Forks: 0

# 🛡️ Web 漏洞扫描器 一个使用 Python 构建的生产级、模块化安全扫描器,用于检测常见的 Web 漏洞,包括 SQL 注入、反射型 XSS 和缺失的安全头。 ## 📋 功能特性 ### 核心扫描能力 - **SQL 注入检测** - 基于错误和基于响应的 SQLi 检测 - **跨站脚本攻击 (XSS)** - GET/POST 参数和表单中的反射型 XSS - **安全头分析** - 验证 6 个关键的 HTTP 安全头 - **智能 Web 爬取** - 基于广度优先搜索 (BFS) 且尊重域边界的爬虫 ### 高级特性 - ✅ 多格式报告(JSON、HTML、CSV) - ✅ 风险评分系统(HIGH/MEDIUM/LOW) - ✅ 速率限制与隐匿头 - ✅ 全面的日志记录 - ✅ 深度限制爬取 - ✅ 表单检测与测试 - ✅ 重复 URL 处理 ## 📦 架构 ``` web-vuln-scanner/ ├── main.py # CLI entry point ├── crawler.py # Web crawler ├── reporter.py # Report generator ├── config.py # Configuration ├── utils.py # Utility functions │ ├── scanners/ │ ├── sqli_scanner.py # SQL injection scanner │ ├── xss_scanner.py # XSS scanner │ ├── headers_scanner.py # Security headers scanner │ ├── reports/ # Generated reports ├── templates/ │ └── report.html # HTML report template │ └── requirements.txt # Dependencies ``` ## 🚀 安装说明 ### 前置条件 - Python 3.7+ - pip ### 安装步骤 ``` # Clone 或下载项目 cd web-vuln-scanner # 安装依赖 pip install -r requirements.txt ``` ## 💻 使用方法 ### 基础扫描 ``` python main.py --url http://localhost:8080 ``` ### 高级选项 ``` # 指定 crawl depth python main.py --url http://localhost:8080 --depth 3 # 选择输出格式 python main.py --url http://localhost:8080 --output json html csv # 启用 verbose logging python main.py --url http://localhost:8080 --verbose # 综合示例 python main.py --url http://vulnerable-app.local --depth 2 --output json html --verbose ``` ### 命令行参数 | 参数 | 类型 | 默认值 | 描述 | |----------|------|---------|-------------| | `--url` | string | 必填 | 要扫描的目标 URL | | `--depth` | int | 2 | 最大爬取深度 | | `--output` | string | json html | 报告格式 (json/html/csv) | | `--verbose` | flag | False | 启用详细日志记录 | ## 🔍 扫描内容 ### SQL 注入测试 - **使用的 Payload:** - `' OR '1'='1` - `' OR 1=1 --` - `' OR 1=1 #` - `1' UNION SELECT NULL --` - `' AND SLEEP(5) --` - 以及更多... - **检测方法:** - SQL 错误模式匹配 - 响应长度/状态码分析 - 基于时间的检测指标 - **测试点:** - URL 查询参数 - POST 表单输入 ### XSS (反射型) 测试 - **使用的 Payload:** - `` - `` - `` - 以及更多... - **检测:** 检查 payload 是否未经转义地反射在响应中 - **测试点:** - URL 查询参数 - POST 表单输入 ### 安全头分析 检查是否存在以下项: - Content-Security-Policy (CSP) - X-Frame-Options - X-Content-Type-Options - Strict-Transport-Security (HSTS) - Referrer-Policy - Permissions-Policy 同时验证头的强度(例如,检测 CSP 中的 unsafe-inline) ## 📊 报告格式 ### JSON 报告 包含结构化数据: ``` { "metadata": { "target_url": "http://example.com", "scan_timestamp": "2024-01-01T12:00:00", "report_generated": "2024-01-01T12:05:00" }, "statistics": { "total_vulnerabilities": 5, "by_severity": {"HIGH": 2, "MEDIUM": 2, "LOW": 1}, "risk_score": 10 }, "vulnerabilities": [...] } ``` ### HTML 报告 - 交互式仪表板,包含: - 带有可视化卡片的摘要统计 - 颜色编码的严重程度指示器 - 详细的漏洞列表 - Payload 信息 - 响应式设计 ### CSV 报告 带有以下列的制表符分隔导出: - 类型、URL、参数、Payload、证据、方法、严重程度 ## 🔒 安全考虑 ### 免责声明 ⚠️ **本工具仅用于授权的安全测试。** ### 合法使用 - ✅ 在您拥有的系统上进行测试 - ✅ 在获得明确书面许可的情况下进行测试 - ✅ 在有意设置漏洞的应用上使用(DVWA、WebGoat 等) - ❌ 请勿在未授权的目标上使用 - ❌ 未经授权的访问是非法的 ### 推荐测试环境 - **DVWA** (Damn Vulnerable Web Application) - **WebGoat** (OWASP 学习平台) - **bWAPP** (buggy web application) - **Juice Shop** (OWASP 漏洞应用) - 您自己的本地测试服务器 ## 📝 示例运行 ### 示例 1:扫描 Localhost ``` $ python main.py --url http://localhost:8080 --depth 2 ╔══════════════════════════════════════════════════════════╗ ║ WEB VULNERABILITY SCANNER ║ ╚══════════════════════════════════════════════════════════╝ Target: http://localhost:8080 Started: 2024-01-01 12:00:00 ============================================================ PHASE 1: WEB CRAWLING ============================================================ [12:00:01] Starting crawl... [12:00:05] Crawl complete. Discovered 12 page(s) [12:00:05] Discovered 3 form(s) ✓ Crawling complete - Pages discovered: 12 - Forms found: 3 ============================================================ PHASE 2: SQL INJECTION SCAN ============================================================ [12:00:06] Starting SQL injection scan on 15 URL(s) [12:00:15] Found error-based SQLi in id parameter ✓ SQL injection scan complete - Vulnerabilities found: 2 ============================================================ PHASE 3: XSS SCAN ============================================================ [12:00:16] Starting XSS scan on 15 URL(s) [12:00:25] Found reflected XSS in search parameter ✓ XSS scan complete - Vulnerabilities found: 1 ============================================================ PHASE 4: SECURITY HEADERS SCAN ============================================================ [12:00:26] Starting security headers scan on 15 URL(s) [12:00:35] Security headers scan complete - Issues found: 6 ============================================================ SUMMARY ============================================================ Total vulnerabilities found: 9 - SQL Injection: 2 - XSS: 1 - Security Headers: 6 ============================================================ GENERATING REPORTS ============================================================ ✓ JSON report generated ✓ HTML report generated Reports saved to: reports/ ============================================================ SCAN COMPLETED ============================================================ Duration: 35.42 seconds ============================================================ SCAN SUMMARY ============================================================ Target: http://localhost:8080 Duration: 35.42 seconds Vulnerabilities Found: 9 - SQL Injection: 2 - XSS: 1 - Security Headers: 6 ============================================================ ✓ Reports generated in the 'reports/' directory ``` ### 示例 2:开启 Verbose 模式 ``` $ python main.py --url http://localhost/dvwa --depth 1 --verbose [INFO] Crawler initialized for domain: localhost [DEBUG] Crawling [0]: http://localhost/dvwa [DEBUG] Found 5 form(s) on http://localhost/dvwa [DEBUG] Found 8 link(s) on http://localhost/dvwa [DEBUG] Crawling [1]: http://localhost/dvwa/login.php [DEBUG] Found 1 form(s) on http://localhost/dvwa/login.php ... ``` ## 📈 风险评分 扫描器使用加权的严重性系统: | 严重程度 | 权重 | 分数点 | |----------|--------|--------| | HIGH | 3 | SQL Injection | | MEDIUM | 2 | XSS | | LOW | 1 | 缺失 Headers | **风险分数 = (HIGH × 3) + (MEDIUM × 2) + (LOW × 1)** ## 🛠️ 配置 编辑 `config.py` 以进行自定义: ``` # Crawling 设置 DEFAULT_DEPTH = 2 # Max crawl depth DEFAULT_TIMEOUT = 10 # Request timeout DEFAULT_DELAY_BETWEEN_REQUESTS = 0.5 # Rate limiting # Testing payloads SQLi_PAYLOADS = [...] # SQL injection payloads XSS_PAYLOADS = [...] # XSS payloads # Detection 阈值 MIN_RESPONSE_LENGTH_DIFF = 100 # Blind SQLi detection ``` ## 🐛 故障排除 ### SSL 证书错误 扫描器在测试时会禁用 SSL 验证。如果您需要启用它: ``` # 在 utils.py 中,修改 make_request(): verify=True # instead of False ``` ### 连接超时 在 config.py 中增加超时时间: ``` DEFAULT_TIMEOUT = 20 # Increase from 10 ``` ### 速率限制 / 429 错误 增加请求之间的延迟: ``` DEFAULT_DELAY_BETWEEN_REQUESTS = 1.0 # Increase from 0.5 ``` ## 📚 代码质量 - ✅ 采用独立扫描器类的模块化设计 - ✅ 全面的错误处理 - ✅ 多级别的日志记录(DEBUG、INFO、WARNING、ERROR) - ✅ 遵循 PEP 8 风格规范 - ✅ Type hints 和 docstrings - ✅ 可重用的工具函数 - ✅ 配置管理 ## 🎓 学习价值 本项目展示了: - **Web 安全:** SQLi、XSS、安全头 - **Web 爬取:** BFS、URL 规范化、重复处理 - **API 测试:** HTTP 方法、参数注入 - **CLI 设计:** argparse、结构化日志记录 - **报告生成:** JSON、基于 Jinja2 的 HTML、CSV - **Python 最佳实践:** OOP、模块化、错误处理 ## 🤝 未来更新 - 额外的漏洞类型(CSRF、XXE 等) - 使用 asyncio/多线程进行并行扫描 - 用于基线响应的数据库 - 身份验证处理 - Session 管理 - 更多 Payload 变体
标签:AppImage, BeEF, BFS爬虫, CISA项目, CSV报告, HTML报告, JSON报告, Python, SQL注入检测, Web安全, Web应用防火墙, XSS检测, 加密, 反射型XSS, 安全合规模板, 安全头分析, 开源安全工具, 无后门, 模块化架构, 漏洞扫描器, 爬虫, 网络安全, 蓝队分析, 逆向工具, 逆向工程平台, 防御机制验证, 隐私保护