yashwantraj147-eng/vuln-scanner
GitHub: yashwantraj147-eng/vuln-scanner
一款集成端口扫描、服务识别、Web 漏洞检测及 SSL/TLS 分析的 Python 多线程漏洞扫描工具。
Stars: 1 | Forks: 0
# VulnScanner 🛡️


## ⚖️ 法律免责声明
## 🚀 功能
| 模块 | 描述 |
|--------|-------------|
| **端口扫描器** | TCP SYN 扫描 (Scapy) + 带有 Banner 抓取的 TCP Connect 扫描 |
| **服务探测器** | 基于 Regex 的服务/版本指纹识别 |
| **CVE 匹配器** | 本地 CVE JSON 数据库匹配,支持语义化版本比较 |
| **Web 扫描器** | SQLi、XSS、开放重定向、目录遍历、敏感目录发现 |
| **SSL/TLS 检查器** | 过期证书、自签名证书、弱密码、已弃用协议 |
| **凭证检查器** | SSH、FTP、Telnet、HTTP 管理面板的默认凭证测试 |
| **报告生成器** | 专业 HTML 报告,包含 Chart.js 图表 + JSON 数据导出 |
## 📦 安装
### 前置条件
- Python 3.10 或更高版本
- pip (Python 包管理器)
- 管理员/root 权限(仅用于 SYN 扫描)
### 设置
```
# 克隆或下载项目
cd vuln_scanner
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windows
# 安装依赖项
pip install -r requirements.txt
```
## 🔧 使用方法
### 基础扫描 (本地主机)
```
# 对 localhost 进行全量扫描(所有模块)
python main.py --target 127.0.0.1
# 仅使用特定模块扫描
python main.py --target 127.0.0.1 --modules ports,services,cve
# 自定义线程数和输出目录
python main.py --target 127.0.0.1 --threads 20 --output ./my_reports
```
### CLI 参数
| 参数 | 短参数 | 默认值 | 描述 |
|----------|-------|---------|-------------|
| `--target` | `-t` | *必填* | 目标 IP、CIDR 范围或域名 |
| `--threads` | `-T` | 10 | 扫描线程数 |
| `--output` | `-o` | `./output` | 报告输出目录 |
| `--modules` | `-m` | `all` | 逗号分隔的模块列表 |
| `--config` | `-c` | `config.yaml` | 配置文件路径 |
| `--verbose` | `-v` | false | 启用调试日志 |
| `--no-report` | | false | 跳过报告生成 |
| `--json-only` | | false | 仅生成 JSON(不生成 HTML) |
### 可用模块
- `ports` — 带有 Banner 抓取的 TCP 端口扫描
- `services` — 服务版本检测
- `cve` — CVE 数据库匹配
- `web` — Web 漏洞扫描 (SQLi、XSS 等)
- `ssl` — SSL/TLS 证书和密码分析
- `creds` — 默认凭证检查
- `all` — 运行所有模块(默认)
### 示例扫描
```
# 扫描 CIDR 范围(仅限实验室网络!)
python main.py --target 192.168.1.0/24 --modules ports,services --threads 50
# 仅 Web 漏洞扫描
python main.py --target 127.0.0.1 --modules ports,web
# SSL 证书检查
python main.py --target 127.0.0.1 --modules ports,ssl
# 全量扫描并显示详细输出
python main.py --target localhost --modules all --verbose
# 仅生成 JSON 报告
python main.py --target 127.0.0.1 --json-only
```
## 📂 项目结构
```
vuln_scanner/
├── main.py # CLI entry point and orchestrator
├── config.yaml # Configuration (ports, payloads, credentials)
├── requirements.txt # Python dependencies
├── README.md # This file
│
├── scanner/ # Scanning modules package
│ ├── __init__.py
│ ├── port_scanner.py # TCP SYN/Connect port scanner
│ ├── service_detector.py # Banner-based service fingerprinting
│ ├── web_scanner.py # Web vulnerability scanner
│ ├── ssl_checker.py # SSL/TLS configuration checker
│ └── creds_checker.py # Default credentials checker
│
├── cve_matcher.py # CVE database matching engine
├── report_generator.py # HTML + JSON report generator
│
├── templates/
│ └── report.html # Jinja2 HTML report template (Chart.js)
│
├── data/
│ └── cve_snapshot.json # Local CVE database snapshot
│
├── tests/
│ ├── __init__.py
│ └── test_scanner.py # Comprehensive test suite
│
└── output/ # Generated reports directory
```
## ⚙️ 配置
编辑 `config.yaml` 以自定义扫描行为:
- **端口列表**:定义要扫描的端口
- **扫描类型**:选择 `connect`(默认)或 `syn`(需要管理员权限)
- **Payload**:自定义 SQLi、XSS、遍历和重定向 Payload
- **凭证**:定义要测试的用户名/密码对
- **SSL 设置**:配置密码和协议检查
- **服务特征**:添加用于服务检测的正则表达式模式
## 📊 报告
### HTML 报告
- 深色主题的专业布局
- 包含严重性细分的风险评分
- 交互式 Chart.js 甜甜圈图和柱状图
- 按严重程度着色的发现卡片
- 每个发现的修复指导
- 开放端口和服务检测表
### JSON 导出
- 机器可读的扫描结果
- 结构化的元数据、风险评估和发现
- 适合与 SIEM/工单系统集成
报告将保存到 `output/` 目录(可通过 `--output` 配置)。
## 🧪 测试
```
# 运行所有测试
pytest tests/test_scanner.py -v
# 运行代码覆盖率测试
pytest tests/test_scanner.py -v --cov=scanner --cov=cve_matcher --cov=report_generator
# 运行特定测试类
pytest tests/test_scanner.py::TestCVEMatcher -v
# 运行特定测试
pytest tests/test_scanner.py::TestPortScanner::test_resolve_target_cidr -v
```
## 🔐 风险评分
发现结果分为 5 个严重性级别,采用加权评分:
| 严重性 | 权重 | 示例 |
|----------|--------|----------|
| **严重** | 40 | RCE CVE、默认 root 凭证、SQLi、过期证书 |
| **高** | 25 | XSS、弱密码、匿名 FTP、已弃用的 TLS |
| **中** | 10 | 自签名证书、开放重定向、即将过期的证书 |
| **低** | 3 | 信息性目录发现 |
| **信息** | 0 | 有效证书、现代 TLS 协议 |
总体风险评分 (0–100) 决定了报告中显示的风险级别。
## 🤝 贡献
1. Fork 本仓库
2. 创建功能分支 (`git checkout -b feature/new-module`)
3. 提交更改 (`git commit -m 'Add new scanning module'`)
4. 推送到分支 (`git push origin feature/new-module`)
5. 打开 Pull Request
## 📝 许可证
本项目仅供教育和授权安全测试使用。
请负责任且合乎道德地使用。
*为安全社区用 ❤️ 构建。*
标签:CISA项目, CVE匹配, GitHub, Python安全工具, Qt框架, Scapy, SSL/TLS分析, Web漏洞检测, XSS扫描, 代码生成, 加密, 多线程扫描, 密码管理, 弱密码检测, 扫描报告生成, 插件系统, 数据统计, 服务识别, 渗透测试工具, 漏洞扫描器, 端口扫描, 网络安全, 网络安全审计, 逆向工具, 隐私保护, 默认凭证破解