MFDosiir/web-vuln-scanner
GitHub: MFDosiir/web-vuln-scanner
一个基于 Python 的教育性命令行 Web 安全扫描工具,用于检测网站安全头配置缺失和敏感文件暴露问题。
Stars: 0 | Forks: 0
# 🔍 Web 漏洞扫描器
一个轻量级的教育性命令行工具,用于扫描网站的常见
安全配置错误——旨在学习真实的 AppSec 概念,并在
作品集场景中展示它们。
## 检查内容
### 1 · 安全 Header
检查 HTTP 响应头中缺失或配置不当的安全控制。
每个 Header 都对应 [OWASP Top 10](https://owasp.org/www-project-top-ten/) 中的一个真实攻击类别。
| Header | 防范的攻击 | OWASP 参考 |
|---|---|---|
| `Strict-Transport-Security` | SSL 剥离 / 降级攻击 | A02 |
| `Content-Security-Policy` | 跨站脚本攻击 (XSS) | A03 |
| `X-Frame-Options` | 点击劫持 | A05 |
| `X-Content-Type-Options` | MIME 类型嗅探攻击 | A05 |
| `Referrer-Policy` | 会话 token 泄露 | A01 |
| `Permissions-Policy` | 功能滥用(摄像头、麦克风、定位) | A05 |
### 2 · 暴露的敏感文件
探测约 25 个常见路径,查找绝对不应公开访问的文件:
`.git/config`、`.env`、`phpinfo.php`、数据库转储文件、管理后台面板等。
## 快速开始
```
# 克隆仓库
git clone https://github.com/YOUR_USERNAME/web-vuln-scanner.git
cd web-vuln-scanner
# 安装依赖(需要 Python 3.8+)
pip install -r requirements.txt
# 扫描目标 — 终端输出
python -m scanner.main https://example.com
# 生成 HTML 报告
python -m scanner.main https://example.com --output html
# → 报告保存至 reports/report_YYYYMMDD_HHMMSS.html
# 运行测试
pytest tests/ -v
```
## 示例输出(终端)
```
============================================================
SCAN REPORT
Target : https://juice-shop.herokuapp.com
Time : 2024-12-01 14:32:11
============================================================
[ Security Headers ] 1 passed 5 failed (of 6 checked)
✔ Strict-Transport-Security
✘ Content-Security-Policy [HIGH]
Why: Missing CSP makes XSS attacks far easier ...
Ref: OWASP A03 – Injection (XSS)
Fix: Add header → default-src 'self'; script-src 'self'
...
[ Exposed Files ] Checked 25 paths · 2 exposed · 0 blocked
[EXPOSED] CRITICAL /.git/config
Git config file — can expose repo URL and credentials
URL: https://juice-shop.herokuapp.com/.git/config
```
## 项目结构
```
web-vuln-scanner/
├── scanner/
│ ├── main.py # CLI entry point
│ ├── report.py # Terminal + HTML report generator
│ └── checks/
│ ├── headers.py # Security headers check (+ OWASP refs)
│ └── exposed_files.py # Sensitive file/path probing
├── tests/
│ └── test_headers.py # Unit tests (pytest)
├── reports/ # Generated HTML reports (git-ignored)
├── requirements.txt
└── README.md
```
## 路线图(计划功能)
- [ ] 将基础 XSS payload 注入发现的表单中
- [ ] SQL 注入检测(基于错误)
- [ ] 服务器 banner / 版本泄露检测
- [ ] Cookie 标志分析(`Secure`、`HttpOnly`、`SameSite`)
- [ ] 用于提升速度的多线程扫描
- [ ] 用于 CI/CD pipeline 集成的 JSON 输出
- [ ] 用于自定义路径列表和 payload 的配置文件
## 涵盖概念
构建此项目将教会你:
- HTTP 请求/响应循环在 Header 层面是如何运作的
- OWASP Top 10 以及每个类别在实际中的含义
- 为什么暴露 `.git`、`.env` 和类似文件会造成灾难性后果
- 专业扫描工具(Nikto、OWASP ZAP)是如何进行枚举的
- Python `requests`、参数解析、文件 I/O 以及单元测试
## 安全的练习目标
这些是**专门设计为包含漏洞**的、用于学习的应用:
| 目标 | 如何运行 |
|---|---|
| [OWASP Juice Shop](https://owasp.org/www-project-juice-shop/) | `docker run -p 3000:3000 bkimminich/juice-shop` |
| [DVWA](https://dvwa.co.uk/) | `docker run -p 80:80 vulnerables/web-dvwa` |
| [HackTheBox](https://www.hackthebox.com/) | 基于 Web 的实验室(提供免费层级) |
## 许可证
MIT — 可免费使用、学习和扩展。
标签:Python, Web安全, 主机安全, 安全基线检查, 安全规则引擎, 无后门, 蓝队分析, 逆向工具