feadal/Web-vuln-scanner

GitHub: feadal/Web-vuln-scanner

一款轻量级 Python Web 漏洞扫描器,结合被动安全配置检查与主动 payload 探测,帮助开发者在已授权环境下快速发现并验证常见 Web 安全漏洞。

Stars: 0 | Forks: 0

# webscan [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/6084cd1141183613.svg)](https://github.com/feadal/Web-vuln-scanner/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python 3.9+](https://img.shields.io/badge/python-3.9%2B-blue.svg)](https://www.python.org/) **webscan** 是一个轻量级的 Python **主动式** Web 漏洞扫描器,专为**已授权的**渗透测试、安全培训以及评估您自己的应用程序而设计。 它会爬取目标以获取输入点(URL 参数和表单字段),然后使用无害的 payload 对每个输入点进行探测,以**检测**真实的漏洞 —— 包括反射型 XSS、SQL 注入、OS 命令注入、路径遍历/LFI 和开放重定向 —— 同时还会对安全标头、cookies、TLS 和信息泄露进行被动检查。 ## ⚠️ 法律声明 **仅**在您拥有或已获得明确书面测试授权的系统上使用 webscan。在许多司法管辖区,未经授权的扫描是非法的(例如美国的 CFAA、英国的 Computer Misuse Act)。您需对自己的工具使用行为负责;作者对此不承担责任。请参阅 [SECURITY.md](SECURITY.md)。 ## 功能 ### 主动检查(发送探测 —— 仅限已授权目标) | 检查项 | 检测内容 | 技术 | |---|---|---| | `xss` | 反射型跨站脚本攻击 | HTML 元字符中的唯一 token,检查未编码的反射 | | `sqli` | SQL 注入 | 基于报错(数据库错误特征)+ 布尔型差异分析 | | `cmd-injection` | OS 命令注入 | 算术回显探测 (`$((A*B))`) —— shell 输出的乘积不在原始 payload 中 | | `path-traversal` | 路径遍历 / LFI | `../` 样式的 payload,通过回读 `/etc/passwd` 进行确认 | | `open-redirect` | 开放重定向 | 在重定向参数中使用无害的外部主机,检查 `Location` 标头 | ### 被动检查(始终安全) | 检查项 | 检测内容 | |---|---| | `security-headers` | 缺失的 CSP、HSTS、X-Frame-Options、X-Content-Type-Options、Referrer-Policy | | `cookies` | 缺少 `Secure` / `HttpOnly` / `SameSite` 属性的 cookies | | `server-disclosure` | 通过 `Server`、`X-Powered-By` 导致的版本信息泄露 | | `tls` | 纯 HTTP、无 HTTPS 重定向、无效的证书 | | `sensitive-files` | 暴露的 `.git/`、`.env`、备份文件、目录列表 | | `forms` | 通过 HTTP 传输的表单、通过 GET 提交密码、缺失 CSRF token | **安全防护机制:** 同一主机的爬取范围、严格的请求预算(`--max-requests`)、可选的限流(`--delay`)以及受限的爬取深度(`--max-pages`)。 ## 安装说明 ``` git clone https://github.com/feadal/Web-vuln-scanner.git cd Web-vuln-scanner python -m venv .venv && source .venv/bin/activate pip install -e . ``` ## 用法 ``` # 完整扫描(passive + active) webscan https://example.com # 仅 passive — 不发送任何 probes webscan https://example.com --passive-only # 选择特定检查 webscan https://example.com --checks xss,sqli,security-headers # 调整 scope / politeness webscan https://example.com --max-pages 20 --max-requests 500 --delay 0.2 # 面向 CI 的 JSON 报告 webscan https://example.com --format json --output report.json # 列出所有检查 webscan --list-checks ``` 退出代码:当未发现严重程度达到或高于 `--fail-on`(默认为 `medium`)的问题时返回 `0`,否则返回 `1` —— 非常适合在 CI 流水线中使用。 ## 在内置的演示目标上进行尝试 该仓库提供了一个**刻意包含漏洞的**演示应用程序(仅限 localhost),以便您可以安全地观察扫描器的工作过程: ``` python examples/vulnerable_app.py # serves http://127.0.0.1:8000 webscan http://127.0.0.1:8000 # in another terminal ``` ``` webscan 0.2.0 — target: http://127.0.0.1:8000 crawled injection points: 5 · requests sent: 96 [HIGH] cmd-injection OS command injection ↳ Shell evaluated probe on 'host' -> wvs578120end → param 'host' [HIGH] path-traversal Path traversal / local file inclusion ↳ /etc/passwd content via 'file': root:x:0:0: → param 'file' [HIGH] sqli Error-based SQL injection ↳ DB error on 'id': You have an error in your SQL syntax → param 'id' [HIGH] xss Reflected cross-site scripting (XSS) ↳ Probe reflected un-encoded in parameter 'q' → param 'q' [MEDIUM] open-redirect Open redirect ↳ Location -> https://wvs-...example.org/ (param 'next') → param 'next' Total: 14 findings (6 high, 5 medium, 3 low) ``` ## 工作原理 ``` target ──▶ fetch landing page ──▶ passive checks (headers, cookies, TLS, …) │ ▼ crawler (same-host, bounded) ──▶ injection points (query params + form fields) │ ▼ for each point × active check ──▶ benign probe ──▶ analyse response ──▶ findings ``` ## 开发说明 ``` pip install -e ".[dev]" pytest # 25 offline tests, no network ruff check . ``` 通过在 `webscan/checks/` 中继承 `PassiveCheck` 或 `ActiveCheck` 并在 `webscan/checks/__init__.py` 中注册,即可添加新的检查项。详情请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 [MIT](LICENSE)
标签:CISA项目, DOE合作, Python, Web漏洞扫描, 安全测试, 安全规则引擎, 攻击性安全, 无后门, 逆向工具