Ki1shan/Web-Vulnerability-Scanner

GitHub: Ki1shan/Web-Vulnerability-Scanner

一款基于 Flask 仪表盘的 Web 漏洞扫描器,针对 OWASP Top 10 中的 XSS、SQL 注入和 CSRF 三类漏洞进行自动化检测并导出报告。

Stars: 0 | Forks: 0

# 🔍 Web 应用漏洞扫描器 ![Python](https://img.shields.io/badge/python-3.8+-blue) ![Flask](https://img.shields.io/badge/flask-3.1.1-green) ![License](https://img.shields.io/badge/license-MIT-green) ![Status](https://img.shields.io/badge/status-active-brightgreen) ![OWASP](https://img.shields.io/badge/OWASP-Top%2010-red) ![Selenium](https://img.shields.io/badge/automation-selenium-orange) ## ⚠️ 免责声明 本工具**仅**适用于: - 授权的渗透测试 - 对您拥有或明确获得授权测试的系统进行安全研究 - 教育和网络安全培训目的 - CTF 和实验环境(DVWA、WebGoat、testphp.vulnweb.com) **请勿在未获得明确书面授权的情况下对系统使用本工具。未经授权的扫描是违法行为。** ## 概述 本 Web 应用漏洞扫描器可自动检测任何 Web 应用中三个关键的 OWASP Top 10 漏洞: - **XSS** — 将 script payload 注入到发现的表单字段中,检查响应正文中是否存在反射 - **SQLi** — 将 SQL payload 追加到 URL 参数中,检测响应中的数据库错误特征 - **CSRF** — 抓取所有 POST 表单,并检查是否缺少 anti-CSRF token 字段 每次扫描都会将时间戳和结果记录到 `scan_results.json` 中,并且结果将导出为带有样式的 `scan_report.html` 文件,可直接从仪表盘下载。 ## 截图 ![扫描器仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0167b138ec020452.png) *针对 `testphp.vulnweb.com` 的实时扫描 — 在 `/artists.php?id=` 检测到 SQLi,在 `/search.php` 检测到 CSRF* ## 架构 ``` ┌──────────────────────────────────────────────────────────────┐ │ WEB APPLICATION VULNERABILITY SCANNER │ ├──────────────────────────────────────────────────────────────┤ │ │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ FLASK WEB INTERFACE (app.py) │ │ │ │ POST / → trigger scan → render results │ │ │ │ GET /report → serve scan_report.html │ │ │ └────────────────────────────────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌────────────────────────────────────────────────────────┐ │ │ │ CRAWLER (scanner/crawler.py) │ │ │ │ requests + BeautifulSoup │ │ │ │ extract_forms() → get_form_details() → submit_form()│ │ │ │ Handles GET and POST form submissions │ │ │ └────────────────────────────────────────────────────────┘ │ │ │ │ │ ┌────────────────────┼────────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │ │ │ XSS │ │ SQLi │ │ CSRF │ │ │ │ │ │ │ │ │ │ │ │ 3 payloads │ │ 3 payloads │ │ POST form check │ │ │ │ Form inject │ │ URL param │ │ Token field scan │ │ │ │ Response │ │ DB error │ │ Missing CSRF │ │ │ │ reflection │ │ detection │ │ token report │ │ │ └──────────────┘ └──────────────┘ └──────────────────┘ │ │ │ │ │ ┌───────────────┴───────────────┐ │ │ ▼ ▼ │ │ ┌──────────────────────┐ ┌──────────────────────────┐ │ │ │ LOGGER │ │ REPORTER │ │ │ │ scanner/logger.py │ │ utils/report.py │ │ │ │ scan_results.json │ │ scan_report.html │ │ │ │ Timestamped history │ │ Timestamped dark report │ │ │ └──────────────────────┘ └──────────────────────────┘ │ └──────────────────────────────────────────────────────────────┘ ``` ## 检测模块 ### 🔴 XSS 扫描器 (`detector.py`) 针对每个发现的表单输入测试 3 个 payload: ``` "" "\">" "';alert(String.fromCharCode(88,83,83))//" ``` - 通过 GET 和 POST 将 payload 提交到所有表单字段 - 检查 payload 是否逐字出现在响应正文中 - 报告已确认发现的 URL + payload ### 🟡 SQL 注入扫描器 (`detector.py`) 追加到 URL `?id=` 参数的 3 个 payload: ``` "' OR '1'='1" "' OR 1=1--" "' UNION SELECT NULL,NULL--" ``` - 检测响应中的错误关键词:`sql`、`mysql`、`syntax`、`query failed` - 报告每个发现的完整注入 URL + payload ### 🟠 CSRF 扫描器 (`detector.py`) - 抓取目标页面上的所有表单 - 对于每个 `POST` 表单,检查名称中包含 `csrf` 的输入字段 - 将没有 CSRF token 的表单报告为 `Missing Anti-CSRF Token` ## 项目结构 ``` Web-Vulnerability-Scanner/ │ ├── app.py # Flask routes — scan trigger, report download ├── run.py # Entry point (debug mode) ├── requirements.txt # Dependencies │ ├── scanner/ │ ├── crawler.py # BeautifulSoup form extraction + submission │ ├── detector.py # XSS, SQLi, CSRF detection logic │ └── logger.py # JSON scan history logger │ ├── utils/ │ └── report.py # HTML report generator with timestamps │ ├── templates/ │ └── index.html # Dark-theme Flask dashboard (Kali-style) │ ├── screenshot.py # Selenium screenshot utility ├── webvulscan.png # Dashboard screenshot └── Webvulnscan-report.docx # Sample scan report ``` ## 技术栈 | 组件 | 技术 | 版本 | |-----------|-----------|---------| | Web 接口 | Flask | 3.1.1 | | HTTP 客户端 | requests | 2.32.4 | | HTML 解析 | BeautifulSoup4 | 4.13.4 | | 浏览器自动化 | Selenium | 4.33.0 | | 浏览器 | Firefox (headless) + geckodriver | — | | 日志记录 | JSON (scan_results.json) | — | | 报告生成 | HTML (scan_report.html) | — | ## 安装说明 **安装系统依赖:** ``` sudo apt install firefox-esr geckodriver -y ``` **设置 Python 环境:** ``` git clone https://github.com/Ki1shan/Web-Vulnerability-Scanner-.git cd Web-Vulnerability-Scanner- python3 -m venv env source env/bin/activate pip install -r requirements.txt ``` **运行扫描器:** ``` source env/bin/activate python run.py ``` **在浏览器中打开:** ``` http://127.0.0.1:5000 ``` ## 使用说明 1. 打开 `http://127.0.0.1:5000` 2. 输入目标 URL(例如 `http://testphp.vulnweb.com`) 3. 点击 **🔍 Scan** 4. 查看分类结果: - 🔴 **XSS** — 带有注入 URL 的反射 script payload - 🟡 **SQLi** — 带有 SQL 错误证据的易受攻击参数 - 🟠 **CSRF** — 缺少 anti-CSRF token 字段的 POST 表单 5. 点击 **🖨️ Download Full Report** 以导出为带有样式的 HTML ## 输出文件 | 文件 | 描述 | |------|-------------| | `scan_results.json` | 带有时间戳的扫描历史记录 — 累积的所有发现 | | `scan_report.html` | 最新扫描 — 可下载的带有样式的 HTML 报告 | | `screenshots/` | 每种漏洞类型的 Selenium 截图(如果触发) | ## 合法测试目标 | 目标 | URL | 备注 | |--------|-----|-------| | testphp.vulnweb.com | `http://testphp.vulnweb.com` | 故意设计为有漏洞的 PHP 应用 | | DVWA | `http://localhost/dvwa` | 通过 Docker 在本地运行 | | WebGoat | `http://localhost:8080/WebGoat` | OWASP 练习应用 | ## 作者 **Kishan N** 攻击性安全工程师 | Web 应用安全 构建此扫描器旨在通过真实的浏览器自动化和适当的表单爬取来自动化 OWASP Top 10 检测 —— 超越了简单的 GET 请求,能够处理动态 Web 应用。 ## 许可证 MIT 许可证 — 详情请参阅 `LICENSE` 文件。 *将繁琐自动化。专注于重要的事情。*
标签:BeautifulSoup, BeEF, CISA项目, CSRF检测, CTF安全, DOE合作, DVWA, Flask, HTML报告导出, JSON日志, OWASP Top 10, Python, Selenium, SQLi检测, WebGoat, Web应用漏洞扫描器, XSS检测, 字符串匹配, 无后门, 暗色系仪表盘, 漏洞修复, 爬虫, 白帽黑客, 网络安全, 网络安全培训, 跨站脚本攻击, 跨站请求伪造, 逆向工具, 隐私保护