yashwantraj147-eng/vuln-scanner

GitHub: yashwantraj147-eng/vuln-scanner

一款集成端口扫描、服务识别、Web 漏洞检测及 SSL/TLS 分析的 Python 多线程漏洞扫描工具。

Stars: 1 | Forks: 0

# VulnScanner 🛡️ ![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue) ![License](https://img.shields.io/badge/license-MIT-green) ## ⚖️ 法律免责声明 ## 🚀 功能 | 模块 | 描述 | |--------|-------------| | **端口扫描器** | 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扫描, 代码生成, 加密, 多线程扫描, 密码管理, 弱密码检测, 扫描报告生成, 插件系统, 数据统计, 服务识别, 渗透测试工具, 漏洞扫描器, 端口扫描, 网络安全, 网络安全审计, 逆向工具, 隐私保护, 默认凭证破解