manuiitj/Token-Aware-Mini-SQLi-Scanner

GitHub: manuiitj/Token-Aware-Mini-SQLi-Scanner

一个基于 Python 和 Flask 的 AI 辅助 SQL 注入扫描器,通过 token 感知的表单提交和 payload 智能排名来自动化检测 Web 应用中的 SQL 注入漏洞。

Stars: 1 | Forks: 0

# TokenAwareSQLiScanner 一个基于 Python 和 Flask 构建的具备 token 感知能力、AI 辅助的 SQL 注入 (SQLi) 扫描器。它会抓取 Web 表单,智能地对 SQL payload 进行排名和注入,分析服务器响应以寻找漏洞特征,并通过带有 AI 生成的安全性结论的简洁 Web 仪表板呈现结果。 ## 功能 - **Token 感知表单提交** — 在每次注入尝试前自动刷新 CSRF token 和隐藏字段 - **AI Payload 排名** — 在测试前对 payload 进行评分和优先级排序 (OR、UNION、基于引号等) - **SQL 错误检测** — 检查响应中是否包含已知的数据库错误签名 (MySQL、PostgreSQL、SQLite、Oracle、MSSQL、ODBC) - **基于时间的检测** — 将慢于 5 秒的响应标记为潜在的盲注/基于时间的 SQLi 特征 - **风险评分系统** — 计算数字风险评分 (0–100) 并将其映射为 HIGH / MEDIUM / LOW 级别 - **AI 安全分析** — 利用真实的扫描数据,为每次扫描生成动态的、人类可读的结论 - **Web 仪表板** — 基于 Flask 的 UI,用于运行扫描、查看历史记录、筛选报告并下载 JSON 结果 - **报告存储** — 将每次扫描以带编号的 JSON 文件形式保存在 `reports/` 文件夹中 - **多重扫描支持** — 具备 AI 排名和报告保存功能的 CLI 扫描器 - **XSS 安全仪表板** — 对所有面向用户的输出进行转义,以防止在 UI 中出现反射型 XSS ## 项目结构 ``` Token-Aware-Mini-SQLi-Scanner/ │ ├── app.py # Flask web dashboard (main entry point) ├── requirements.txt # Python dependencies ├── pyproject.toml # Project metadata and pytest config │ ├── sqli_scanner/ # Core scanner package │ ├── __init__.py │ ├── crawler.py # Finds and parses HTML forms │ ├── scanner.py # Submits forms with payloads (token-aware) │ ├── detector.py # Detects SQL errors and computes risk scores │ ├── timing_detector.py # Flags abnormally slow responses │ ├── token_extractor.py # Extracts hidden/CSRF token values │ ├── ai_engine.py # Ranks payloads; generates AI verdict │ ├── payloads.py # Loads payloads from payloads.json │ ├── payloads.json # SQL injection payload list │ ├── report.py # Saves scan results as JSON files │ └── web_scanner.py # Scan orchestrator │ ├── scripts/ # Command-line entry points │ ├── mini_scan.py # Lightweight CLI (no AI, no report saving) │ ├── multi_scan.py # Full CLI with AI ranking and reports │ └── live_token_test.py # Live token extraction test │ ├── lab/ │ └── server.py # Local vulnerable test server (port 5001) │ ├── tests/ # Automated tests │ ├── fixtures/ # Sample HTML for unit tests │ ├── test_ai.py │ ├── test_detector.py │ └── test_token.py │ └── reports/ # Auto-generated scan JSON files └── scan_1.json, scan_2.json ... ``` ## 工作原理 ``` User enters URL │ ▼ crawler.py → Finds all
tags on the page │ ▼ token_extractor.py → Extracts fresh CSRF / hidden token values │ ▼ ai_engine.py → Ranks payloads by SQLi relevance score │ ▼ scanner.py → Submits each payload into every form field │ ▼ detector.py → Checks response for SQL errors + slow timing timing_detector.py │ ▼ ai_engine.py → Generates human-readable AI verdict │ ▼ report.py → Saves result to reports/scan_N.json │ ▼ app.py → Displays result on the web dashboard ``` ## 安装 **环境要求:** Python 3.8+ ``` # 1. 克隆或解压项目 cd Token-Aware-Mini-SQLi-Scanner # 2. 创建并激活虚拟环境 python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # macOS / Linux # 3. 安装依赖项 pip install -r requirements.txt ``` ## 用法 ### Web 仪表板 ``` python app.py ``` 在浏览器中打开 `http://127.0.0.1:5000` 在仪表板中你可以: - 输入 URL 并开始扫描 - 查看带有 AI 安全分析的最新扫描结果 - 按 URL 或风险级别 (HIGH / MEDIUM / LOW) 筛选扫描历史记录 - 以 JSON 格式下载最新报告 - 点击任意报告文件以查看其完整详细信息 ### 练习实验环境(本地测试) ``` python lab/server.py ``` 打开 `http://127.0.0.1:5001` 并使用主扫描器扫描这些页面。 ### CLI — 快速扫描(无 AI,无报告) ``` python scripts/mini_scan.py ``` ### CLI — 包含 AI 和报告保存的完整扫描 ``` python scripts/multi_scan.py ``` ### 运行测试 ``` pytest ``` ## 风险评分 | 分数范围 | 风险等级 | 含义 | |---|---|---| | 70 – 100 | HIGH | 在响应中检测到 SQL 错误 | | 30 – 69 | MEDIUM | 响应时间可疑(可能存在盲注 SQLi) | | 0 – 29 | LOW | 未发现相关特征 | ## AI 安全分析 — 输出示例 ``` The scanner found 5 form(s) and tested 20 payload(s). Payload ' OR 1=1 -- generated a suspicious response. Risk Score reached 35, indicating a potentially exploitable SQL Injection weakness. Immediate manual testing is strongly recommended. ``` ## Payload 示例 (`sqli_scanner/payloads.json`) ``` [ "'", "\"", "' OR '1'='1", "\" OR \"1\"=\"1", "admin", "test" ] ``` 你可以直接在 `sqli_scanner/payloads.json` 中添加更多 payload。它们会在每次扫描前自动进行排名。 ## 报告格式 (`reports/scan_N.json`) ``` { "url": "http://example.com/login", "scan_time": "2026-06-12 19:29:00.123456", "ai_enabled": true, "forms_found": 2, "payloads_tested": 12, "best_payload": "' OR '1'='1", "risk_score": 70, "risk_level": "HIGH", "ai_summary": "[HIGH] Risk score 70. Most effective payload: ' OR '1'='1. A likely SQL Injection weakness was found. Manual verification is strongly advised." } ``` ## 安全提示 ## 技术栈 | 层级 | 技术 | |---|---| | Backend | Python 3, Flask | | HTML 解析 | BeautifulSoup4 | | HTTP Requests | Requests | | 输出转义 | MarkupSafe | | 数据存储 | JSON 文件 | | Frontend | 原生 HTML + CSS (由 Flask 提供服务) | ## 作者 **Manu** — TokenAwareSQLiScanner 作为学习 Web 应用安全概念的项目而构建。
标签:CISA项目, DOE合作, Flask, Python, SQL注入扫描, Web安全, 人工智能辅助, 字符串匹配, 无后门, 蓝队分析, 逆向工具