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, 云存储安全, 加密, 多模态安全, 底层编程, 插件系统, 数据统计, 无后门, 服务器安全, 漏洞扫描器, 端口扫描, 网络扫描, 逆向工具