wwang210/web-vuln-scanner

GitHub: wwang210/web-vuln-scanner

一款基于 Python 的命令行 Web 漏洞扫描器,通过自动爬取目标站点并检测 XSS、SQLi、开放重定向和 CORS 配置错误等常见安全问题,帮助用户在授权环境下快速评估 Web 应用安全状况。

Stars: 1 | Forks: 0

# Web 漏洞扫描器 一个轻量级的 Python CLI 工具,可以爬取目标网站并自动检测常见的 Web 安全漏洞。专为教育用途、授权的渗透测试和 CTF 挑战而构建。 ## ⚠️ 法律免责声明 ## 功能 | 检查项 | 技术 | |-------|-----------| | **反射型 XSS** | 向参数注入探测 payload;检测是否有未转义的原始标签被回显 | | **SQL 注入** | 基于错误(数据库错误字符串匹配)+ 布尔盲注指示器(响应大小差异) | | **开放重定向** | 检测遵循域外 `3xx` 响应的重定向类参数 | | **CORS 错误配置** | 探测 origin 反射 + `Access-Control-Allow-Credentials: true` | ## 工作原理 ### 阶段 1 — 爬取 爬虫从您的目标 URL 开始,并 BFS(广度优先)抓取所有同源页面(绝不跟随域外链接)。对于每个页面,它会收集: - 已发现链接中的 URL 查询参数 - 表单的 action URL、方法(GET/POST)和输入字段名称 ### 阶段 2 — 扫描 每个检查模块都会接收到完整的已发现 endpoint 列表,并遍历每一个参数: **XSS** — 将类似 `` 和 `">` 的 payload 发送到每个参数中,并检查 HTML 响应中是否出现了未经转义的原始标签。 **SQLi** — 两种检测策略: - *基于错误*:注入 `'`、`"`、`\\` 并扫描已知的数据库错误字符串(MySQL、PostgreSQL、MSSQL、Oracle、SQLite) - *布尔盲注指示器*:比较真实条件(`' OR '1'='1'`)与虚假条件(`' OR '1'='2'`)下的响应大小 —— 显著的差异表明这是一个可注入的参数 **开放重定向** — 查找名为 `next`、`redirect`、`return_url`、`goto` 等的参数,注入外部 canary URL,并检查服务器是否发出了指向域外的 `3xx` 响应。 **CORS** — 发送带有精心构造的 `Origin` 头部(`evil.example.com`、`null`、`evil.your-target.com`)的请求,并标记出服务器将攻击者的 origin 回显并附带 `Access-Control-Allow-Credentials: true` 的响应。 ### 阶段 3 — 报告 终端中的检测结果会按严重程度以颜色区分,并可选择导出为 JSON 格式。 ``` Target URL │ ▼ Crawler (BFS links + form extraction) │ ▼ Endpoint list [{url, method, params}] │ ├──▶ XSS check ├──▶ SQLi check ├──▶ Open Redirect check └──▶ CORS check │ ▼ Reporter (colored terminal + optional JSON) ``` ## 安装 **环境要求:** Python 3.10+,pip ``` git clone https://github.com/your-username/web-vuln-scanner.git cd web-vuln-scanner python3 -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt ``` ## 用法 ### 基础扫描(所有检查项) ``` python main.py https://your-target.com ``` ### 常用选项 ``` # 将结果保存到 JSON 报告 python main.py https://your-target.com --out report.json # 仅运行特定检查 python main.py https://your-target.com --checks xss sqli # 扫描已认证的 session python main.py https://your-target.com --cookies "session=abc123; csrf=xyz" # 限制 crawl 深度并减慢请求 python main.py https://your-target.com --max-pages 30 --delay 0.5 # 跳过 TLS 证书验证(自签名证书) python main.py https://your-target.com --no-verify ``` ### 所有标志 | 标志 | 默认值 | 描述 | |------|---------|-------------| | `--checks` | all | 以空格分隔的列表:`xss sqli redirect cors` | | `--max-pages` | `100` | 最大爬取页面数 | | `--delay` | `0.2` | 请求之间的间隔秒数 | | `--cookies` | — | 认证 cookies,格式为 `"name=val; name2=val2"` | | `--user-agent` | `VulnScanner/1.0` | 自定义 User-Agent 字符串 | | `--no-verify` | false | 禁用 TLS 证书验证 | | `--out` | — | 将 JSON 报告写入此文件路径 | ## 授权测试目标 **绝对不要对您不拥有的网站进行测试。** 请使用以下合法目标之一代替: ### 本地(Docker — 推荐) ``` # OWASP Juice Shop — 现代、真实的 Node.js 应用 docker run -d -p 3000:3000 bkimminich/juice-shop python main.py http://localhost:3000 # DVWA — 涵盖 XSS、SQLi、CSRF 等的经典 PHP 应用 docker run -d -p 80:80 vulnerables/web-dvwa python main.py http://localhost:80 # WebGoat — Java/Spring,OWASP 维护 docker run -d -p 8080:8080 webgoat/goat-and-wolf python main.py http://localhost:8080 ``` ### 在线实验平台 - [PortSwigger Web Security Academy](https://portswigger.net/web-security/all-labs) — 免费的基于浏览器的实验室,每个实验室都提供一个唯一的授权子域名 - [HackTheBox](https://www.hackthebox.com/) / [TryHackMe](https://tryhackme.com/) — 启动一台机器,在 VPN 内进行扫描 - [OWASP Juice Shop (在线演示)](https://juice-shop.herokuapp.com) — 公开托管,已授权用于测试 ## 项目结构 ``` web-vuln-scanner/ ├── main.py # CLI entry point ├── requirements.txt └── scanner/ ├── crawler.py # BFS site crawler ├── xss.py # Reflected XSS detection ├── sqli.py # SQL injection detection ├── redirect.py # Open redirect detection ├── cors.py # CORS misconfiguration detection ├── models.py # Finding / Severity dataclasses └── reporter.py # Terminal + JSON output ``` ## 示例输出 ``` Web Vulnerability Scanner ================================================================ Target : http://localhost:3000 Checks : cors, redirect, sqli, xss Pages : up to 100 ================================================================ Only use on systems you own or have permission to test. [*] Crawling http://localhost:3000 ... Found 42 pages, 138 endpoints/forms [*] Running XSS checks ... 3 finding(s) [*] Running SQLi checks ... 2 finding(s) [*] Running open-redirect checks ... 1 finding(s) [*] Running CORS checks ... 0 finding(s) ================================================================ Target : http://localhost:3000 Pages : 42 Elapsed : 38.2s Findings: 6 ================================================================ [HIGH] (3 issues) ------------------------------------------------------------ Reflected XSS GET http://localhost:3000/search param=q Payload reflected: "> ... ``` ## 许可证 MIT — 可免费使用、修改和分发。详情请参阅 `LICENSE`。
标签:CISA项目, Python, Web安全, 加密, 文档结构分析, 无后门, 漏洞扫描器, 蓝队分析, 逆向工具