Vedant7276/webvuln-scanner
GitHub: Vedant7276/webvuln-scanner
SENTRY 是一个基于 FastAPI 和 React 构建的全栈 Web 安全扫描平台,通过非破坏性的被动检测模块对网站进行自动化漏洞评估和风险评分。
Stars: 0 | Forks: 0
# SENTRY — 网站安全测试与漏洞评估平台
一个用于自动化、**经授权的**网站安全
测试和漏洞评估的全栈应用程序。使用 FastAPI (Python) 和
React + Vite + Tailwind CSS 构建。
## 这是什么(以及不是什么)
这是一个**漏洞评估 / 侦查工具**,而不是一个漏洞利用
框架。每个扫描模块都被设计为非破坏性的:
- SQLi/XSS 检测使用被动**指标**(错误签名、
惰性标记的反射)—— 不提取数据,不使用实际可用的漏洞利用。
- 不暴力破解凭证,不上传文件到目标,不发起
拒绝服务式的请求。
- 标记为“possible”(可能)/“indicator”(指标)的发现旨在指导合格的测试人员进行**手动**
验证 —— 它们不能证明漏洞是可利用的。
## 技术栈
| 层级 | 技术 |
|---|---|
| 后端 | Python 3.11+, FastAPI, SQLAlchemy, SQLite |
| 前端 | React 18, Vite, Tailwind CSS, Chart.js |
| 报告 | ReportLab (PDF 生成) |
| 扫描 | requests, dnspython, python-whois, ssl, socket, BeautifulSoup |
## 项目结构
```
webvuln-scanner/
├── backend/
│ ├── app/
│ │ ├── main.py # FastAPI app entrypoint
│ │ ├── config.py # Settings (env-driven)
│ │ ├── database.py # SQLAlchemy engine/session
│ │ ├── models.py # DB schema (Scan, Vulnerability, etc.)
│ │ ├── schemas.py # Pydantic request/response models
│ │ ├── orchestrator.py # Runs modules, persists findings, scores
│ │ ├── routers/
│ │ │ ├── scans.py # POST/GET/DELETE /api/scans
│ │ │ ├── reports.py # /api/reports (list + PDF download)
│ │ │ └── dashboard.py # /api/dashboard (aggregate stats)
│ │ ├── scanner/ # One module per capability (see below)
│ │ └── utils/
│ │ ├── validators.py # URL validation, SSRF/private-IP guard
│ │ └── http_client.py # Shared requests session wrapper
│ ├── requirements.txt
│ └── .env.example
├── frontend/
│ ├── src/
│ │ ├── pages/ # Dashboard, NewScan, RunningScan,
│ │ │ # Results, ScanDetail, Reports, Settings
│ │ ├── components/ # Sidebar, SecurityGauge, badges, modal
│ │ ├── api.js # Axios API client
│ │ └── constants.js # Module list, severity colors, helpers
│ ├── package.json
│ └── vite.config.js
├── database/ # SQLite file lives here
├── reports/ # Generated PDF reports
├── screenshots/ # Reserved for evidence screenshots
└── docs/
```
### 扫描模块 (`backend/app/scanner/`)
| 文件 | 用途 |
|---|---|
| `information_gathering.py` | 快速 HTTP 指纹识别(标题、服务器、重定向) |
| `whois_lookup.py` | 域名 WHOIS 注册数据 |
| `dns_lookup.py` | A/AAAA/MX/TXT/NS/SOA/CNAME + SPF/DMARC 检查 |
| `subdomains.py` | crt.sh 证书透明度 + DNS 暴力破解 |
| `technology.py` | CMS / JS 框架 / 服务器指纹识别 |
| `ports.py` | 线程化的 Top 100 端口 TCP 连接扫描 |
| `nmap_scan.py` | 通过系统 `nmap` 进行可选的深度扫描(回退到 `ports.py`) |
| `headers.py` | 安全标头存在性/质量(HSTS、CSP 等) |
| `ssl_scan.py` | 证书过期时间、协议版本、密码 |
| `auth.py` | 登录表单 HTTPS 检查、管理员路径发现 |
| `sqli.py` | 被动错误签名 SQL 注入指标 |
| `xss.py` | 反射型标记 XSS 指标 |
| `csrf.py` | Anti-CSRF token / SameSite cookie 检查 |
| `idor.py` | 连续 ID + 目录遍历指标 |
| `file_upload.py` | 上传表单分析(客户端限制) |
| `api_testing.py` | API 文档暴露、详细错误、速率限制检查 |
| `cookies.py` | Secure/HttpOnly/SameSite 标志分析 |
| `jwt_analysis.py` | JWT alg:none / 缺少 exp / 弱算法指标 |
| `cors.py` | 通配符 / 反射源 CORS 错误配置 |
| `security_config.py` | 暴露的敏感文件、目录列表 |
| `risk_engine.py` | CVSS/OWASP/CWE 映射 + 总体得分计算 |
| `report_generator.py` | 生成 PDF 报告 (ReportLab) |
## 安装说明 (macOS, Apple Silicon)
### 后端
```
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
uvicorn app.main:app --reload --port 8000
```
API 现已在 `http://localhost:8000` 上线 —— 交互式文档位于
`http://localhost:8000/docs`。
可选:安装 `nmap` 以进行更深度的端口/服务扫描
(`brew install nmap`)。如果没有安装,应用程序会自动回退到
内置的基于 socket 的扫描器。
### 前端
```
cd frontend
npm install
npm run dev
```
UI 现已在 `http://localhost:5173` 上线,并将 `/api/*`
请求代理到端口 8000 上的后端。
## 工作流
1. **新建扫描** → 输入目标 URL,选择模块,确认授权
2. 扫描在后台运行:信息收集 → 端口扫描 → 标头 → SSL
→ 认证检查 → 输入验证 → API 检查 → 风险计算
3. **正在运行的扫描**页面实时轮询状态
4. **结果** → 针对单个发现的详细信息,包含 CVSS/OWASP/CWE、证据和
修复指南
5. **报告** → 随时下载自动生成的 PDF
## 数据库架构
SQLite(通过 SQLAlchemy),四张表:`scans`、`scan_modules`、
`vulnerabilities`、`reports`。请查看 `backend/app/models.py` 获取完整的
带有列级注释的架构。
## 范围说明
此版本实现了完整的架构、可工作的后端扫描
逻辑(已针对活动的测试目标进行端到端验证),以及所有
指定页面的完整功能性 UI。出于安全或环境限制,部分区域被有意限制在特定范围内:
- **证据截图**:架构/报告包含 `screenshot_path`
字段;如果你想要捕获可视化证据,接入一个无头浏览器截图模块(例如 Playwright)
是顺理成章的后续扩展。
- **IDOR / 业务逻辑测试**:标记为信息类以供手动
审查 —— 真正的 IDOR 测试需要经过认证的、具有上下文感知能力的
测试,这是未经认证的自动化扫描器无法安全执行的。
- **nmap**:在主机系统上可用时使用;否则回退到
内置扫描器。
标签:AES-256, AV绕过, CISA项目, FastAPI, React, Splunk, Syscalls, Web安全, 动态插桩, 安全测试, 攻击性安全, 漏洞评估, 蓝队分析, 逆向工具