mukidulislamzihad/vulnassess

GitHub: mukidulislamzihad/vulnassess

一款纯 Python 编写的轻量级网络与 Web 应用漏洞扫描器,集成端口扫描、自动 CVE 查询与报告生成功能,简化安全评估工作流。

Stars: 0 | Forks: 0

# 🛡️ VulnAssess **一款轻量级、多合一的网络与 Web 应用漏洞扫描器 —— 采用纯 Python 编写,提供 CLI 和跨平台桌面 GUI。** [![Python](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![Platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey)](#desktop-gui) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](#contributing) 端口扫描 • 服务/横幅检测 • 自动化 CVE 查询 (NVD) • Web 头与 TLS 审计 • HTML/JSON 报告
## 为什么选择 VulnAssess? `nmap` 是端口扫描的行业标杆,本项目并不打算取代它。VulnAssess 的存在是为了解决另一个问题:**围绕快速安全评估的大量手动杂活。** 典型的侦察工作流通常是这样的:运行 `nmap` → 查看开放端口 → 单独运行 `nikto`/`whatweb` 来处理 Web 层 → 手动在 CVE 数据库中比对版本 → 为客户撰写报告。针对单个目标,这需要使用 3-4 种工具并进行大量的复制粘贴。 VulnAssess 将这些流程精简为 **一条命令(或在 GUI 中点击一次):** | | VulnAssess | 典型的多工具工作流 | |---|---|---| | 端口扫描 + 横幅抓取 | ✅ 内置 | `nmap` | | 针对检测到的版本进行 CVE 查询 | ✅ 自动化 (NVD API) | 手动 / 独立工具 | | Web 安全头与 TLS 审计 | ✅ 内置 | `nikto` / `testssl.sh` | | 暴露的 `.git` / `.env` 检查 | ✅ 内置 | 手动 | | 可直接发送的 HTML 报告 | ✅ 一个参数搞定 | 独立的报告工具 | | 安装 | `pip install requests` | 多个二进制文件/包 | | 适合非 CLI 用户的 GUI | ✅ `gui.py` | ❌ | **当你有以下需求时,请使用 VulnAssess:** 一款快速、单文件、无繁重依赖的授权侦察工具;用于快速生成面向客户的报告、CTF、学习漏洞扫描器的底层工作原理,或者作为 `nmap` + `nikto` 的适合初学者的替代品/辅助工具。 **当你需要以下功能时,请转而使用 `nmap`:** 操作系统指纹识别、隐蔽/规避扫描技术、IPv6,或是经过 25 年以上积累的数百个 NSE 脚本 —— VulnAssess 并不打算在这些领域进行竞争。 ## 功能特性 - 🔍 **端口扫描 + 服务/横幅检测** —— 无需 `nmap` 二进制文件,纯 Python sockets 实现 - 🧬 针对检测到的服务版本,通过 [NVD API](https://nvd.nist.gov/developers/vulnerabilities) 进行**自动化 CVE 查询** - 🌐 **Web 应用检查** —— 缺失的安全头、TLS/SSL 配置错误、证书过期、暴露的敏感路径(`.git/config`、`.env` 等) - 🖥️ **桌面 GUI**(Windows/macOS/Linux,基于 Tkinter —— 无需额外的 GUI 依赖),与 CLI 并行提供 - 🎨 彩色终端与 GUI 输出,按严重程度分级(严重/高/中/低) - 📄 **可导出 HTML / JSON 报告** —— 随时可用于交付给客户 - ⚡ 多线程扫描,可自定义线程数与超时时间 - 📦 零繁重依赖 —— 仅需 `requests` ## 目录 - [安装](#installation) - [桌面 GUI](#desktop-gui) - [CLI 用法](#cli-usage) - [CLI 选项](#cli-options) - [报告示例](#sample-report) - [项目结构](#project-structure) - [路线图](#roadmap--ideas-for-contributors) - [法律声明](#️-legal-notice) - [贡献指南](#contributing) - [许可证](#license) ## 安装 ``` git clone https://github.com/yourusername/vulnassess.git cd vulnassess python3 -m venv venv && source venv/bin/activate # optional but recommended pip install -r requirements.txt ``` ## 桌面 GUI VulnAssess 内置了跨平台桌面 GUI(Windows / macOS / Linux), 基于 Tkinter 构建 —— 无需额外的 GUI 依赖。 ``` python3 gui.py ``` 填写目标,调整端口/线程/超时/CVE 选项,点击 **Start Scan**, 即可在日志面板中实时查看彩色输出流。扫描完成后, 使用 **Save HTML Report** / **Save JSON Report** 进行导出。 ### 构建独立可执行文件(可选) 如果要在不要求安装 Python 的情况下,将 GUI 作为独立的 `.exe` / `.app` / Linux 二进制文件分发, 请在**目标操作系统上**使用 [PyInstaller](https://pyinstaller.org/) (PyInstaller 不支持交叉编译 —— 需在 Windows 上构建 Windows `.exe`,在 macOS 上 构建 macOS `.app` 等): ``` pip install pyinstaller pyinstaller --noconsole --onefile --name VulnAssess gui.py ``` 打包后的二进制文件将生成在 `dist/` 目录下。 ## CLI 用法 ``` # 包含默认端口范围 1-1024 的全面扫描(网络 + web) python3 main.py example.com # 仅扫描 web app python3 main.py https://example.com --no-network # 仅对特定端口进行网络扫描 python3 main.py 192.168.1.10 --no-web --ports 22,80,443,3306 # 自定义端口范围,更多线程,保存 HTML 报告 python3 main.py example.com --ports 1-65535 --threads 200 -o report.html # 改为保存为 JSON python3 main.py example.com -o report.json # 使用 NVD API key 获取更高的 CVE 查找速率限制 python3 main.py example.com --nvd-api-key YOUR_KEY_HERE ``` ## CLI 选项 | 标志 | 描述 | |---|---| | `--ports` | 用于网络扫描的端口范围/列表(默认为 `1-1024`) | | `--no-network` | 跳过网络/端口扫描 | | `--no-web` | 跳过 Web 应用扫描 | | `--no-cve` | 跳过 CVE 查询步骤 | | `--threads` | 用于端口扫描的并发线程数(默认为 `100`) | | `--timeout` | socket 超时时间(秒)(默认为 `1.0`) | | `-o, --output` | 将报告保存为 `.html` 或 `.json` | | `--nvd-api-key` | 可选的 NVD API 密钥(将限制从 5 提升至 50 次请求/30秒) | ## 报告示例 运行扫描将生成彩色的终端摘要;如果添加了 `-o report.html` 参数, 还会生成一份独立的深色主题 HTML 报告,其中列出了开放端口、横幅、匹配的 CVE (包含 CVSS 分数)以及按严重程度排序的 Web 层发现结果 —— 随时可以交给 客户或附在渗透测试报告中。 **桌面 GUI 运行截图** —— 实时扫描输出、开放端口以及实时流式传输的 CVE 匹配结果: ![VulnAssess GUI 运行扫描](https://raw.githubusercontent.com/mukidulislamzihad/vulnassess/main/screenshots/gui-scan.png) **扫描摘要** —— 按严重程度排序的 Web 发现结果及一目了然的扫描概览: ![VulnAssess 扫描摘要](https://raw.githubusercontent.com/mukidulislamzihad/vulnassess/main/screenshots/gui-summary.png) ## 项目结构 ``` vulnassess/ ├── main.py # CLI entry point ├── gui.py # Desktop GUI (Tkinter) entry point ├── modules/ │ ├── network_scan.py # Port scanning + banner grabbing │ ├── cve_lookup.py # NVD API integration │ ├── web_scan.py # HTTP headers, TLS, misconfig checks │ ├── report.py # Console summary + HTML report │ └── colors.py # Terminal color helpers ├── screenshots/ # README screenshots └── requirements.txt ``` ## 路线图 / 贡献者建议 - [ ] 子域名枚举 - [ ] 认证扫描模式(支持 session cookie) - [ ] Nikto/Nuclei 模板集成 - [ ] PDF 报告导出 - [ ] Docker 镜像 欢迎贡献代码 —— 请参阅[贡献指南](#contributing)。 ## ⚠️ 法律声明 **请仅在你拥有或获得明确书面授权进行测试的系统上运行此工具。** 在大多数司法管辖区,未经授权扫描系统是违法的。本工具仅用于授权的渗透测试、红蓝对抗以及针对自有基础设施的安全研究。 ## 贡献指南 欢迎提交 Issue 和 pull request。如果你打算处理上述路线图中的内容, 欢迎先提交一个 issue 进行探讨。 ## 许可证 MIT —— 请参阅 [LICENSE](LICENSE)。
标签:CVE检索, Python, Web安全, 加密, 实时处理, 密码管理, 插件系统, 无后门, 漏洞扫描器, 漏洞挖掘, 网络安全, 蓝队分析, 跨平台桌面GUI, 逆向工具, 隐私保护