ogarridojimenez/vulnscanner
GitHub: ogarridojimenez/vulnscanner
一款零外部依赖的 Go 命令行 Web 漏洞扫描工具,整合端口扫描、安全头检测、TLS 检查、目录发现及 SQLi/XSS 检测。
Stars: 0 | Forks: 0
# VulnScanner 🔍
`vulnscan` 是一个 CLI 工具,用于审计 Web target 是否存在常见漏洞:开放端口、缺失的安全头、TLS/SSL 问题、隐藏目录以及基本的 SQLi/XSS 检测。
受 `nmap` + `nuclei` 启发,但只有一个不依赖 CGO 的二进制文件,runtime 零外部依赖。
## 安装
```
# 从 release
curl -LO https://github.com/ogarridojimenez/vulnscanner/releases/latest/download/vulnscan_linux_amd64
chmod +x vulnscan_linux_amd64 && sudo mv vulnscan_linux_amd64 /usr/local/bin/vulnscan
# 或从源码编译
git clone https://github.com/ogarridojimenez/vulnscanner.git
cd vulnscanner && go build -o vulnscan ./cmd/vulnscanner/
```
## 使用方法
```
# 基础扫描
vulnscan scan example.com
# 完整扫描(所有模块)
vulnscan scan example.com --full
# 使用 workers 和特定端口扫描
vulnscan scan example.com --ports 80,443,8080,8443 --workers 20
# 输出为 JSON
vulnscan scan example.com --full --output report.json
# 输出为 PDF
vulnscan scan example.com --full --format pdf -o report.pdf
# 历史记录和统计信息
vulnscan history
vulnscan summary
vulnscan report --format pdf
# 数据库管理
vulnscan db init
vulnscan db check
```
## 模块
| 模块 | 描述 | 典型严重程度 |
|--------|-------------|-----------------|
| **Port Scan** | 并发 TCP 扫描,带服务检测(25+ 个常见端口) | INFO |
| **Security Headers** | 检查 12 个 OWASP 头(HSTS、CSP、XFO 等) | 缺失则为 MEDIUM |
| **TLS Check** | TLS 版本、加密、过期时间、证书链 | 过期则为 HIGH |
| **Directory Fuzzing** | 30 条常见路径,检测 200/403/301 | 发现则为 MEDIUM |
| **SQLi Detection** | 13 个 payload,基于反射检测 | 反射则为 HIGH |
| **XSS Detection** | 11 个 payload,基于反射检测 | 反射则为 HIGH |
## 全局 Flags
| Flag | 默认值 | 描述 |
|------|---------|-------------|
| `--workers` / `-w` | 10 | 并发 Workers |
| `--timeout` | 5s | 每次请求的 Timeout |
| `--cookie` | — | 用于已认证扫描的 Cookie |
| `--db` | `~/.vulnscanner/history.db` | 数据库路径 |
| `-v` / `--verbose` | false | 详细输出 |
## 架构
```
cmd/vulnscanner/ → CLI (Cobra)
internal/config/ → Configuración y defaults
internal/models/ → Dominio (Target, Result, ScanReport)
internal/scanner/ → 6 módulos de escaneo con worker pool
internal/reporter/ → JSON y PDF
internal/storage/ → SQLite CGO-free
rules/ → Payloads SQLi/XSS
```
**原则:**
- ✅ 无 CGO — 100% 可移植的二进制文件
- ✅ 使用 goroutines + worker pool fan-out 实现真正的并发
- ✅ 采用独立接口的简洁架构
- ✅ 本地 SQLite 存储用于保存历史记录
- ✅ JSON 和 PDF 报告
- ✅ 使用 mock httptest 服务器进行测试
- ✅ Docker 多阶段构建
- ✅ 使用 GitHub Actions 进行 CI/CD
## 技术栈
| 组件 | 库 |
|------------|----------|
| CLI Framework | `spf13/cobra` |
| 彩色输出 | `fatih/color` |
| PDF 报告 | `go-pdf/fpdf` |
| 数据库 | `ncruces/go-sqlite3`(无 CGO) |
## 许可证
MIT
标签:EVTX分析, 日志审计, 请求拦截