sarjanpatel22/vulnerability-scanner

GitHub: sarjanpatel22/vulnerability-scanner

基于 Python 和 Nmap 的命令行漏洞扫描器,自动按端口风险评级并生成带颜色标记的 PDF 报告。

Stars: 0 | Forks: 0

# 🔍 项目 2 — 漏洞扫描器 + 自动报告 ![Python](https://img.shields.io/badge/Python-3.13-blue?style=flat-square) ![Nmap](https://img.shields.io/badge/Nmap-7.99-red?style=flat-square) ![Kali Linux](https://img.shields.io/badge/Kali_Linux-2026.2-557C94?style=flat-square) ![状态](https://img.shields.io/badge/Status-Complete-brightgreen?style=flat-square) 一个基于 Python 的漏洞扫描器,使用 Nmap 扫描目标,自动为开放端口分配严重级别,并生成专业的 PDF 报告 —— 所有操作都在一个脚本中完成。 ## 📋 目录 - [概述](#overview) - [功能](#features) - [环境要求](#requirements) - [安装说明](#installation) - [用法](#usage) - [严重级别逻辑](#severity-logic) - [示例输出](#sample-output) - [截图](#screenshots) - [经验总结](#lessons-learned) ## 🔍 概述 | 项目 | 详情 | |---|---| | **编程语言** | Python 3.13 | | **扫描器** | 通过 python-nmap 调用 Nmap 7.99 | | **报告格式** | PDF (reportlab) | | **操作系统平台** | Kali Linux 2026.2 | | **目标** | Ubuntu 26.04 LTS (Wazuh SIEM 服务器) | | **发现端口** | 5 个开放端口 | | **严重级别** | 2 个高危 · 1 个中危 · 2 个低危 | ## ✨ 功能 - 使用 Nmap (-sS -sV) 扫描任何目标 IP - 自动分配严重级别:严重 / 高危 / 中危 / 低危 - 检测服务名称和版本 - 自动生成带有颜色标记的 PDF 报告 - 包含汇总表格 + 建议部分 - 简洁易读的代码 —— 没有过度设计 ## 📦 环境要求 ``` python3 nmap python-nmap reportlab ``` ## ⚙️ 安装说明 ``` # Clone 仓库 git clone https://github.com/sarjanpatel22/vuln-scanner.git cd vuln-scanner # 安装 Python 依赖 pip install python-nmap reportlab --break-system-packages ``` ## 🚀 用法 ``` python3 scanner.py ``` 出现提示时,输入目标 IP 地址: ``` === Vulnerability Scanner === by sarjan enter the IP address to scan: starting scan on this might take a minute... found port 22 - ssh - HIGH found port 80 - http - HIGH found port 443 - https - MEDIUM found port 3000 - http - LOW found port 9090 - http - LOW scan complete! found 5 open ports making pdf report... report saved as: scan_report_.pdf done! ``` ## 🎯 严重级别逻辑 端口根据已知的风险等级进行评级: | 严重级别 | 端口 | 原因 | |---|---|---| | 🔴 严重 | 21, 23, 445, 3389, 5900 | FTP, Telnet, SMB, RDP, VNC —— 极易被利用 | | 🟠 高危 | 22, 80, 8080, 1433, 3306 | SSH, HTTP, 数据库 —— 经常受到攻击 | | 🟡 中危 | 443, 8443, 25, 110, 143 | HTTPS, 邮件服务 —— 风险较低但值得检查 | | 🟢 低危 | 其他所有端口 | 非常规端口 —— 值得关注 | ## 📊 示例输出 — Ubuntu 扫描 ``` Target: Scan Date: 2026-05-21 Summary: Total: 5 | Critical: 0 | High: 2 | Medium: 1 | Low: 2 Open Ports: 22 | tcp | ssh | OpenSSH 10.2p1 Ubuntu | HIGH 80 | tcp | http | Apache httpd | HIGH 443 | tcp | https | unknown | MEDIUM 3000| tcp | http | Node.js Express | LOW 9090| tcp | http | Golang net/http server | LOW Recommendations: HIGH: Review SSH and web server configurations. MEDIUM: Ensure SSL/TLS is properly configured. ``` ## 📸 截图 | 序号 | 描述 | |---|---| | 1 | 在 Kali 上确认 Python, Nmap, pip 版本 | | 2 | 已安装 python-nmap + reportlab | | 3 | 创建项目文件夹 | | 4 | 扫描器运行中 —— 检测到端口 | | 5 | PDF 报告已验证 (localhost 扫描) | | 6 | Ubuntu 虚拟机扫描 —— 发现 5 个端口 | | 7 | 最终 PDF 报告输出 | 包含所有截图的完整报告在下方直接展示 —— 或者 [下载 PDF](./Project2_Vulnerability_Scanner_Report_1.pdf)。

Report page 1 Report page 2 Report page 3 Report page 4 Report page 5 Report page 6 Report page 7 Report page 8 Report page 9 Report page 10

## 🧰 使用的工具 | 工具 | 版本 | 用途 | |---|---|---| | Python | 3.13.12 | 主要语言 | | Nmap | 7.99 | 端口扫描引擎 | | python-nmap | 0.7.1 | Nmap 的 Python 包装器 | | reportlab | 4.5.1 | PDF 生成 | | Kali Linux | 2026.2 | 扫描器平台 | ## 📚 经验总结 1. **python-nmap 功能强大** —— 将 Nmap 输出封装为整洁的 Python 字典,易于解析。 2. **严重级别逻辑很重要** —— 相同的端口在不同环境下的含义可能不同,但默认规则可以捕获大部分问题。 3. **reportlab 需要练习** —— 表格样式设置需要时间,但生成的结果看起来非常专业。 4. **扫描前服务必须处于运行状态** —— 第一次扫描返回了 0 个端口,因为没有服务在监听。需要事先启动 SSH + Apache。 5. **版本检测非常有用** —— `-sV` 参数会显示确切的软件版本,这有助于识别特定的 CVE。 ## 👤 作者 **Sarjan** —— 网络安全项目作品集 第 2 / 4 个项目 | 漏洞扫描器 + 自动报告 *专为在隔离的实验室环境中进行教育目的而构建。请勿对您无权操作的系统使用。*
标签:CTI, Nmap, Python, 插件系统, 数据统计, 无后门, 端口扫描, 虚拟驱动器, 逆向工具