nejarmedhat27-pixel/Web-Vulnerability-Scanner

GitHub: nejarmedhat27-pixel/Web-Vulnerability-Scanner

一款专为 DVWA 及本地实验靶场设计的 Python 自动化 Web 漏洞扫描器,支持多类型漏洞检测并生成专业报告。

Stars: 0 | Forks: 0

# Web 漏洞扫描器 针对 DVWA 和本地实验应用的自动化 Python Web 漏洞扫描器。爬取所有页面 · 检测 XSS、SQL 注入、命令注入、LFI 和开放重定向 · 检查 7 个安全 Header · BFS 爬虫 · 误报确认 · 自动生成带颜色标记的 HTML 报告 + 扫描日志。 # 🔐 WebVulnScan — Web 漏洞扫描器 ![Python](https://img.shields.io/badge/Python-3.8%2B-blue?style=flat-square&logo=python) ![Requests](https://img.shields.io/badge/requests-2.x-orange?style=flat-square) ![BeautifulSoup](https://img.shields.io/badge/BeautifulSoup4-HTML%20Parsing-green?style=flat-square) ![Target](https://img.shields.io/badge/Target-DVWA%20%7C%20Local%20Lab-red?style=flat-square) ![License](https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square) ## 📸 概览 **WebVulnScan** 是一个综合性的安全测试工具,专为针对 **DVWA** 和自定义本地实验目标的教育用途而构建。它会自动爬取所有页面,注入攻击 payload,分析 HTTP 响应,并生成专业的严重性评级 HTML 漏洞报告——所有这些都通过单个 Python 脚本完成。 ## ⚡ 漏洞覆盖范围 | 漏洞 | 检测方法 | 严重性 | |---|---|---| | 🔴 **反射型 XSS** | 在表单和 URL 参数中注入 Payload | 高 | | 🔴 **SQL 注入** | 通过 SQL 错误字符串进行基于错误的检测 | 严重 | | 🔴 **命令注入** | OS 命令输出指示符 | 严重 | | 🟠 **本地文件包含 (LFI)** | 路径遍历 + 文件内容指示符 | 高 | | 🟡 **开放重定向** | HTTP 3xx Location Header 分析 | 中 | | 🔵 **缺失的安全 Header** | CSP · HSTS · X-Frame-Options 等 | 低–中 | ## 🚀 快速开始 ### 前置条件 ``` pip install requests beautifulsoup4 ``` - Python **3.8+** - 在本地运行于 `http://localhost/dvwa/` 的 DVWA → [如何设置 DVWA](https://github.com/digininja/DVWA) ### 运行扫描器 ``` git clone https://github.com/yourname/webvulnscan.git cd webvulnscan python scanner.py ``` ### 配置(位于 `scanner.py` 顶部) ``` DVWA_URL = "http://localhost/dvwa/" # Target URL USERNAME = "admin" # DVWA login PASSWORD = "password" # DVWA password MAX_PAGES = 50 # Max pages to crawl ``` ## 🗺️ 工作原理 ### 步骤 1 — 认证 使用 Session cookie 和通过 BeautifulSoup 提取的 CSRF token 自动登录 DVWA。 ### 步骤 2 — 爬取 BFS 风格的 Web 爬虫会爬取最多至 `MAX_PAGES` 限制的所有内部页面,收集每一个 URL 和 HTML 表单。 ### 步骤 3 — 注入与分析 对于每个页面,扫描器会同时运行所有 6 个攻击模块——将 payload 注入到 URL 参数、表单字段和重定向参数中,然后分析 HTTP 响应以查找漏洞指示符。 ### 步骤 4 — 确认 通过二次确认请求重新测试每个潜在发现,以在生成报告前消除误报。 ### 步骤 5 — 报告 生成两个输出文件: - **`scan_report_.html`** — 带有严重性徽章的完整彩色 HTML 报告 - **`scan_log_.txt`** — 记录每个扫描页面和发现的详细纯文本日志 ## 📋 攻击 Payload **XSS (7 个 payload)** ``` "> '> ``` **SQL 注入 (6 个 payload)** ``` ' " ' OR '1'='1 ' OR 1=1-- ``` **命令注入 (14 个 payload)** ``` ; ls | whoami && id 127.0.0.1; ls ``` **LFI (8 个 payload)** ``` ../../../../etc/passwd ../../../../windows/win.ini file:///etc/passwd ``` ## 🛡️ 检查的安全 Header | Header | 严重性 | 用途 | |---|---|---| | `Content-Security-Policy` | 中 | 防止 XSS 和数据注入 | | `X-Frame-Options` | 中 | 防止点击劫持 | | `Strict-Transport-Security` | 低 | 强制使用 HTTPS | | `X-Content-Type-Options` | 低 | 防止 MIME 嗅探 | | `Referrer-Policy` | 低 | 控制 Referrer 泄露 | | `Permissions-Policy` | 低 | 控制浏览器功能 | | `X-XSS-Protection` | 低 | 旧版 XSS 过滤器 | ## 📊 示例输出 ``` ════════════════════════════════════════════════════ 🔥 VULNERABILITIES DISCOVERED ════════════════════════════════════════════════════ [CRITICAL] SQL Injection (Error-Based) 📍 URL: http://localhost/dvwa/vulnerabilities/sqli/?id=' 💉 Payload: ' 🔑 Parameter: id 📝 Error: you have an error in your sql syntax [HIGH] Reflected XSS (URL Parameter) 📍 URL: http://localhost/dvwa/vulnerabilities/xss_r/?name= 💉 Payload: 🔑 Parameter: name ════════════════════════════════════════════════════ 🎉 SCAN COMPLETED — Duration: 0:01:43 📄 Pages Scanned: 14 🔥 Pages with Vulnerabilities: 6 🛡️ Total Vulnerabilities: 9 🔴 Critical: 2 🟠 High: 4 🟡 Medium: 1 🔵 Low: 2 ════════════════════════════════════════════════════ ``` ## 🛠️ 技术栈 | 组件 | 技术 | |---|---| | **语言** | Python 3.8+ | | **HTTP 客户端** | `requests` + 用于保持 cookie 的 `Session` | | **HTML 解析** | `BeautifulSoup4` | | **爬取** | BFS (广度优先搜索) | | **去重** | 基于 Hash 的已知漏洞追踪 | | **报告** | 自动生成的 HTML + 纯文本日志 | ## 📁 项目结构 ``` webvulnscan/ │ ├── scanner.py # Main entry point — full scanner logic ├── scan_report_.html # Generated HTML vulnerability report ├── scan_log_.txt # Generated plain-text scan log └── README.md ``` ## 📌 路线图 - [ ] **CSRF 检测** — token 存在性及验证检查 - [ ] **存储型 XSS 检测** — 跨页面持久化注入 - [ ] **盲注 SQLi (Blind SQLi)** — 基于时间的布尔值检测 - [ ] **目录遍历** — 扩展路径遍历模式 - [ ] **JSON/API Endpoint 支持** — 注入 REST API 参数 - [ ] **自定义目标配置** — 支持 YAML/JSON 配置文件 - [ ] **CVE 查询集成** — 将发现映射到已知的 CVE - [ ] **PDF 报告导出** — 可导出的执行摘要 - [ ] **代理支持** — 通过 Burp Suite / ZAP 路由 ## ⚙️ 修复指南 | 漏洞 | 修复方案 | |---|---| | **XSS** | 对所有用户输入进行输出编码;实施严格的 CSP | | **SQL 注入** | 使用参数化查询 / 预编译语句 | | **命令注入** | 避免使用 `system()` 调用;对所有输入进行白名单过滤 | | **LFI** | 禁用 `allow_url_include`;使用绝对路径白名单 | | **开放重定向** | 验证并对所有重定向 URL 进行白名单过滤 | | **缺失的 Header** | 在 Web 服务器 / 中间件层配置 Header | ## 👨‍💻 作者 **Nejar & Mayan** — 为道德黑客教育和安全课程作业而开发。 如果这对您有帮助,请考虑在 GitHub 上给它点个 ⭐! ## 📄 许可证 MIT 许可证 — 仅限在**授权环境**中免费使用、学习和修改。
标签:CISA项目, DOE合作, Python, Web安全, 加密, 字符串匹配, 安全测试, 攻击性安全, 无后门, 漏洞扫描器, 蓝队分析, 逆向工具