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漏洞扫描, 异步架构, 漏洞审计, 特征检测, 自定义脚本