diditdwianto/vulnerability-scanner

GitHub: diditdwianto/vulnerability-scanner

一款基于 Python 的命令行漏洞扫描器,整合 Nmap、Nuclei、Nikto 等工具实现从资产发现到漏洞检测的自动化流程。

Stars: 0 | Forks: 0

# VulnScan - NanoNano 漏洞扫描器 一个基于 CLI 的漏洞扫描工具,用于授权的防御性安全测试。接受域名或 IP,执行侦察,识别服务,将其映射到已知的 CVE,并运行自动化漏洞检测。 这个想法源于在办公室维护服务器和安全的个人需求啦。 享受吧……(喝口咖啡) ## 旧版脚本 以下独立脚本保留用于向后兼容: ### IP 扫描器 (旧版) ``` python3 ip-port-scanner.py 192.168.1.1 python3 ip-port-scanner.py ips.csv python3 ip-port-scanner.py 192.168.1.1 -t 100 -o results.csv -v ``` ### 漏洞扫描器 (旧版) ``` python3 vuln-scanner.py 192.168.1.1 python3 vuln-scanner.py 192.168.1.1 -p 21,22,80,443 ``` ## VulnScan 包 新的模块化 VulnScan 包提供了完整的漏洞扫描解决方案。 ### 安装 ``` # 创建虚拟环境 python3.11 -m venv .venv source .venv/bin/activate # 以开发模式安装及测试依赖 pip install -e ".[dev]" # 验证安装 vulnscan --help ``` ### 系统依赖 在系统范围内安装这些工具: ``` # Ubuntu/Debian sudo apt install nmap nikto exploitdb # macOS brew install nmap nikto # Nuclei (所有平台) # 选项 1: 通过 Go 安装 (需要 Go 1.24+) go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest ~/go/bin/nuclei -update-templates # 选项 2: 从 GitHub releases 下载二进制文件 # macOS ARM64 (Apple Silicon): curl -sL https://github.com/projectdiscovery/nuclei/releases/download/v3.7.1/nuclei_3.7.1_macOS_arm64.zip -o nuclei.zip mkdir -p ~/bin unzip nuclei.zip -d ~/bin/ rm nuclei.zip export PATH="$HOME/bin:$PATH" # Add to ~/.zshrc to persist ~/bin/nuclei -update-templates # 对于其他平台,访问 https://github.com/projectdiscovery/nuclei/releases ``` ### 基础扫描 ``` # 交互模式 (显示免责声明) vulnscan scan example.com # 跳过免责声明 (CI/自动化使用) vulnscan scan example.com --yes ``` ### 扫描选项 ``` # 指定端口范围 vulnscan scan example.com --ports 1-1000 --yes # 扫描强度 (light/normal/aggressive) vulnscan scan example.com --intensity light --yes vulnscan scan example.com --intensity aggressive --yes # 启用 nikto web 扫描 vulnscan scan example.com --nikto --yes # 自定义配置文件 vulnscan scan example.com --config ./myconfig.yaml --yes # 空运行 (验证配置而不进行扫描) vulnscan scan example.com --dry-run --yes ``` ### 输出格式 ``` # JSON 输出 (默认) vulnscan scan example.com --yes # HTML 报告 vulnscan scan example.com --output-format html --yes # JSON 和 HTML 两者 vulnscan scan example.com --output-format both --yes # 自定义输出路径 vulnscan scan example.com --output ./my-report.html --yes ``` ### 报告 报告默认保存到 `./reports/`: ``` # JSON 报告 reports/vulnscan_example_com_20260403_143022.json # HTML 报告 reports/vulnscan_example_com_20260403_143022.html ``` ## 测试 ``` # 运行所有测试 pytest tests/ -v # 运行特定测试文件 pytest tests/test_validators.py -v # 运行匹配模式的测试 pytest tests/ -k "test_valid_ip" -v # 类型检查 python -m mypy vulnscan/ ``` ## 架构 ``` cli.py (Typer) → core/scanner.py (orchestrator) → modules/* → core/models.py (Pydantic results) → reporting/generator.py → output ``` ### 模块 | 模块 | 描述 | |--------|-------------| | `port_scan` | 基于 Nmap 的端口扫描 | | `dns_recon` | DNS 枚举和子域名发现 | | `service_detect` | 服务指纹识别和 Banner 抓取 | | `web_tech` | Web 技术检测 (CMS, 框架) | | `ssl_check` | SSL/TLS 漏洞评估 | | `cve_lookup` | NVD API + vulners CVE 查询 | | `nuclei_scan` | Nuclei 主动漏洞扫描 | | `nikto_scan` | Nikto Web 漏洞扫描 | ## 道德使用 - **仅**扫描您拥有或具有书面授权测试的系统 - 每次扫描前都会显示法律免责声明 - 所有扫描都记录有时间戳,用于审计追踪 - 无利用载荷 - 仅限检测 ### 单个 IP python3 ip-port-scanner.py 192.168.1.1 ### CSV 文件 (每行一个 IP 或逗号分隔) python3 ip-port-scanner.py ips.csv ### 带选项 python3 ip-port-scanner.py 192.168.1.1 -t 100 -o results.csv -v 选项: - `-t, --threads` — 并发线程数 (默认: 50) - `-o, --output` — 保存结果到 CSV - `-v, --verbose` — 显示没有开放端口的 IP ## 漏洞扫描器 ### 基本用法 python3 vuln-scanner.py ### 指定端口 python3 vuln-scanner.py 192.168.1.1 -p 21,22,80,443 ### 各端口检查项 | 端口 | 检查项 | |------|--------| | 21 (FTP) | 匿名登录, vsftpd 后门检测 | | 22 (SSH) | SSHv1 检测, 旧版 OpenSSH 版本 | | 80/89 (HTTP) | PUT/DELETE/TRACE 方法, OPTIONS 泄露 | | 443 (HTTPS) | SSL 加密强度, RC4/DES 检测, 弱 TLS 版本, 证书信息 |
标签:Claude, CTI, CVE检测, Docker部署, Google, IP扫描, Nikto, Nmap, Nuclei, Python, Qt框架, 加密, 安全测试, 密码管理, 对称加密, 插件系统, 攻击性安全, 数据统计, 无后门, 日志审计, 服务识别, 漏洞扫描器, 端口扫描, 网络安全, 网络安全审计, 自动化审计, 虚拟驱动器, 逆向工具, 防御性安全, 隐私保护, 集成框架