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安全扫描, 主机安全, 属性图, 攻击面分析, 数据泄露, 无服务器架构, 版权保护, 运行时操纵