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框架, 加密, 安全测试, 密码管理, 对称加密, 插件系统, 攻击性安全, 数据统计, 无后门, 日志审计, 服务识别, 漏洞扫描器, 端口扫描, 网络安全, 网络安全审计, 自动化审计, 虚拟驱动器, 逆向工具, 防御性安全, 隐私保护, 集成框架