gmedia/vuln-scanner
GitHub: gmedia/vuln-scanner
基于 Web 的多功能漏洞扫描器,支持 IP、域名和移动应用安全分析,通过异步任务队列实现高效扫描并提供可视化报告。
Stars: 0 | Forks: 0
# VulnScanner
基于 Web 的漏洞扫描器,具有 3 种扫描模式 — IP、域名以及 APK/IPA 移动应用分析。通过 Docker Compose 部署,支持异步任务处理。
## 架构
```
┌─────────────────────────────────────────────┐
│ nginx :80 │
├─────────────────────────────────────────────┤
│ frontend (React + Vite) :5173 │
├─────────────────────────────────────────────┤
│ backend (FastAPI) :8000 │
├──────┬──────┬──────┬────────────────────────┤
│ ip │domain│mobile│ │
│worker│worker│worker│ Redis ── Postgres │
└──────┴──────┴──────┴────────────────────────┘
```
## 快速开始
```
# 1. Clone & 配置
cp .env.example .env
# 编辑 .env — 将 API_KEY 设置为一个 secret value
# 2. 启动所有服务
docker compose up -d
# 3. 打开 dashboard
# http://localhost
```
## 本地开发
前置条件:Node.js 20+、Python 3.12+、Docker(PostgreSQL 和 Redis)。
### 1. 基础设施(PostgreSQL + Redis)
```
docker run -d --name vscan-pg -e POSTGRES_USER=vscan -e POSTGRES_PASSWORD=vscan -e POSTGRES_DB=vscan -p 5432:5432 postgres:16
docker run -d --name vscan-redis -p 6379:6379 redis:7
```
### 2. 后端
```
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Run migrations
alembic upgrade head
# 启动 dev server (hot-reload)
uvicorn app.main:app --reload --port 8000
```
### 4. Worker
打开单独的终端 — 每个 queue 对应一个:
```
cd workers
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Terminal 1 — IP 扫描
celery -A celery_app worker -Q ip_scan --loglevel=info
# Terminal 2 — Domain 扫描
celery -A celery_app worker -Q domain_scan --loglevel=info
# Terminal 3 — Mobile 扫描
celery -A celery_app worker -Q mobile_scan --loglevel=info
```
### 4. 前端
```
cd frontend
npm install
npm run dev # → http://localhost:5173
```
### 项目结构
```
vuln-scanner/
├── backend/ # FastAPI app
│ ├── app/
│ │ ├── api/ # Routes, WebSocket, router
│ │ ├── models/ # SQLAlchemy models
│ │ ├── schemas/ # Pydantic schemas
│ │ └── services/ # Business logic
│ └── alembic/ # DB migrations
├── workers/ # Celery workers
│ ├── tasks/ # ip_scan, domain_scan, mobile_scan
│ └── utils/ # nmap, CVE lookup, domain/mobile utils
├── frontend/ # React + Vite
│ └── src/
│ ├── api/ # API client
│ ├── components/ # UI components
│ ├── hooks/ # WebSocket hooks
│ ├── pages/ # Page views
│ └── store/ # State management
├── nginx/ # Reverse proxy config
├── docker-compose.yml # Production stack
└── .env.example # Environment template
```
## 扫描模式
| 模式 | 输入 | 功能描述 |
|------|-------|-------------|
| **IP 扫描器** | IP 地址 | 通过 nmap(`-sV -sC -O`)进行端口扫描,通过 OSV.dev 查询 CVE,进行严重性分类 |
| **域名扫描器** | 域名 | DNS 解析,子域名枚举(crt.sh),SSL/TLS 分析,安全标头审计,技术栈指纹识别 |
| **移动应用扫描器** | APK/IPA 文件 | Manifest 分析,权限分类,导出组件检测,硬编码密钥扫描 |
## API
所有 endpoint 都需要 `X-API-Key` 请求头。
```
# 发起扫描
curl -X POST http://localhost/api/scan \
-H "X-API-Key: your-key" \
-H "Content-Type: application/json" \
-d '{"scan_type": "ip", "target": "8.8.8.8"}'
# 获取结果
curl http://localhost/api/scan/{id} \
-H "X-API-Key: your-key"
# 导出 HTML 报告
curl http://localhost/api/scan/{id}/export?format=html \
-H "X-API-Key: your-key" -o report.html
```
## 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `API_KEY` | `dev-api-key-change-me` | API 认证密钥 |
| `DATABASE_URL` | `postgresql+asyncpg://...` | PostgreSQL 连接字符串 |
| `REDIS_URL` | `redis://redis:6379/0` | Redis 连接字符串 |
## 服务
| 服务 | 端口 | 描述 |
|---------|------|-------------|
| nginx | `:80` | 反向代理 |
| frontend | `:5173` | React 仪表盘 |
| backend | `:8000` | FastAPI REST API |
| ip_worker | — | IP 扫描任务 |
| domain_worker | — | 域名扫描任务 |
| mobile_worker | — | 移动应用扫描任务 |
| postgres | `:5432` | 数据库 |
| redis | `:6379` | 消息代理 / 缓存 |
## 技术栈
- **前端**:TypeScript、React、Vite、TailwindCSS、shadcn/ui
- **后端**:Python、FastAPI、SQLAlchemy、Alembic
- **Worker**:Celery、Redis
- **CVE 来源**:OSV.dev(免费,无需 API 密钥)
- **部署**:Docker Compose
## 许可证
MIT
标签:AV绕过, Docker Compose, FastAPI, React, Syscalls, 加密, 后端开发, 密码管理, 异步任务, 插件系统, 搜索引擎查询, 测试用例, 漏洞扫描器, 版权保护, 逆向工具