MrZXN777/viper
GitHub: MrZXN777/viper
一款基于 Nuclei 风格 YAML 模板的快速 HTTP 漏洞扫描器,内嵌精选模板包并原生支持 Windows 11。
Stars: 0 | Forks: 0

# 🐍 VIPER
**一款快速、模板驱动的 HTTP 漏洞扫描器。支持 Nuclei 风格的 YAML 模板,原生支持 Windows 11,零配置。**
[](https://go.dev)
[](#)
[](templates/)
[](LICENSE)
[](https://github.com/MrZXN777/viper/actions)
*只需用 YAML 编写一次检测规则,即可对任何目标发起扫描。精选模板包已直接内置到二进制文件中。*
## ✨ 功能
- 🧬 **Nuclei 风格模板** — 实用的 YAML 子集:支持 `word` / `regex` / `status` / `size` 匹配器、`and`/`or` 条件、**反向**匹配器以及 **extractors**
- 📦 **开箱即用** — 精选模板包已**嵌入**二进制文件中;零配置即可运行
- ⚡ **并发引擎** — 跨模板 × 目标的有限工作池
- 🎚️ **按严重程度和标签过滤** — `-severity high`, `-tags exposure,git`
- 🎨 **彩色输出 + JSON** 报告,适用于流水线
- 📁 **自带模板** — 使用 `-t` 指向任何目录
- 🧊 **单一静态二进制文件**,原生支持 Windows 11(同时也支持 Linux/macOS)
## 📦 安装
从 [Releases](https://github.com/MrZXN777/viper/releases) 下载 `viper.exe`,或者自行构建:
```
git clone https://github.com/MrZXN777/viper
cd viper
go build -ldflags "-s -w" -o viper.exe .
```
## 🚀 用法
```
# 使用 embedded pack 扫描单个目标
viper -u https://example.com
# 仅 high+ severity
viper -u https://example.com -severity high
# 多目标,按 tag 过滤,JSON out
viper -l targets.txt -tags exposure,git -json findings.json
# 列出内置 templates
viper -tl
# 使用您自己的 template 目录
viper -u https://example.com -t ./my-templates
```
## 📋 内置模板
| 严重程度 | ID | 检测目标 |
|----------|-----|---------|
| 🔴 high | `exposed-env-file` | 泄露敏感信息的公开 `.env` |
| 🔴 high | `exposed-backup-archive` | 可下载的 `backup.zip` / `db.sql` |
| 🔴 high | `spring-actuator-exposure` | 暴露的 Spring Boot Actuator |
| 🟠 medium | `exposed-git-config` | 暴露的 `.git/config` |
| 🟠 medium | `exposed-git-head` | 暴露的 `.git/HEAD` |
| 🟠 medium | `phpinfo-disclosure` | 暴露的 `phpinfo()` |
| 🔵 low | `directory-listing` | 自动列目录 |
| 🟢 info | `missing-security-headers` | 缺失 CSP header |
## ✍️ 编写模板
```
id: exposed-env-file
info:
name: Exposed .env Configuration File
author: MrZXN777
severity: high
tags: exposure,config,secret
requests:
- method: GET
path:
- "{{BaseURL}}/.env"
matchers-condition: and
matchers:
- type: status
status: [200]
- type: regex
part: body
regex:
- "(?i)(DB_PASSWORD|APP_KEY|SECRET_KEY)\\s*="
extractors:
- type: regex
part: body
regex: ["(?i)^[A-Z0-9_]+\\s*="]
```
**Matchers:** `word`, `regex`, `status`, `size` · `part`: `body` / `header` / `all` · `condition`: `and` / `or` · `negative: true` 表示反转匹配。
**Extractors:** `regex`(支持提取 `group`)或 `kval`(header 值)。
## 📄 许可证
MIT © [MrZXN777](https://github.com/MrZXN777)标签:EVTX分析, Go语言, YAML模板, 主机安全, 加密, 密码管理, 日志审计, 漏洞扫描器, 程序破解