BelalIoT21/GlitchForge

GitHub: BelalIoT21/GlitchForge

GlitchForge 是一款 AI 增强型 Web 漏洞扫描与渗透测试工具,通过受控利用验证漏洞真伪,结合机器学习和可解释 AI 实现智能风险优先级排序,完全本地化运行且零成本。

Stars: 0 | Forks: 0

# GlitchForge - AI 增强型漏洞扫描器与渗透测试工具 [![Python](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://www.python.org/) [![Flask](https://img.shields.io/badge/Flask-3.0+-green.svg)](https://flask.palletsprojects.com/) [![React](https://img.shields.io/badge/React-18+-61DAFB.svg)](https://reactjs.org/) [![License](https://img.shields.io/badge/License-Academic-red.svg)]() ## 摘要 GlitchForge 是一款 AI 增强型漏洞扫描器和渗透测试工具,它不仅限于检测,还通过受控利用来**证明漏洞的真实性**。受 Shannon 的“无利用,不报告”理念启发,GlitchForge 在报告每个发现之前都会进行验证,从而消除误报。 该系统结合了五个管道阶段:漏洞扫描、**渗透测试验证**、基于 ML 的风险预测(Random Forest + Neural Network,准确率 >90%)、可解释 AI(SHAP/LIME)以及智能优先级排序。只有确认或可能被利用的漏洞才会进入最终报告,并包含完整的利用证据,包括可复现的概念验证命令、HTTP 请求/响应捕获以及提取的数据。 ### GlitchForge 与 Shannon 对比 | | Shannon | GlitchForge | |---|---|---| | **成本** | ~$50/次扫描 (Claude API 额度) | **100% 免费** - 完全在本地运行 | | **依赖** | 需要 Anthropic API 密钥 | 无需 API 密钥、无需云服务、无需额度 | | **渗透引擎** | LLM 驱动 (AI 生成 exploit) | **确定性基于规则** (Python 利用技术) | | **速度** | ~1-1.5 小时/次扫描 | **秒级到分钟级** (范围聚焦,无 LLM 延迟) | | **范围** | 15+ 种漏洞类型 | 3 种 (SQLi, XSS, CSRF) - 聚焦且快速 | | **目标用户** | 企业团队 | **学生、研究人员、个人** - 零成本门槛 | ## 工作原理 GlitchForge 使用 5 阶段管道。每个漏洞在到达仪表板之前必须通过渗透测试验证。 ``` Stage 1: Scan Detect potential vulnerabilities (SQLi, XSS, CSRF) | Stage 1.5: Pentest Attempt controlled exploitation to prove each finding | Filter out false positives and unverified findings | Stage 2: ML Predict Random Forest + Neural Network risk prediction | Stage 3: XAI Explain SHAP + LIME feature contribution analysis | Stage 4: Prioritize Weighted risk scoring and remediation ordering ``` **阶段 1 - 漏洞扫描:** 基于错误的 SQL 注入检测(4 个 payload),反射型 XSS 检测(4 个 payload),CSRF token 验证,智能参数过滤(自动跳过跟踪参数),以及用于全站扫描的 URL 爬取。 **阶段 1.5 - 渗透测试验证 (新增):** 对于每个扫描器发现,尝试进行受控利用以确认漏洞是真实的: - **SQL 注入:** 基于 UNION 的数据提取、布尔盲注、时间盲注 - **XSS:** Canary 反射验证、上下文感知转义 payload、CSP 分析 - **CSRF:** 无 Origin/Referer 的跨域表单提交、CSRF token 缺失测试 收集结构化证据:HTTP 请求/响应对、可复现的 cURL 命令、提取的数据(例如数据库版本)、影响描述以及编号的复现步骤。 只有 `confirmed`(已确认)和 `likely`(可能)的漏洞会通过。误报和未经验证的发现在 ML 分析之前会被过滤掉。 **阶段 2 - 机器学习:** 双模型方法(Random Forest + Neural Network),基于 NIST NVD 的 15,000 条 CVE 记录训练。从 CVSS 指标中提取的 29 个工程特征。RF 准确率 93%,NN 准确率 91%。 **阶段 3 - 可解释 AI:** SHAP(全局特征重要性)和 LIME(实例级解释)准确显示哪些因素推高或拉低了每个风险评分,并附带人类可读的标签。 **阶段 4 - 风险优先级排序:** 加权评分:CVSS (40%) + ML 预测 (30%) + 可利用性 (20%) + 年龄 (10%)。优先级等级:Critical(严重)、High(高)、Medium(中)、Low(低)。可操作的修复建议。 ## 项目结构 ``` GlitchForge/ |-- backend/ # Python Backend (Flask + ML Pipeline) | |-- main.py # Production server (Waitress WSGI) | | | |-- app/ | | |-- __init__.py # Flask app factory | | |-- config.py # Centralized configuration | | | | | |-- core/ | | | |-- scanner/ # Stage 1: Vulnerability Detection | | | | |-- base_scanner.py # Abstract base scanner | | | | |-- sql_scanner.py # SQL Injection (error-based, 4 payloads) | | | | |-- xss_scanner.py # XSS (reflected, 4 payloads) | | | | |-- csrf_scanner.py # CSRF (token + GET form detection) | | | | |-- crawler.py # URL crawler for site-wide scanning | | | | +-- stage1_scanner.py # Scanner orchestrator | | | | | | | |-- pentester/ # Stage 1.5: Pentest Validation (NEW) | | | | |-- data_models.py # Evidence, result, and status dataclasses | | | | |-- base_validator.py # Abstract base validator (HTTP, cURL, safety) | | | | |-- sqli_validator.py # SQLi exploiter (UNION, blind, time-based) | | | | |-- xss_validator.py # XSS exploiter (canary, context, CSP) | | | | |-- csrf_validator.py # CSRF exploiter (no-origin, token omission) | | | | +-- pentest_orchestrator.py # Orchestrates all validators | | | | | | | |-- ml/ # Stage 2: Machine Learning | | | | |-- nvd_collector.py # CVE data collection from NIST NVD | | | | |-- feature_engineering.py # 29 engineered features | | | | |-- model_trainer.py # RF + NN training pipeline | | | | +-- stage2_train.py # Training entry point | | | | | | | |-- xai/ # Stage 3: Explainable AI | | | | |-- shap_explainer.py # SHAP feature importance | | | | |-- lime_explainer.py # LIME local explanations | | | | |-- visualization.py # Plot generation | | | | +-- quality_metrics.py # XAI quality evaluation | | | | | | | +-- prioritization/ # Stage 4: Risk Prioritization | | | |-- engine.py # Risk scoring algorithm | | | |-- manager.py # Priority queue management | | | +-- data_models.py # Risk score data classes | | | | | |-- routes/ | | | |-- health.py # GET /health, GET /api/status | | | +-- scan.py # POST /api/scan, POST /api/scan-stream (SSE) | | | | | |-- services/ | | | |-- engine.py # GlitchForgeEngine (orchestrates all stages) | | | +-- progress.py # Real-time scan progress tracking (SSE) | | | | | |-- security/ | | | |-- rate_limiter.py # IP-based rate limiting | | | |-- validation.py # Input validation and sanitization | | | |-- auth.py # JWT authentication | | | |-- rbac.py # Role-based access control | | | +-- headers.py # Security headers middleware | | | | | +-- utils/ | | |-- logger.py # Centralized logging | | |-- metrics.py # Performance metrics | | +-- helpers.py # Helper functions | | | |-- data/ # Training data (raw + processed) | |-- models/ # Trained ML models (.pkl, .h5) | +-- requirements.txt | +-- frontend/ # React Dashboard (TypeScript + Vite) |-- src/ | |-- App.tsx # Root component | |-- main.tsx # Entry point | | | |-- api/ | | |-- client.ts # API client with SSE streaming | | +-- types.ts # TypeScript interfaces | | | |-- components/ | | |-- layout/ | | | |-- TopBar.tsx # Logo, tagline, Export PDF | | | +-- Footer.tsx | | | | | |-- scan/ | | | |-- ScanInput.tsx # URL input, scan type chips, crawl toggle | | | +-- ScanProgress.tsx # Real-time progress with pentest phase | | | | | |-- dashboard/ | | | |-- DashboardOverview.tsx # Summary stat cards | | | +-- SeverityBreakdown.tsx # Severity distribution bar | | | | | |-- vulnerability/ | | | |-- VulnList.tsx # Sortable vulnerability list | | | |-- VulnCard.tsx # 5-tab card with verification badge | | | |-- VulnOverview.tsx # Tab: location + classification + metrics | | | |-- PentestEvidence.tsx # Tab: exploitation proof (NEW) | | | |-- RiskAnalysis.tsx # Tab: SVG gauge, CVSS bars, factors | | | |-- XAIInsights.tsx # Tab: SHAP/LIME visualizations | | | +-- Remediation.tsx # Tab: numbered steps, CWE refs | | | | | |-- report/ | | | +-- ReportGenerator.tsx # Professional PDF generation | | | | | |-- info/ | | | |-- Hero.tsx # Landing hero section | | | |-- HowItWorks.tsx # Pipeline explainer | | | +-- Capabilities.tsx # Feature showcase | | | | | +-- ui/ | | |-- Badge.tsx # Severity badge | | |-- ProgressBar.tsx # Score/progress bar | | |-- Tabs.tsx # Reusable tabs | | +-- Skeleton.tsx # Loading skeleton | | | +-- styles/ # Modular CSS (8 files) | |-- globals.css # Variables, reset, typography | |-- layout.css, scan.css, dashboard.css | |-- vulnerability.css # Cards, tabs, evidence styles | |-- xai.css, report.css, info.css | +-- vite.config.ts, package.json, tsconfig.json ``` ## 安装与设置 ### 前置条件 - Python 3.12+ - Node.js 16+ - NVD API Key: https://nvd.nist.gov/developers/request-an-api-key ### 后端 ``` cd backend pip install -r requirements.txt # 配置环境 cp .env.example .env # 添加: NVD_API_KEY=your_key_here # 训练 ML models (首次需要, ~5-10 分钟) py -m app.core.ml.stage2_train # 启动 server (选择其一) npm start # recommended py main.py # alternative ``` 服务器运行在 `http://localhost:5000` (Waitress WSGI, 8 线程, 5 分钟超时)。 ### 前端 ``` cd frontend npm install npm run dev ``` 仪表板运行在 `http://localhost:3000`。 ## API 参考 ### 完整扫描 (带渗透测试验证) ``` POST /api/scan Content-Type: application/json { "url": "http://example.com", "scan_types": ["sql", "xss", "csrf"], "crawl": false, "max_urls": 20, "cookies": { "PHPSESSID": "optional-session-id", "security": "low" } } ``` **响应包含渗透测试证据:** ``` { "success": true, "vulnerabilities_found": 2, "scan_time": 7.4, "pentest_time": 12.3, "scanned_count": 5, "filtered_count": 3, "risk_scores": [ { "risk_score": 87.9, "risk_level": "Critical", "verified": "confirmed", "where": { "url": "...", "parameter": "id" }, "what": { "vulnerability_type": "SQL Injection", "cwe_id": "CWE-89" }, "pentest": { "verification_status": "confirmed", "confidence": 0.99, "evidence": { "technique": "union_based_extraction", "extracted_data": ["Database version: 5.7.33-MariaDB"], "poc_command": "curl '...' --insecure", "reproduction_steps": ["Navigate to...", "Inject payload...", "Observe..."], "http_exchanges": [{ "method": "GET", "status_code": 200, "..." : "..." }] }, "attempts": 1, "duration_seconds": 3.2 }, "how_to_fix": { "remediation": "Use parameterized queries..." } } ] } ``` | 参数 | 类型 | 默认值 | 描述 | |-----------|------|---------|-------------| | `url` | string | required | 要扫描的目标 URL | | `scan_types` | array | `["sql", "xss", "csrf"]` | 要扫描的漏洞类型 | | `cookies` | object | `null` | 用于认证扫描的会话 cookies | | `crawl` | boolean | `false` | 启用站点爬取 | | `max_urls` | integer | `20` | 爬取时扫描的最大 URL 数 | ### 实时流 (SSE) ``` POST /api/scan-stream ``` 返回 Server-Sent Events,提供所有阶段的进度更新: ``` initializing -> crawling -> scanning -> pentesting -> analyzing -> complete ``` 渗透测试阶段报告:当前/总验证器数量、确认数量以及活动技术。 ## 仪表板 React 前端提供了一个深色主题的专业仪表板。 ### 漏洞卡片标签页 每个漏洞卡片的头部显示一个**验证徽章** (VERIFIED / LIKELY),并有 5 个标签页: | 标签页 | 内容 | |-----|---------| | **Overview** | 位置 (URL, 参数, 方法), 分类 (类型, CWE, payload, 证据), 5 个快速指标包括 "Exploit Verified" | | **Evidence** | 渗透证明:状态横幅、提取的数据、带复制按钮的 cURL 概念验证、编号的复现步骤、可展开的 HTTP 请求/响应交换 | | **Risk Analysis** | SVG 仪表盘、CVSS 指标条、ML 风险因素、模型一致性 | | **XAI Insights** | SHAP 和 LIME 双向条形图显示特征贡献 | | **Remediation** | 特定上下文的编号修复步骤、CWE 参考 | ### 其他功能 - 带渗透测试阶段显示的实时 SSE 进度 - 用于自动全站扫描的爬取模式 - 可排序的漏洞列表(按风险评分或字母顺序) - 带严重程度细分的摘要仪表板 - PDF 报告生成,包含封面页、指标和每个漏洞的详细信息 - 管道解释器和功能展示 ## 渗透测试验证详情 ### 安全约束 所有利用行为都是受控且非破坏性的: - 阻止破坏性 SQL 关键字 (DROP, DELETE, TRUNCATE, ALTER, INSERT, UPDATE) - 仅执行只读验证操作 (SELECT version, payload 反射检测) - 每个漏洞验证超时 30 秒 - 每种漏洞类型最多 5 次验证 - 响应体在证据中截断至 2000 个字符 ### SQL 注入验证 | 技术 | 工作原理 | 产生的证据 | |-----------|-------------|-------------------| | **UNION extraction** | 通过 ORDER BY 确定列数,然后使用 UNION SELECT version() 提取数据库版本 | 数据库版本字符串, cURL 命令 | | **Boolean blind** | 发送 AND 1=1 与 AND 1=2,比较 2 轮响应大小的一致性 | True/false 响应大小, 一致性证明 | | **Time-based blind** | 发送 SLEEP(3) payload,测量响应延迟与基线的对比 | 基线 vs 注入计时, 延迟增量 | ### XSS 验证 | 技术 | 工作原理 | 产生的证据 | |-----------|-------------|-------------------| | **Canary reflection** | 注入唯一的随机标记标签,验证其未转义地出现在 HTML 中 | 反射上下文, cURL 命令 | | **Context escape** | 探测反射上下文 (属性, 脚本, 正文), 构造转义 payload | 上下文类型, 转义 payload, 反射证明 | | **CSP analysis** | 检查 Content-Security-Policy 中的 script-src 限制 | CSP header 详情, 缓解措施评估 | ### CSRF 验证 | 技术 | 工作原理 | 产生的证据 | |-----------|-------------|-------------------| | **No-origin submit** | 不带 Origin/Referer headers 提交表单 | 表单数据, 响应状态, HTML PoC 页面 | | **Token omission** | 移除 CSRF token 字段后提交表单 | 被省略的字段名, 接受证明 | ## 测试 ### 推荐测试目标 **仅扫描您拥有或具有明确测试权限的系统。** | 目标 | 模式 | 预期 | |--------|------|----------| | `http://testphp.vulnweb.com` | Crawl ON | 跨页面的多个已确认漏洞 | | DVWA (local VM) + cookies | Crawl ON | 带渗透证据的 SQL, XSS, CSRF 确认 | | 任何具有已知 SQLi 的 URL | Single URL | UNION 提取或盲注确认 | ### DVWA 设置 1. 在您的 DVWA 虚拟机上启动 Apache 和 MySQL 2. 登录 DVWA (`admin` / `password`),将安全级别设置为 `low` 3. 从浏览器 DevTools 复制 `PHPSESSID` 和 `security` cookies 4. 在 GlitchForge 中输入 DVWA 基础 URL 和 cookies,启用 Crawl 模式 ### ML 性能 | 模型 | 准确率 | 精确率 | 召回率 | F1-Score | |-------|----------|-----------|--------|----------| | Random Forest | 93% | 91% | 92% | 91.5% | | Neural Network | 91% | 89% | 90% | 89.5% | 数据集:来自 NIST NVD (2018-2024) 的 15,000 条 CVE 记录。29 个工程特征。5 折交叉验证。 ## 技术栈 | 类别 | 技术 | |----------|-------------| | **Backend** | Python 3.12, Flask 3.0, Waitress (WSGI) | | **ML/AI** | scikit-learn, TensorFlow/Keras | | **XAI** | SHAP, LIME | | **Pentesting** | Requests, BeautifulSoup4, 确定性利用技术 | | **Data** | pandas, numpy, NIST NVD API | | **Security** | Rate limiting, JWT auth, RBAC, CSP headers, 输入验证 | | **Frontend** | React 18, TypeScript, Vite, jsPDF, html2canvas | ## 道德考量 - **仅限授权测试** - 仅扫描您拥有或具有明确测试权限的系统 - **负责任的披露** - 对发现的漏洞遵循负责任的披露实践 - **法律合规** - 遵守《计算机滥用法 1990》及所有适用法律 - **教育目的** - 本工具专为教育和授权安全测试而设计 - **非破坏性** - 所有渗透测试 payload 均为只读;阻止破坏性操作 ## 学术背景 **模块:** CN6000 - Final Year Dissertation **学年:** 2025/26 **研究重点:** Machine Learning and Explainable AI in Cybersecurity **研究问题:** 1. ML 模型能否有效地从 CVSS 指标预测漏洞风险严重程度? 2. 可解释 AI 技术 (SHAP/LIME) 如何提高对基于 ML 的安全工具的信任? 3. 自动化渗透测试验证能否消除漏洞扫描中的误报? **主要发现:** - 双模型 ML 方法在风险预测中实现了 91-93% 的准确率 - SHAP/LIME 解释增加了用户信任和模型透明度 - 渗透测试验证通过“No Exploit, No Report”方法消除了误报 - 100% 本地执行使高级渗透测试以零成本变得触手可及 ## 联系方式 **Belal Almshmesh** - Student ID: U2687294 University of East London **项目导师:** Dr. Halima Kure ## 致谢 - **Dr. Halima Kure** - 项目监督与指导 - **University of East London** - 学术支持与资源 - **NIST National Vulnerability Database** - CVE 数据源 - **OWASP** - 安全测试方法与最佳实践 - **Shannon (KeygraphHQ)** - “No Exploit, No Report”理念的灵感来源
标签:AI漏洞扫描, CISA项目, CSRF检测, DOE合作, Flask, LIME, Maven, Python安全工具, React, SHAP, SQL注入检测, Syscalls, Web安全, XSS检测, 云存储安全, 代码生成, 可解释AI, 密钥泄露防护, 本地安全工具, 机器学习安全, 概念验证, 渗透测试工具, 漏洞优先级排序, 漏洞验证, 白盒测试, 神经网络, 网络安全, 网络扫描, 自动化渗透测试, 蓝队分析, 误报消除, 逆向工具, 随机森林, 隐私保护