AbdelrahmanGaafar-02/vulnerability-sql-scanner-project

GitHub: AbdelrahmanGaafar-02/vulnerability-sql-scanner-project

该项目利用大语言模型对 Web 应用进行动态 SQL 注入检测,通过上下文推理识别传统规则型扫描器难以发现的隐藏漏洞,并配套完整的数据集与评估测试套件。

Stars: 0 | Forks: 0

# 驱动 AI 的 SQL 注入扫描器:项目概述 本文档详细说明了基于 AI 的动态 SQL 注入扫描器项目的核心架构、方法论和目标。 ### 1. 本项目的目标是什么? 本项目的主要目标是构建一个**智能、实时的动态 Web 漏洞扫描器**,专门用于检测 SQL 注入。 传统的安全扫描器(如 SQLMap)正在逐渐被淘汰,因为它们依赖于僵硬的、硬编码的规则(例如在页面中搜索确切的短语 *"MySQL syntax error"*)。现代的 Web 应用防火墙 (WAF) 可以轻松拦截这些可预测的攻击,或隐藏掉错误信息。本项目的目标是创建一个“智能”扫描器,能够动态测试网站,并利用人工智能像人类网络安全专家一样进行推理,从而检测出传统扫描器遗漏的隐藏漏洞。 ### 2. 使用了什么 AI 模型以及为什么? 该项目目前使用 **`gemma3:27b`**(此前曾测试过 `llama3.1:8b` 和 `llama3.2:3b`),完全通过 Ollama 框架在本地运行。 **为什么要使用 LLM(大语言模型)而不是传统代码?** 与使用 Regex 或硬编码规则不同,LLM 提供了**上下文启发式推断 (Contextual Heuristic Inference)**。当 payload 被发送到网站时,网站可能不会抛出明显的错误。相反,页面加载可能会多花 5 秒钟,或者登录页面可能会悄悄重定向到管理后台。 我们使用像 `gemma3:27b` 这样的模型,因为它们具备深度推理能力。该模型可以查看网站的响应,理解发生事件的上下文,并在逻辑上推断出数据库逻辑是否被成功绕过——即使没有抛出任何显式错误。我们在本地运行该模型,以确保目标数据的绝对隐私。 ### 3. 为什么要在项目中使用 Dataset? 虽然 AI 模型充当评估损害的“大脑”,但 dataset (`sqli_dataset.csv`) 则充当了**“弹药”**。 为了测试网站是否存在 SQL 注入漏洞,扫描器必须向网站的输入字段实际发送恶意的 SQL 查询 (payload)。该 dataset 是经过验证的真实恶意 payload 的庞大集合(例如,`' OR 1=1 --`、`" UNION SELECT username, password FROM users"`)。扫描器的 payload 管理器会从 CSV 中提取这些字符串,并将它们作为实际武器来攻击目标 URL。 ### 4. 项目是如何检测漏洞的? 检测过程遵循严格的 4 步 pipeline: 1. **注入:** 扫描器从 dataset 中提取 payload,对其进行 URL 编码,并将其注入到目标网站的 URL 参数中(例如 `?id=`)。 2. **执行与规范化:** 它向目标服务器发送 HTTP GET 请求。当服务器回复 HTML 页面时,扫描器使用 `BeautifulSoup` 剥离所有嘈杂的 HTML 标签,仅保留原始的可见文本。 3. **Prompt 构建:** 扫描器将原始 payload、HTTP 状态码以及清理后的响应文本打包到一个高度特定的 Prompt 模板中。 4. **LLM 推断:** 该 Prompt 被发送给 AI 模型。AI 充当分析师,读取响应以查看数据库是否泄露了信息或表现异常。它会严格输出 `VULNERABLE` 或 `SAFE` 的分类,并附带简短的、人类可读的解释,说明它*为什么*做出该决定。 ### 5. 如何衡量 AI 模型的准确率? 由于扫描器测试的是在线网站,因此您不能仅通过查看 CSV dataset 来衡量其准确率。您必须根据已知的“Ground Truth(真值)”对其进行衡量。 为此,该项目包含了一个受控的测试套件(`evaluate.py` 和 `dummy_target.py`): 1. **Dummy Target:** 启动一个包含两个特定页面的本地 Web 服务器。其中一个页面 (`/vulnerable`) 的代码故意编写得非常糟糕,因此它总是会在遇到 SQL payload 时崩溃。另一个页面 (`/safe`) 则高度安全,并且始终会安全地拦截 payload。 2. **实验:** `evaluate.py` 脚本从您的 dataset 中提取 payload,并向*这两个*页面发送攻击。由于我们已经知道了正确答案(易受攻击的页面*应该*被标记,安全的页面*不应该*被标记),因此我们可以严格地对 AI 的答案进行评分。 3. **指标:** 该脚本通过 `scikit-learn` 使用专业的机器学习数学公式进行计算: * **True Positives (真阳性):** 成功捕获了多少次真实攻击。 * **False Positives (假阳性,幻觉):** 有多少个安全页面让它产生了疑心并被错误标记。 * **Accuracy、Precision、Recall 和 F1-Score:** 证明 AI 在做出正确检测方面究竟有多可靠的最终数学百分比。
标签:AI安全, AI风险缓解, Apex, Chat Copilot, CISA项目, DOE合作, Splunk, SQL注入检测, 加密, 机器学习, 漏洞扫描器, 逆向工具