mukidulislamzihad/vulnassess
GitHub: mukidulislamzihad/vulnassess
一款纯 Python 编写的轻量级网络与 Web 应用漏洞扫描器,集成端口扫描、自动 CVE 查询与报告生成功能,简化安全评估工作流。
Stars: 0 | Forks: 0
# 🛡️ VulnAssess
**一款轻量级、多合一的网络与 Web 应用漏洞扫描器 —— 采用纯 Python 编写,提供 CLI 和跨平台桌面 GUI。**
[](https://www.python.org/)
[](LICENSE)
[](#desktop-gui)
[](#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 匹配结果:

**扫描摘要** —— 按严重程度排序的 Web 发现结果及一目了然的扫描概览:

## 项目结构
```
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, 逆向工具, 隐私保护