NanuOp/Web-Vulnerability-Scanner

GitHub: NanuOp/Web-Vulnerability-Scanner

一款基于 Python 的 Web 漏洞侦察扫描器,自动化映射与识别常见安全缺陷。

Stars: 0 | Forks: 0

# 🔍 Web 漏洞扫描器 ![Python](https://img.shields.io/badge/Python-3.8+-blue?style=flat-square&logo=python) ![License](https://img.shields.io/badge/License-MIT-green?style=flat-square) ![OWASP](https://img.shields.io/badge/Maps%20to-OWASP%20Top%2010-red?style=flat-square) ![Status](https://img.shields.io/badge/Status-Active-brightgreen?style=flat-square) ## ⚠️ 法律声明 ## 功能说明 扫描器自动化了 Web 应用程序渗透测试的侦察和初始探测阶段。它会爬取目标 URL,映射所有输入点,分析 HTTP 响应并生成优先级报告——涵盖评估过程中手动测试人员在第一阶段会执行的操作。 **扫描即侦察,而非利用。** 该工具仅识别潜在弱点,不会尝试利用它们。 ## 功能特性 | 功能 | 描述 | |---|---| | **递归网页爬取** | 按可配置深度跟踪同域链接,构建完整的应用程序映射 | | **WHOIS 侦察** | 获取注册商、创建日期、过期日期、名称服务器及组织详情 | | **robots.txt 与站点地图解析** | 提取禁止路径与站点地图 URL,常可发现敏感的管理/备份端点 | | **密钥与凭证检测** | 基于模式检测 AWS 密钥、Google API 密钥、Stripe 密钥、JWT 令牌与 GitHub 令牌 | | **安全标头审计** | 评估 HSTS、内容安全策略、X-Frame-Options、X-Content-Type-Options 与 CORS 误配置 | | **XSS 反射检测** | 被动检查参数值是否在响应中回显——这是 XSS 的关键指标 | | **开放重定向测试** | 将测试 URL 注入易受重定向的参数中,并检测服务器端开放重定向 | | **HTTP 方法探测** | 对每个端点测试 GET、POST、PUT、DELETE、PATCH、OPTIONS、HEAD 方法 | | **技术指纹识别** | 识别框架(WordPress、React、Django、Laravel)、服务器(Apache、Nginx)与 CDN | | **优先级评分引擎** | 分配 0–100 的风险评分,并划分严重等级:CRITICAL / HIGH / MEDIUM / LOW | | **多格式报告** | 生成可用于渗透测试的 HTML 报告(Jinja2)、JSON 导出与纯文本优先级文件 | ## 🔗 OWASP Top 10 覆盖范围 | OWASP 类别 | 扫描器检测方式 | |---|---| | A01 – 失效的访问控制 | 开放重定向测试、HTTP 方法探测 | | A02 – 加密失败 | 暴露的密钥检测、缺少 HSTS | | A03 – 注入 | 参数类型分析、回显值检测 | | A05 – 安全配置错误 | 缺失的安全标头、通配符 CORS | | A06 – 易受攻击的组件 | 技术指纹识别 | | A07 – 身份验证失败 | 暴露的凭证与令牌检测 | ## 安装 ``` # 克隆仓库 git clone https://github.com/your-username/web-vulnerability-scanner.git cd web-vulnerability-scanner # 安装依赖 pip install -r requirements.txt ``` **依赖要求:** ``` requests beautifulsoup4 python-whois tqdm jinja2 ``` ## 使用方法 ``` # 基本扫描 python main.py -u https://target.com # 使用自定义深度和请求延迟扫描 python main.py -u https://target.com -d 3 --delay 0.5 # 使用自定义输出目录扫描 python main.py -u https://target.com -d 2 --delay 1 -o results/ # 不进行开放重定向测试的扫描 python main.py -u https://target.com --no-redirect-test ``` **参数说明:** | 参数 | 默认值 | 描述 | |---|---|---| | `-u` | 必需 | 目标 URL | | `-d` | `2` | 爬行深度 | | `--delay` | `0` | 请求之间的延迟(秒) | | `-o` | 当前目录 | 报告输出目录 | | `--no-redirect-test` | — | 跳过开放重定向测试 | ## 示例输出 ``` Target : https://testsite.local Depth : 2 [WHOIS] Registrar: GoDaddy.com, LLC [WHOIS] Created: 2019-03-15 | Expires: 2026-03-15 [ROBOTS] Found 5 disallowed paths → /admin/ /backup/ /config/ [SITEMAP] Found 23 URLs Scanning: 100%|████████████████| 15/15 [00:12<00:00] [FINGERPRINT] Server: Apache/2.4.41 | Tech: PHP, WordPress [!] Missing HSTS header [!] Missing Content-Security-Policy [*** CRITICAL] HIGH VALUE >> /wp-admin/ [SECRET] Found on /config.js >> sk_live_a1b2c3... [REDIRECT] Open redirect via 'next' -> https://evil.com Priority Breakdown: CRITICAL (≥60) : 2 HIGH (40-59): 3 MEDIUM (20-39): 5 LOW (<20) : 5 Reports saved → scan_results/scan_report.html ``` ## 项目结构 ``` web-vulnerability-scanner/ │ ├── main.py # Core scanner — entry point ├── requirements.txt # Python dependencies │ ├── templates/ │ └── report_template.html # Jinja2 HTML report template │ ├── scan_results/ # Default output directory │ ├── scan_report.html # Visual pentest report │ ├── scan_results.json # Machine-readable findings │ └── priority_report.txt # Severity-sorted findings │ └── README.md ``` ## 评分机制说明 每个 URL 会根据以下因素获得综合优先级评分(0–100): ``` +15 per CRITICAL keyword match (admin, config, backup) +10 per HIGH keyword match +20 per leaked secret detected +8 per reflected parameter (XSS indicator) +5 per dangerous HTTP method accepted (PUT, DELETE) +2 per missing security header ``` 评分上限为 100,并按严重等级划分区间: | 分数 | 严重等级 | |---|---| | ≥ 60 | 🔴 CRITICAL | | 40–59 | 🟠 HIGH | | 20–39 | 🟡 MEDIUM | | < 20 | 🟢 LOW | ## 密钥检测模式 扫描器使用正则表达式检测以下凭证类型: - Google API 密钥(`AIza...`) - AWS 访问密钥(`AKIA...`) - Stripe 密钥(`sk_live_...`) - JWT 令牌(`eyJ...`) - GitHub 令牌(`ghp_`、`gho_`、`ghu_`、`ghs_`、`ghr_`) ## 已知限制 | 限制 | 说明 | |---|---| | **仅无认证扫描** | 无法扫描需要登录的页面——认证扫描需要会话注入(尚未实现) | | **仅反射型 XSS** | 存储型 XSS 需要独立的注入-观察流程——不在当前范围 | | **仅服务端重定向** | 不会检测基于 JavaScript 的客户端重定向 | | **同域爬取** | 子域名被视为超出范围 | | **WAF 规避** | 速率限制的 WAF 可能阻断扫描——请使用 `--delay` 缓解 | ## 作者 Gudimella Shivprasad ## 📚 参考资料 - [OWASP Top 10 (2021)](https://owasp.org/www-project-top-ten/) - [OWASP Web Security Testing Guide](https://owasp.org/www-project-web-security-testing-guide/) - [MDN HTTP 安全标头](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers#security) - [PortSwigger: 开放重定向](https://portswigger.net/web-security/open-redirect) - [RFC 9110: HTTP 语义](https://www.rfc-editor.org/rfc/rfc9110/)
标签:Active, BeEF, CORS, CSP, Django, HSTS, HTTP响应分析, HTTP方法探测, Laravel, Python, React, robots.txt, SEO检索词, sitemap, Splunk, Syscalls, Web漏洞扫描, WHOIS, WordPress, X-Content-Type-Options, X-Frame-Options, XSS反射检测, 优先报告, 凭证泄露, 安全头审计, 安全扫描, 安全标准, 开放重定向, 开源扫描器, 无后门, 时序注入, 爬虫, 结构化查询, 自动化安全, 输入点映射, 逆向工具, 递归爬取