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, 加密, 后端开发, 密码管理, 异步任务, 插件系统, 搜索引擎查询, 测试用例, 漏洞扫描器, 版权保护, 逆向工具