zetkee/network-vulnerability-scanner

GitHub: zetkee/network-vulnerability-scanner

用于追踪 Fortigate、Cisco、Ubiquiti、Mikrotik 等网络设备近期漏洞的 Web 应用,结合厂商 RSS 与 NVD 数据源,支持多账户协同标记和备注。

Stars: 0 | Forks: 1

# 网络设备漏洞扫描器 用于监控过去 30 天内网络设备(Fortigate、Cisco、Ubiquiti、Mikrotik)关键漏洞的 Web 应用程序。 ## 功能 - **4 大核心网络组件**:Fortigate、Cisco、Ubiquiti、Mikrotik - **最新漏洞**:仅显示过去 30 天内的漏洞 - **详细信息**: - CVE ID 以及指向 NVD 和 MITRE 的直接链接 - 严重性(Critical、High、Medium、Low) - 漏洞描述 - 受影响的系统和版本 - 修复措施 - 发布日期 - 来源(NVD、MITRE、vendor advisories) - **清晰摘要**:按严重性分类的统计数据 - **响应式设计**:兼容桌面和移动设备 ## 使用说明 ### 运行应用程序 **获取完整功能(包括 vendor RSS feed):** 1. 启动本地 PHP 服务器: cd "项目路径" php -S localhost:8000 2. 在浏览器中打开 http://localhost:8000 3. 点击选定的厂商按钮 **测试 RSS feed:** 1. 启动 PHP 服务器(见上文) 2. 打开 http://localhost:8000/test-rss.html 3. 点击按钮测试各个 vendor 4. 将显示 debug 信息和已加载的 advisories 列表 **基础功能(仅限 NVD/MITRE):** 1. 直接在浏览器中打开 `index.html` 文件 2. Vendor RSS feed 将不可用(受 CORS 限制) 3. 仅加载来自 NVD API 的数据 ### 数据来源 应用程序**主要使用特定 vendor 的数据源**获取最新信息,并**次要使用 NVD/MITRE** 获取标准化的 CVE 数据: **主要来源(厂商 RSS feed):** - **Cisco PSIRT**: https://sec.cloudapps.cisco.com/security/center/psirtrss20/CiscoSecurityAdvisory.xml - **Fortinet PSIRT**: https://www.fortiguard.com/rss/ir.xml - **MikroTik Security Blog**: https://blog.mikrotik.com/rss/?cat=security - **Ubiquiti**: 目前没有公开的 RSS feed **次要来源(标准化 CVE 数据库):** - **NVD (National Vulnerability Database)**: https://nvd.nist.gov/ - **MITRE CVE**: https://cve.mitre.org/ **为什么主要使用 vendor RSS?** - 厂商发布漏洞的时间通常早于 NVD - 来自厂商的直接信息源,内容更加及时 - 关于新 advisories 的即时通知 ### 漏洞信息 对于每个漏洞,应用程序会显示: 1. **CVE ID**:漏洞的唯一标识符,附带指向 NVD 的链接 2. **严重性**:根据 CVSS 分数分为 CRITICAL、HIGH、MEDIUM、LOW 3. **描述**:详细的英文漏洞描述 4. **受影响的系统**:存在风险的固件和系统版本列表 5. **修复措施**:修复建议(更新、patche) 6. **发布日期**:漏洞发布的时间 7. **来源**:指向 NVD、MITRE 和 vendor advisories 的链接 ## 账户和权限 应用程序包含 4 个默认账户: | 账户 | 默认密码 | 角色 | 权限 | |------|----------------|------|-----------| | `host` | `host2026!` | Host(只读) | 浏览漏洞,无法标记 | | `specialista1` | `spec1-2026!` | Specialista | + “已解决”标记、备注、“我的已解决” | | `specialista2` | `spec2-2026!` | Specialista | + “已解决”标记、备注、“我的已解决” | | `specialista3` | `spec3-2026!` | Specialista | + “已解决”标记、备注、“我的已解决” | **建议**:首次登录后,每个 specialista 应在“账户设置”中更改密码(还可在此处选择头像)。 Specialista 可以在每个漏洞旁勾选“已解决”(例如在内部工具中创建 ticket 后)并添加备注。他们可以在“我的已解决”标签页中找到自己标记为已解决的条目,也可以在此取消标记。 标记和备注与特定账户绑定——每个 specialista 只能看到自己的内容。 ### 配置云存储 (Redis) 账户、密码、头像、标记和备注存储在 Redis 数据库中(Vercel Marketplace 集成 - Redis Cloud),以便跨设备/浏览器使用: 1. 在 Vercel 项目的 dashboard 中,打开 **Storage** 标签页 → **Create Database** → **Redis**,并将其与项目关联。 2. Vercel 会自动填充环境变量 `REDIS_URL`。 3. `api/` 中的 Serverless 函数使用 npm 包 `redis`(参见 `package.json`)——Vercel 会在部署时自动安装它。 4. 在下次部署后,首次登录时会自动使用上述默认密码创建账户。 如果未配置 Redis(例如通过 `php -S` 或 `start-server.bat` 进行本地开发),应用程序将切换到 `localStorage`——此时登录和保存标记将仅限于单个浏览器内有效。 ## 技术细节 ### 项目文件 - `index.html` - 应用程序的主要 HTML 结构 - `styles.css` - 样式和响应式设计 - `app.js` - 用于加载和显示漏洞的 JavaScript 逻辑 - `rss-proxy.php` - 用于加载 vendor RSS feed 的 PHP 代理(解决 CORS,本地服务器) - `api/rss.js` - 用于 vendor RSS feed 的 Vercel Serverless 代理(生产部署) - `api/_kv.js` - 用于 Vercel KV(Upstash Redis REST API)的共享 helper - 账户和标记 - `api/login.js` - 登录(针对 KV 验证密码) - `api/account.js` - 修改密码和头像 - `api/flags.js` - Specialista 针对特定 CVE 的标记和备注 - `test-rss.html` - 用于验证 RSS 代理功能的测试页面 - `test-rss.php` - 用于 PHP 代理的 CLI 测试脚本 ### API 应用程序使用 **NVD API 2.0** 加载漏洞,并提供两种搜索方法: **方法 1 - CPE (Common Platform Enumeration)**: - 根据标准化的厂商标识进行更精确的搜索 - Endpoint: `https://services.nvd.nist.gov/rest/json/cves/2.0?virtualMatchString=cpe:2.3:*:vendor:*` - 所有厂商的主要使用方法 - 使用 `virtualMatchString` 参数进行 CPE 匹配 **方法 2 - 关键字**: - 根据漏洞描述中的关键字进行搜索的备用方法 - Endpoint: `https://services.nvd.nist.gov/rest/json/cves/2.0?keywordSearch=keyword` - 结合两种方法可确保覆盖全面 **参数**: - 加载时间范围:过去 90 天(已扩展以获得更好的覆盖率) - 显示过滤:仅限过去 30 天内的漏洞 - Rate limiting:请求间隔 1.5 秒 - 每页结果:100 个 CVE ### 搜索参数 **CPE Vendors(主要)**: - **Fortigate**: `cpe:2.3:*:fortinet:*` - **Cisco**: `cpe:2.3:*:cisco:*` - **Ubiquiti**: `cpe:2.3:*:ui:*` - **Mikrotik**: `cpe:2.3:*:mikrotik:*` **关键字(备用)**: - **Fortigate**: fortigate, fortios, fortinet - **Cisco**: cisco, ios, nx-os, asa, iosxe, ios-xe - **Ubiquiti**: ubiquiti, unifi, edgerouter - **Mikrotik**: mikrotik, routeros ## 环境要求 **完整功能:** - PHP 7.0+(用于 RSS 代理) - 支持以下功能的现代 Web 浏览器: - ES6+ JavaScript - Fetch API - CSS Grid - Flexbox - 活动的互联网连接 **基础功能(不包括 vendor RSS):** - 仅需现代 Web 浏览器 - 活动的互联网连接 ## 注意事项 - 应用程序使用**两种搜索方法**(CPE + 关键字)以确保完全覆盖 - NVD API 有 Rate limit,因此应用程序在请求之间会等待 1.5 秒 - 根据漏洞数量和搜索次数,加载可能需要 10-20 秒 - 应用程序搜索过去 **90 天**内的漏洞,然后过滤显示为 **30 天** - 如果过去 30 天内没有漏洞,应用程序将显示总共找到的漏洞数量 - 自动删除重复的 CVE - 结果按严重性和日期排序 - Console log 包含有关搜索进度的 debug 信息 ## 故障排除 **如果未显示任何漏洞:** 1. 打开 Developer Console (F12) 并检查 console log 2. 检查对 NVD API 的访问是否被阻止 (CORS) 3. 尝试通过 HTTP 服务器运行应用程序,而不是直接打开文件 4. 等待更长时间——加载最多可能需要 20 秒 5. 检查过去 30 天内是否确实存在漏洞 **如果遇到 CORS 错误:** - 使用本地 Web 服务器(例如 `python -m http.server` 或 VS Code Live Server) - 对于从 `file://` 协议发起的直接调用,NVD API 可能存在限制 ## 作者 Zdenek Klus (zdenek.klus@gmail.com) ## 许可证 本项目专为个人和教育目的而创建。
标签:CVE, OpenVAS, PHP, RSS, 多模态安全, 搜索引擎查询, 数字签名, 数据可视化, 漏洞追踪, 网络设备, 自定义脚本