ArthurFosuSamuel/web-scanner
GitHub: ArthurFosuSamuel/web-scanner
一个基于 Flask 的只读式 Web 安全配置审计工具,通过检查安全标头、Cookie、TLS 证书等常见配置问题并长期追踪修复状态,帮助开发者持续管理站点安全风险。
Stars: 0 | Forks: 0
# 配置审计 — Web 应用漏洞扫描器 + 修复追踪器
一个小型 Flask 站点,针对
URL 执行**只读配置审计**,提供通俗易懂的修复步骤,并在本地 SQLite 数据库(`audit.db`,自动创建)中**长期追踪问题**。它检查:
- 安全标头(CSP、HSTS、X-Frame-Options、X-Content-Type-Options、Referrer-Policy、Permissions-Policy)
- Cookie 标志(Secure / HttpOnly / SameSite)
- TLS 证书的有效性、过期时间和协议版本
- 服务器/框架标头暴露(Server、X-Powered-By 等)
- 一些常见的暴露路径(`.git/config`、`.env`、备份文件等)
它**不会**发送漏洞利用 payload、进行暴力破解或尝试
注入攻击 —— 仅发送普通的 GET 请求,与浏览器发送的请求相同。
**仅扫描您拥有或获得明确授权进行测试的站点。**
## 在本地运行
```
cd vulnscanner
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python app.py
```
然后打开 **http://127.0.0.1:5050** 并输入 URL。
## 修复追踪
每次扫描都会保存到 `audit.db`(SQLite,首次运行时自动创建):
- **新问题**将被记录为 `open`。
- **重新扫描同一目标**时会与已追踪的内容进行对比:
- 不再出现且处于打开状态的问题将被**自动解决**
- 被标记为已解决但再次出现的问题将被**重新打开**
- 访问导航栏中的 **修复追踪器**(Remediation tracker)以查看每次扫描中的所有问题,并按目标/状态进行筛选,还可以:
- **标记为已修复** — 手动关闭问题
- **接受风险 / 忽略** — 在不删除历史记录的情况下将其抑制(添加备注,例如工单链接或理由)
- **重新打开** — 撤销上述任意操作
这为您提供了一条审计追踪记录:发现了什么、何时发现、目前是否仍处于打开状态,以及是谁/基于什么决定接受该风险。
## 项目布局
```
vulnscanner/
├── app.py # Flask routes (scan form + tracker)
├── scanner.py # All scan logic (headers, cookies, TLS, paths)
├── db.py # SQLite persistence + remediation-tracking logic
├── templates/
│ ├── index.html # Scan form + one-off report
│ └── history.html # Remediation tracker view
├── static/
│ └── style.css
└── requirements.txt
```
## 扩展说明
- 在 `scanner.py` 中编写 `check_*` 函数并从 `run_scan()` 中调用,即可添加新的检查。
- 每个发现都是一个 `Finding(id, title, severity, detail, remediation)` ——
严重程度分为 `high | medium | low | info | pass`。
- 要一次性扫描多个站点,您可以遍历 URL 列表并直接从脚本中调用 `run_scan(url)`,无需 Flask。
标签:Flask, SQLite, Web安全, 安全基线检查, 漏洞跟踪, 蓝队分析, 调试辅助, 逆向工具