Paarth-agrawal/vulnerability-scanner
GitHub: Paarth-agrawal/vulnerability-scanner
一款基于 Python 标准库的教育性漏洞扫描工具,用于检测目标主机的开放端口、安全配置及过时软件,并生成可视化 HTML 报告。
Stars: 0 | Forks: 0
# 🔍 漏洞扫描器(小型项目)
一款教育性质的 Python 工具,用于扫描目标主机的开放端口、脆弱配置、过时的软件版本,并生成详细的 HTML 漏洞报告。
## 功能
- **端口扫描器** — 使用多线程扫描常见端口(速度快)
- **Banner Grabbing** — 从 banner 中检测服务版本
- **HTTP Header 分析** — 检查缺失的安全标头(HSTS、CSP、X-Frame-Options 等)
- **TLS/SSL 检查** — 验证证书过期时间和协议版本
- **过时软件检测** — 标记 EOL(生命周期结束)的软件版本(PHP 5、Apache 2.2、OpenSSH 6 等)
- **HTML 报告** — 生成简洁、带有颜色区分的漏洞报告
- **JSON 导出** — 可选地将原始结果导出为 JSON
## 环境要求
- Python 3.6 或更高版本
- 无需外部库 — 仅使用 Python 标准库
## 安装
```
git clone https://github.com/YOUR_USERNAME/vulnerability-scanner.git
cd vulnerability-scanner
python scanner.py --help
```
## 用法
### 扫描 localhost(安全默认)
```
python scanner.py localhost
```
### 扫描域名
```
python scanner.py example.com
```
### 仅扫描特定端口
```
python scanner.py localhost --ports 80 443 22 3306
```
### 全面扫描(所有已知的危险端口)
```
python scanner.py localhost --full
```
### 使用自定义文件名保存报告 + 导出 JSON
```
python scanner.py localhost --output my-report.html --json
```
## 输出
扫描完成后,在浏览器中打开 `report.html` 即可查看:
| 栏目 | 显示内容 |
|---------|--------------|
| 总体风险 | Critical / High / Moderate / Low |
| 摘要卡片 | 按严重程度统计的数量 |
| 开放端口 | 端口、服务、风险等级、描述、banner |
| 安全发现 | HTTP 标头、TLS 问题、过时的软件 |
## 项目结构
```
vulnerability-scanner/
├── scanner.py # Main script — all scanning logic
├── report.html # Generated after running a scan
├── README.md # This file
└── .gitignore
```
## 工作原理
### 端口扫描
使用 Python 的 `socket` 模块结合多线程(`concurrent.futures`)并行连接端口。成功的 TCP 连接表示该端口已开放。
### Banner 抓取
发现开放端口后,尝试读取前 200 字节的数据 — 许多服务(SSH、FTP、HTTP)会立即发送版本信息。
### HTTP 标头分析
使用 `urllib` 发起 HTTP 请求,并根据安全最佳实践列表检查响应标头。
### TLS 检查
使用 Python 内置的 `ssl` 模块执行 TLS 握手,并检查证书和协议版本。
### 报告生成
使用纯 Python 字符串模板 — 无需外部库。生成一个包含内联 CSS 的独立 HTML 文件。
## 严重程度等级
| 等级 | 颜色 | 含义 |
|-------|-------|---------|
| Critical | 🔴 红色 | 需要立即采取行动 |
| High | 🟠 橙色 | 尽快修复 |
| Medium | 🟡 黄色 | 应当予以处理 |
| Info | 🔵 蓝色 | 仅供参考 |
## 预期学习成果
- 了解 TCP 端口扫描
- 掌握常见的危险端口及其风险原因
- 了解 HTTP 安全标头及其作用
- TLS/SSL 证书管理
- 渗透测试方法论基础
## 许可证
MIT — 仅限教育用途。
标签:Banner抓取, HTTP安全, Python, 加密, 插件系统, 数据统计, 无后门, 漏洞扫描器, 端口扫描, 逆向工具