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安全, 加密, 反取证, 多模态安全, 安全评估, 实时处理, 密码管理, 插件系统, 数据可视化, 漏洞扫描器, 自定义脚本, 蓝队分析