BelalIoT21/GlitchForge
GitHub: BelalIoT21/GlitchForge
GlitchForge 是一款 AI 增强型 Web 漏洞扫描与渗透测试工具,通过受控利用验证漏洞真伪,结合机器学习和可解释 AI 实现智能风险优先级排序,完全本地化运行且零成本。
Stars: 0 | Forks: 0
# GlitchForge - AI 增强型漏洞扫描器与渗透测试工具
[](https://www.python.org/)
[](https://flask.palletsprojects.com/)
[](https://reactjs.org/)
[]()
## 摘要
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, 密钥泄露防护, 本地安全工具, 机器学习安全, 概念验证, 渗透测试工具, 漏洞优先级排序, 漏洞验证, 白盒测试, 神经网络, 网络安全, 网络扫描, 自动化渗透测试, 蓝队分析, 误报消除, 逆向工具, 随机森林, 隐私保护