its-bismay/SentinelScan
GitHub: its-bismay/SentinelScan
一款生产级全栈异步 Web 安全漏洞扫描器,通过十个并行审计模块和 AI 驱动的报告生成,帮助企业快速发现并修复 Web 应用的安全风险。
Stars: 0 | Forks: 0
# SentinelScan 🛡️ — Web 应用漏洞扫描器
SentinelScan 是一款生产级、全栈、异步的 Web 安全漏洞扫描器。它采用现代深色主题仪表盘,具备由 Inngest 驱动的事件驱动后台处理流水线、并行执行的高保真安全审计模块,以及利用 Groq LLM 进行 AI 驱动的报告生成与聊天辅助功能。
## 🏗️ 架构与数据流
SentinelScan 采用异步、解耦的事件驱动架构,确保 Web 扫描过程不会阻塞主 Express.js HTTP 线程。以下是展示扫描任务如何在系统中流转的工作流图:
```
sequenceDiagram
autonumber
actor User as User Browser
participant API as Express API Server
participant DB as MongoDB
participant Queue as Inngest Engine
participant Crawler as Playwright & Cheerio
participant LLM as Groq AI (Llama 3.3)
User->>API: 1. Submit Target URL (/api/scans)
API->>DB: 2. Create Scan record (status: 'pending')
API->>Queue: 3. Dispatch 'scan.created' event
API-->>User: 4. Instant success response + Scan ID
Note over Queue, Crawler: Background execution begins
Queue->>Crawler: 5. Spawn Crawler & Scan Pipeline
Crawler->>DB: 6. Stream Live logs (ScanLog collection)
DB-->>User: 7. Real-time updates via Server-Sent Events (SSE)
Crawler->>Crawler: 8. Execute 10 parallel security checks
Crawler->>DB: 9. Write findings & raw details
Queue->>LLM: 10. Call AI model with findings
LLM-->>Queue: 11. Return executive summary & remediation code
Queue->>DB: 12. Save Report & Update Scan status to 'completed'
DB-->>User: 13. Update UI to 100% complete & show score
```
## 🔍 10 个专业安全模块
每个扫描目标都会经历 10 个独立且专业的审计模块。该流水线旨在使用 `Promise.allSettled()` 并发运行这些模块。如果某个模块失败或遇到边缘情况,系统会将其记录在案,其余扫描任务将继续进行,不受影响。
| # | 安全模块 | 技术摘要 | 执行的关键检查 |
|---|---|---|---|
| **1** | **Web 爬虫** | 使用 Cheerio HTML 解析递归遍历目标域名的内部链接。 | 内部链接、表单枚举、资产映射、深度/页面限制。 |
| **2** | **安全标头** | 检查响应头,验证现代浏览器保护策略的正确实施。 | Content-Security-Policy (CSP)、HSTS、X-Frame-Options、Referrer-Policy、CORS。 |
| **3** | **Cookie 属性** | 分析所有已爬取页面上的 `Set-Cookie` 指令,验证标志设置。 | `HttpOnly` 标志、`Secure` 标志、`SameSite` 属性配置。 |
| **4** | **SSL/TLS 证书** | 评估 HTTPS 证书链的有效性、颁发机构和有效期。 | 过期时间、HTTPS 重定向强制、TLS 握手验证。 |
| **5** | **Robots.txt 分析** | 解析指令,定位被标记为排除搜索引擎索引的文件或路径。 | 暴露的后台管理面板、隐藏的配置目录、备份资产。 |
| **6** | **点击劫持审计器** | 验证框架嵌入配置,保护用户免受 UI 重定向攻击。 | Frame-ancestors 指令、X-Frame-Options 标头。 |
| **7** | **CORS 配置** | 使用动态源探测 CORS 预检选项,识别不安全的凭证绑定。 | 通配符源 (`*`)、反射源、凭证泄露。 |
| **8** | **目录扫描器** | 使用包含常见暴露接口的目录字典审计目标文件。 | `/admin`、`/wp-admin`、`/.git`、`/.env`、`/backup`、`/phpmyadmin`。 |
| **9** | **信息泄露** | 扫描响应源码和 HTTP 标头,查找版本披露和服务器 banner。 | `Server` 标头、`X-Powered-By` 签名、开发者注释、堆栈跟踪。 |
| **10** | **Playwright Headless** | 启动 headless Chromium 实例,爬取并抓取单页应用。 | 动态单页应用、动态 DOM 修改、JS 注入的链接。 |
## 🛠️ 技术栈
- **前端**:React SPA (Vite)、Tailwind CSS、DaisyUI(Forest/Light 主题)、Zustand(状态管理)、Lucide React、Recharts(可视化统计)和 jsPDF。
- **后端**:Node.js (ESM)、Express.js、Helmet、CORS、Cookie-Parser、Mongoose 和 Passport.js。
- **任务引擎**:Inngest SDK(本地开发环境通过 CLI,生产环境通过 Inngest Cloud)。
- **AI 集成**:Groq SDK (`llama-3.3-70b-versatile`),用于摘要生成和问答聊天。
- **数据库**:MongoDB。
## 🚀 快速开始
### 前置条件
- Node.js (v18+)
- MongoDB Atlas 集群或本地 MongoDB 数据库实例
- Groq API Key(用于报告生成和 AI 助手)
### 配置与环境
在 `backend/` 目录下创建一个 `.env` 文件:
```
PORT=5000
MONGODB_URI=mongodb+srv://:@cluster.mongodb.net/sentinelscan
JWT_SECRET=your_super_secret_jwt_key
CLIENT_URL=http://localhost:5173
GROQ_API_KEY=gsk_your_groq_api_key
# Google OAuth 设置(可选)
GOOGLE_CLIENT_ID=your_google_client_id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-your_google_client_secret
# Inngest Dev Server 配置(对于本地开发是可选的)
# INNGEST_BASE_URL=http://127.0.0.1:8288
```
在 `client/` 目录下创建一个 `.env` 文件:
```
VITE_API_URL=http://localhost:5000/api
```
### 安装说明
1. **克隆仓库**:
git clone https://github.com/your-username/web-security-scanner.git
cd web-security-scanner
2. **安装后端依赖**:
cd backend
npm install
3. **安装前端依赖**:
cd ../client
npm install
4. **安装 Headless Playwright 浏览器**:
npx playwright install chromium
### 本地开发启动
当后端、前端和 Inngest Dev Server 同时运行时,SentinelScan 即可全面运作。
1. **启动 Inngest Dev Server**(在专用终端中):
npx inngest-cli@latest dev -u http://localhost:5000/api/inngest
2. **启动 Express API 服务器**:
cd backend
npm run dev
3. **启动 React 前端客户端**:
cd client
npm run dev
4. 在浏览器中打开 `http://localhost:5173`。
## 🔒 安全实践与降级回退
* **CORS 设置**:后端使用 `CLIENT_URL` 环境参数配置 CORS 策略。
* **Inngest 弹性**:如果在开发期间 Inngest 运行器宕机或无法访问,SentinelScan 会优雅地降级回退到使用 `setImmediate()` 的非阻塞进程内线程,确保您无需后台队列基础设施也能在本地运行安全审计。
* **安全标头**:使用 Helmet 在 API endpoint 上强制执行标准安全标头(CSP、HSTS、X-Content-Type-Options)。
🛡️ *SentinelScan — 让企业级 Web 应用审计化繁为简。*
标签:CISA项目, MITM代理, Playwright, Web漏洞扫描, 异步架构, 漏洞审计, 特征检测, 自定义脚本