vugarfamiloglu/securescan-ssa

GitHub: vugarfamiloglu/securescan-ssa

一款支持每日自动扫描、严重程度评分和告警的网站安全审计工具,覆盖 TLS、安全头、端口、Cookie 及可选的 XSS/SQLi 检测。

Stars: 0 | Forks: 0

# SecureScan SSA 一款**网站安全审计扫描器**。SecureScan 会探测目标站点的 TLS/SSL 漏洞、 缺失的安全 headers、暴露的端口、不安全的 cookies 以及(可选开启的)反射型 XSS 和 SQL 注入特征,随后对每次扫描进行评分,按严重程度追踪发现结果,发出严重 警报,并对每个目标运行**每日自动扫描**。 UI 采用的是 **Tracewell** —— 这是一个“轻量化优先”的安全实验室控制台,由完整的严重程度颜色 刻度(严重 → 信息)驱动,带有钴蓝色的“扫描”强调色、实时扫描日志终端,以及 可折叠侧边栏的 scope-dial。浅色和深色主题均是一等公民。 ## 功能 ### 扫描引擎 - **TLS/SSL** —— 证书有效性、过期时间窗口、弱协议协商。 - **Security headers** —— HSTS、CSP、X-Frame-Options、X-Content-Type-Options、Referrer-Policy、 Permissions-Policy,以及技术 banner 泄露。 - **端口扫描** —— 对常见端口进行并发 TCP 探测,标记 risky exposure(Redis、 MongoDB、RDP、Telnet、SMB、数据库等)。 - **Cookies** —— 缺失 Secure / HttpOnly / SameSite 标志。 - **主动探测(可选开启)** —— 反射型输入(可能的 XSS)和基于错误的 SQL 注入 特征,均为非破坏性。 - 每次检查都会生成一个包含严重程度、证据、修复建议和 CWE 参考的发现结果;每次 扫描都会获得一个 0–100 的安全评分。 ### 自动化与监控 - 在可配置的时间点,对所有活跃目标(APScheduler)执行**每日自动扫描**。 - **仪表盘** —— 平均安全态势评分、严重程度分布、评分趋势、按 类别划分的发现结果、近期扫描和严重警报突出显示。 - **发现结果** —— 每个目标最近一次扫描中发现的开放漏洞,可按严重程度 过滤,并支持行内解决。 - 针对高/严重程度发现结果的**严重警报**,支持确认操作。 - **实时扫描日志终端**,流式传输引擎和调度器的遥测数据。 ### 体验 - 浅色 + 深色主题(状态持久化,并根据 `prefers-color-scheme` 初始化)。 - **Scope-dial 折叠**侧边栏、可调整大小的表格、密码显示/隐藏切换、toasts,以及 **在每次破坏性操作和登出时的确认弹窗**。 ## 技术栈 | 层级 | 选择 | |-------------|---------------------------------------------------------------------| | 后端 | **Python · FastAPI** (异步扫描引擎, `asyncio`/`httpx`/`ssl`) | | 调度器 | **APScheduler** (每日 cron 自动扫描) | | 存储 | 位于 `data/` 下的 **SQLite** (标准库 `sqlite3`, WAL) | | 加密 | **AES-256-GCM** vault (`cryptography`) + scrypt 密码 + HMAC cookie | | 前端 | **React + Vite + TypeScript** SPA, **Chart.js** | | 部署服务 | FastAPI 在单一进程中同时提供构建好的 SPA 和 JSON API 服务 | ## 快速开始 ### 前置条件 - Python 3.11+(在 3.14 版本上开发)和 Node.js 18+。 ### 安装与构建 ``` # backend python -m venv .venv .venv/Scripts/python -m pip install -r requirements.txt # (POSIX: .venv/bin/python) # frontend (构建 API 提供服务的 SPA) cd web && npm install && npm run build && cd .. ``` ### 运行 ``` .venv/Scripts/python -m uvicorn app.main:app --port 8400 ``` 打开 并使用管理员密码解锁。 | 凭据 | 默认值 | |---------------|---------------------| | 管理员密码 | `scan-the-surface` | 首次启动时会加载一个演示工作区(包含 5 个带有历史扫描、发现结果和 警报的目标),以确保每个页面都有数据。实时扫描需要一个可达的目标 URL。 ### 带热重载的开发模式 ``` # terminal 1 — API .venv/Scripts/python -m uvicorn app.main:app --reload --port 8400 # terminal 2 — Vite dev server (代理 /api → :8400) cd web && npm run dev # http://localhost:5173 ``` ### 配置 将 `.env.example` 复制为 `.env`: ``` PORT=8400 SECURESCAN_PASSCODE=scan-the-surface APP_SECRET=change-me-to-a-long-random-string DAILY_SCAN_HOUR=3 # VAULT_KEY=base64-32-byte-key # 否则生成至 data/.vault-key ``` `.env`、`data/`、vault key 和构建产物已被 git-ignore。 ## 安全模型 - **仅限授权扫描** —— 主动探测默认关闭,且仅发送良性标记。 - **静态存储的 Secrets** —— Slack 告警 webhook 使用 AES-256-GCM 加密(密钥来自 `VAULT_KEY` 或生成至 `data/.vault-key`,权限模式 0600),并以掩码形式显示。 - **认证** —— scrypt 哈希处理的密码;HMAC 签名、HTTP-only、12 小时会话 cookie。 - 演示种子数据仅使用示例主机名,且不包含真实的 secret 格式。 ## 项目结构 ``` . ├── app/ # FastAPI backend │ ├── main.py # app + lifespan (seed, scheduler) + SPA mount │ ├── scanner.py # the scan engine (TLS / headers / ports / XSS / SQLi) │ ├── data.py # data access + scan orchestration │ ├── db.py vault.py auth.py logbus.py config.py scheduler.py seed.py routes.py ├── web/ # React + Vite SPA │ └── src/ │ ├── App.tsx AppShell.tsx api.ts types.ts styles.css │ ├── charts.tsx ui.tsx components.tsx util.ts │ └── pages/ # Login, Dashboard, Targets, ScanReport, Findings, Alerts, Logs, Settings └── requirements.txt ``` ## API `POST /api/login` · `POST /api/logout` · `GET /api/me` · `GET /api/dashboard` · `GET/POST /api/targets`, `DELETE /api/targets/{id}`, `POST /api/targets/{id}/scan` · `GET /api/scans`, `GET /api/scans/{id}` · `GET /api/findings`, `POST /api/findings/{id}/resolve` · `GET /api/alerts`, `POST /api/alerts/{id}/ack`, `POST /api/alerts/ack-all` · `GET/POST /api/settings` · `GET /api/logs` ## 许可证 Apache License 2.0 — 详见 [许可证](LICENSE)。
标签:AV绕过, DOE合作, FastAPI, React, Syscalls, Web安全, XXE攻击, 安全仪表盘, 插件系统, 自动化攻击, 蓝队分析, 逆向工具