Ak5hat-Gupta/vulnerability-scanner
GitHub: Ak5hat-Gupta/vulnerability-scanner
一个零依赖的轻量级 Python 漏洞扫描器,通过端口扫描、Banner 抓取和弱配置检测来评估主机或 Web 应用的基础安全状况。
Stars: 0 | Forks: 1
# 🛡️ 漏洞扫描器(微型项目)
一个轻量级、**无依赖**的 Python 扫描器,用于检测主机或 Web 应用程序中的常见漏洞。旨在探索渗透测试和漏洞评估的基础知识。
## 功能
- **开放端口发现** — 跨通用端口、自定义列表或端口范围执行快速的并发 TCP connect 扫描。
- **Banner 抓取** — 读取服务 banner(SSH、FTP、SMTP、HTTP 等)并协商 TLS 以识别软件和协议版本。
- **过期软件检测** — 将检测到的版本与已知存在漏洞的发行版本(OpenSSH、Apache、nginx、OpenSSL 等)基线进行比较。
- **弱配置检查** — 标记明文协议(Telnet、FTP、纯 HTTP)、危险暴露的服务(Redis、MongoDB、RDP、SMB 等)、弱 TLS 版本以及详细的版本 banner。
- **报告** — 彩色控制台输出以及 **JSON** 和 **HTML** 报告。
- **对 CI 友好** — 当存在 HIGH/CRITICAL 级别的发现时,以非零状态退出。
## 环境要求
- Python 3.10+(仅需标准库 — 不需要 `pip install`)。
## 用法
```
# 扫描主机上的常见端口
python3 scanner.py scanme.nmap.org
# 扫描特定端口
python3 scanner.py 192.168.1.10 -p 22,80,443,3306
# 使用更短的 timeout 扫描范围
python3 scanner.py example.com -p 1-1024 -t 0.5
# 仅打印,无报告文件,无 colour
python3 scanner.py localhost --no-files --no-color
```
### 选项
| 参数 | 描述 | 默认值 |
|------|-------------|---------|
| `target` | 要扫描的主机名或 IP(必填) | — |
| `-p, --ports` | `common`,端口列表 `22,80,443`,或端口范围 `1-1024` | `common` |
| `-t, --timeout` | 每个端口的连接超时时间(秒) | `1.0` |
| `-w, --workers` | 并发连接工作线程数 | `100` |
| `-o, --output` | JSON/HTML 报告的输出目录 | `reports` |
| `--no-color` | 禁用彩色控制台输出 | off |
| `--no-files` | 不生成报告文件 | off |
## 示例输出
```
[+] 22/tcp open ssh SSH-2.0-OpenSSH_8.2p1 Ubuntu
[+] 80/tcp open http Apache/2.4.41 (Ubuntu)
FINDINGS
----------------------------------------------------------------
1. [HIGH] Outdated software: openssh 8.2 on port 22
OpenSSH < 9.6 affected by several CVEs ...
Fix: Upgrade openssh to 9.6 or newer.
2. [MEDIUM] Cleartext protocol in use: http (port 80)
...
```
## 工作原理
1. **解析**目标的 IP 地址。
2. 使用线程池(`ThreadPoolExecutor`)并发**扫描端口**。
3. 在开放端口上**抓取 Banner**;包装 TLS 端口以读取协商的协议和 HTTP `Server` 标头。
4. 根据 `scanner.py` 中的知识库(`VERSION_BASELINES`、`CLEARTEXT_PORTS`、`DANGEROUS_EXPOSURE`)**分析**每个结果。
5. 向控制台、JSON 和 HTML **生成报告**。
## 扩展
- 将服务/端口添加到 `COMMON_PORTS`。
- 将版本基线添加到 `VERSION_BASELINES`。
- 将暴露规则添加到 `DANGEROUS_EXPOSURE`。
- 在 `_analyse_versions` 中接入真实的 CVE 源(例如 NVD API)。
## 免责声明
这是一个出于教育目的的微型项目。它执行轻量级、非侵入式的 connect 扫描和 banner 读取 — 它**不会**进行任何漏洞利用。在扫描之前,请务必获得授权。
标签:Python, 云存储安全, 加密, 多模态安全, 底层编程, 插件系统, 数据统计, 无后门, 服务器安全, 漏洞扫描器, 端口扫描, 网络扫描, 逆向工具