sronaal/raven
GitHub: sronaal/raven
一款被动式 Web 安全扫描器与攻击面分析工具,通过多层级非侵入式扫描帮助用户发现网站漏洞、安全配置缺陷及合规风险。
Stars: 0 | Forks: 0
# URL 安全扫描器
用于教育目的和授权渗透测试的多层级 Web URL 安全分析工具。
## 技术栈
| 层级 | 技术 |
|-------|-----------|
| **后端** | Python 3.12 + FastAPI 0.104 + SlowAPI + httpx |
| **前端** | React 18 + Vite 5 + Tailwind CSS 3.4 |
| **WebSocket** | FastAPI WebSocket(实时扫描进度) |
| **基础设施** | Docker Compose(后端 + 前端) |
## 架构
两个独立的项目 —— 不使用 monorepo 工具:
```
scanner_intelligent/
├── backend/ # FastAPI application
│ ├── main.py # Entrypoint
│ ├── config/settings.py # Configuration
│ ├── routes/ # API handlers
│ │ ├── scan.py # Scanner endpoints
│ │ ├── crawler.py # Crawling + extended analysis
│ │ ├── history.py # Scan history & PDF report
│ │ └── websocket.py # Real-time progress
│ ├── services/ # Business logic
│ ├── utils/ # Validators
│ └── data/ # Signatures, CVE DB, fingerprints
├── frontend/ # Vite + React application
│ └── src/
│ ├── components/ # React components
│ └── utils/api.js # API client
├── docker-compose.yml # Backend + frontend orchestration
└── .env.example # Configuration template
```
前端将 `/api` 请求代理到位于 `http://localhost:8000` 的后端(在开发环境中没有 CORS 问题)。
## 功能
### 第一级 — 侦查与指纹识别
- 服务器检测与版本识别
- 技术栈指纹识别(语言、框架、CMS、库)
- HTTP 安全标头分析(HSTS、CSP、X-Frame-Options 等)
- 安全错误配置检测
- Mozilla Observatory 风格的评分
### 第二级 — 漏洞分析
- 本地 CVE 数据库匹配(20 多条记录)
- 外部 CVE 获取(NVD/NIST API)
- SSL/TLS 证书分析(协议版本、加密方式、有效期)
- WAF 检测(Cloudflare、ModSecurity 等)
- 已知漏洞模式匹配
### 第三级 — 参数与攻击向量分析
- SQL 注入向量检测
- XSS 反射分析
- 路径遍历识别
- SSRF 与开放重定向检查
- CSRF 防护分析
- 速率限制检测
### 附加模块
- **爬虫** —— 递归站点爬取,支持深度/页面限制、JSON-LD 提取、data-* 属性发现
- **OWASP Top 10** —— 自动化 OWASP 2021 风险评估
- **API 发现** —— 从 HTML/JS 枚举 endpoint
- **依赖检查器** —— 已知漏洞库检测
- **攻击面映射** —— 综合风险可视化
- **合规性检查器** —— PCI-DSS、GDPR、HIPAA 就绪状态评估
- **重定向链分析** —— 完整重定向路径追踪
- **子域名枚举** —— 通过 crt.sh 被动发现子域名
- **Robots.txt 与 Sitemap** —— 策略与 Sitemap 提取
- **Cookie 分析** —— 每个 Cookie 的安全属性
- **端口扫描器** —— TCP 连接扫描 300 多个常用端口并识别服务
- **DNS 枚举** —— A、AAAA、CNAME、MX、NS、TXT、SOA 记录解析
- **电子邮件安全** —— SPF、DKIM(多选择器)、DMARC 策略分析与评分
- **混合内容检测** —— HTTPS 页面加载 HTTP 资源(img、script、iframe、fetch 等)
- **Security.txt 检查** —— 根据 RFC 9116 获取并验证 /.well-known/security.txt
- **批量扫描** —— 并行扫描最多 20 个 URL
- **历史记录与比较** —— 扫描结果持久化,扫描间的差异比对
- **PDF 报告** —— 将扫描结果导出为 PDF,包含分数、漏洞、缺失标头、Cookie 和合规性
## 评分
```
total_score = level1_score * 0.3 + level2_score * 0.4 + level3_score * 0.3
```
加权平均(0–100),倾向于漏洞分析。
## 快速开始
### 后端
```
cd backend
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
uvicorn main:app --reload --host 0.0.0.0 --port 8000
```
### 前端
```
cd frontend
pnpm install
pnpm dev
```
在浏览器中打开 `http://localhost:5173`。
### Docker
```
docker compose up --build
```
## 配置
将 `.env.example` 复制到 `.env` 并进行调整:
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `SECRET_KEY` | `change-me-in-production` | 应用密钥 |
| `EXTERNAL_API_ENABLED` | `true` | 启用外部 CVE/NVD 查询 |
| `MAX_BODY_SIZE` | `100000` | 要分析的最大 HTTP body 大小(字节) |
## API Endpoint
### 扫描器
| 方法 | 路径 | 描述 |
|--------|------|-------------|
| `POST` | `/api/scan/full` | 完整的 3 级扫描 |
| `POST` | `/api/scan/level1` | 仅第一级(指纹识别) |
| `POST` | `/api/scan/level2` | 仅第二级(漏洞) |
| `POST` | `/api/scan/level3` | 仅第三级(参数) |
| `POST` | `/api/scan/redirects` | 重定向链分析 |
| `POST` | `/api/scan/subdomains` | 子域名枚举 |
| `POST` | `/api/scan/robots` | Robots.txt 与 Sitemap 分析 |
| `POST` | `/api/scan/batch` | 批量扫描(最多 20 个 URL) |
| `POST` | `/api/scan/cookies` | Cookie 安全分析 |
| `POST` | `/api/scan/grade` | Mozilla Observatory 评分 |
| `POST` | `/api/scan/ports` | TCP 端口扫描(300+ 端口) |
| `POST` | `/api/scan/dns` | DNS 记录枚举 |
| `POST` | `/api/scan/email-security` | SPF/DKIM/DMARC 电子邮件安全 |
| `POST` | `/api/scan/mixed-content` | 混合内容(HTTPS 下的 HTTP) |
| `POST` | `/api/scan/security-txt` | RFC 9116 security.txt 检查 |
### 爬虫与扩展
| 方法 | 路径 | 描述 |
|--------|------|-------------|
| `POST` | `/api/crawl` | 递归站点爬取 |
| `POST` | `/api/scan/owasp` | OWASP Top 10 评估 |
| `POST` | `/api/discover` | API endpoint 发现 |
| `POST` | `/api/dependencies` | 依赖漏洞检查 |
| `POST` | `/api/compliance` | 合规性检查(PCI/GDPR/HIPAA) |
| `POST` | `/api/surface` | 攻击面映射 |
### 历史记录与报告
| 方法 | 路径 | 描述 |
|--------|------|-------------|
| `GET` | `/api/scans` | 列出过去的扫描 |
| `GET` | `/api/scans/:id` | 获取扫描详情 |
| `DELETE` | `/api/scans/:id` | 删除某次扫描 |
| `GET` | `/api/scans/:id/report` | 下载 PDF 报告 |
| `GET` | `/api/scans/compare` | 比较两次扫描 |
| `GET` | `/api/stats` | 扫描统计信息 |
### WebSocket
| 路径 | 描述 |
|------|-------------|
| `WS` | `/ws/{client_id}` | 实时扫描进度更新 |
### 健康状态
| 方法 | 路径 | 描述 |
|--------|------|-------------|
| `GET` | `/api/health` | 服务健康检查 |
## 安全
- **速率限制**:每个 IP 每分钟 10 次请求(通过 SlowAPI)
- **私有 IP 阻断**:阻止 RFC 1918、loopback 和保留范围
- **DNS 重绑定防护**:根据黑名单验证解析的 IP
- **仅被动分析**:不发送 payload 或进行利用
- **所有扫描均被记录**:包含客户端 IP 和时间戳的完整审计跟踪
## 免责声明
本工具仅供教育目的和授权渗透测试使用。请仅在获得明确测试许可的情况下扫描网站。未经授权的扫描可能会违反相关法律。
标签:AV绕过, FastAPI, React, Syscalls, Web安全扫描, 主机安全, 属性图, 攻击面分析, 数据泄露, 无服务器架构, 版权保护, 运行时操纵