divu638/Web-Vulnerability-Scanner
GitHub: divu638/Web-Vulnerability-Scanner
一个教育性质的轻量全栈 Web 漏洞扫描器,对域名执行非侵入性安全检查并生成评分报告。
Stars: 0 | Forks: 0
# Sentry — 漏洞扫描器
一个小型全栈 Web 应用,针对域名执行外部的非侵入性检查,并报告常见的配置错误。这是一个作为作品集/教育项目而开发的。
**执行的检查:**
- **HTTP 安全标头** — HSTS、CSP、X-Frame-Options、X-Content-Type-Options、Referrer-Policy、Permissions-Policy
- **Cookie 标志** — Secure、HttpOnly、SameSite
- **TLS/SSL** — 证书过期时间、颁发者、协议版本(标记 TLS < 1.2)
- **Server 标头** — 标记泄露情况、已知已停止维护的软件版本(Server / X-Powered-By 标头)
- **开放端口** — 检查固定的常见高风险端口列表(FTP、Telnet、RDP、MySQL、Redis、MongoDB 等)
检查结果按严重程度(严重/高/中/低/信息)进行加权,计算出 0–100 的分数以及 A–F 的评级。
## 项目结构
```
vuln-scanner/
├── backend/
│ ├── server.js # Express API (POST /api/scan, GET /api/health)
│ ├── scanner.js # All scanning/check logic
│ └── package.json
└── frontend/
├── index.html # Dashboard UI
├── style.css
└── script.js # Calls the API, renders the report
```
## 运行方式
**1. 后端**
```
cd backend
npm install
npm start
# → API 正在监听 http://localhost:4000
```
**2. 前端**
前端是纯 HTML/CSS/JS,无需构建步骤。只需使用任意静态文件服务器打开即可(或双击 `index.html`),例如:
```
cd frontend
npx serve .
# 或者:python3 -m http.server 5500
```
如果你的后端运行在不同的主机/端口上,请更新 `frontend/script.js` 顶部的 `API_BASE`。
## 工作原理(后端)
- 使用带有超时设置的 `net.Socket` 连接来实现端口扫描。
- 通过 `https`/`http` 请求获取响应标头,并将其与预期的安全标头和 Cookie 标志规则集进行匹配。
- 使用 `tls.connect` 执行原始 TLS 握手,以读取证书和协商的协议版本。
- 一个小型的静态规则集用于标记在 `Server` 标头中发现的明显已停止维护的软件版本(这仅作演示用途,并非真正的 CVE 数据源 —— 生产级工具会调用诸如 NVD API 之类的接口)。
- 所有检查结果将被合并、加权,并最终计算为分数/评级。
## 扩展建议
如果你想将其作为简历项目进一步开发,可以参考以下改进方向:
- 将静态的“过时服务器”规则集替换为真实的 CVE 查询(例如 [NVD API](https://nvd.nist.gov/developers))。
- 添加身份验证和扫描历史记录表(Postgres/SQLite),以便用户查看历史报告。
- 添加报告的 PDF/CSV 导出功能。
- 使用任务运行器(例如 BullMQ)对扫描进行限流和排队,以免长时间的扫描阻塞请求线程。
- 添加子域名枚举或基础爬虫,以进行多页面的标头检查。
标签:Express, GNU通用公共许可证, MITM代理, Node.js, Web安全, 加密, 反取证, 多模态安全, 安全评估, 实时处理, 密码管理, 插件系统, 数据可视化, 漏洞扫描器, 自定义脚本, 蓝队分析