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攻击, 安全仪表盘, 插件系统, 自动化攻击, 蓝队分析, 逆向工具