anushkasengupta/Vulnerability_Scanner

GitHub: anushkasengupta/Vulnerability_Scanner

一个纯 Python 标准库实现的轻量级漏洞扫描器,用于端口扫描、Banner 抓取、弱配置检测和过时软件识别,面向网络安全教学与渗透测试入门实践。

Stars: 0 | Forks: 0

# Mini 漏洞扫描器 一个轻量级的 Python 工具,用于扫描主机的开放端口、微弱/高风险的服务配置以及过时的软件版本 —— 旨在作为漏洞评估和渗透测试基础的实践入门。 ## 功能 - **TCP 端口扫描** —— 在自定义范围或常用端口上进行多线程 connect 扫描 - **Banner 抓取** —— 识别运行中的服务(SSH、HTTP、FTP 等) - **弱配置检测** —— 标记常见配置不当的服务(Telnet、Redis、MongoDB、RDP、Docker API 等) - **过时软件检测** —— 将 banner 与已知存在漏洞的版本阈值进行匹配 - **报告生成** —— 控制台输出,以及可选的 JSON 和 HTML 报告 ## 环境要求 - Python 3.8+ - 无外部依赖 —— 仅使用标准库 ## 用法 ``` python vuln_scanner.py ``` 该脚本将以交互方式提示输入: 1. 目标主机名或 IP 2. 要扫描的端口(例如 `22,80,443` 或 `1-1024`,留空则扫描常用端口) 3. 用于存放报告的输出文件夹(可选) 4. 是否保存 JSON 和/或 HTML 报告 ### 示例 ``` Enter target hostname or IP (e.g. scanme.nmap.org): scanme.nmap.org Enter ports to scan: 22,80,443 Save JSON report? (y/n): y Save HTML report? (y/n): y ``` 输出示例: ``` [+] Open Ports (2): 22/tcp SSH SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13 80/tcp HTTP HTTP/1.1 200 OK [!] Potentially Outdated Software (2): OpenSSH — flag if version < 8.0 Apache — flag if version < 2.4.54 ``` ## 工作原理 1. 将目标主机名解析为 IP 地址 2. 使用多线程 TCP connect 尝试扫描指定端口 3. 从开放端口抓取服务 banner 4. 将 banner 与包含已知存在漏洞的版本阈值的小型列表进行交叉比对 5. 将开放端口与常见微弱/高风险服务列表进行交叉比对 6. 将发现结果编译成结构化报告(控制台、JSON、HTML) ## 局限性 - 过时软件的签名列表很小且仅用于演示,并非完整的 CVE 数据库。在生产环境中使用时,请集成如 [NVD API](https://nvd.nist.gov/developers) 这样的实时数据源。 - 如果服务不公开版本信息,或者防火墙/代理重写了响应,Banner 抓取可能会被规避或篡改。 - 这是一种 connect 扫描(而非隐蔽的 SYN 扫描)—— 它会留下记录并显示在目标日志中。 ## 免责声明 本项目出于教育目的构建,是网络安全课程作业的一部分。不能替代专业的漏洞评估工具(如 Nmap、Nessus 或 OpenVAS)。
标签:Python, 并发处理, 插件系统, 数据统计, 无后门, 端口扫描, 逆向工具