SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI

GitHub: SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI

一款面向安全学习者的礼貌型 Web 漏洞扫描器,结合 AI 辅助报告功能,用于非破坏性地检测并报告常见的 Web 安全配置问题。

Stars: 27 | Forks: 0

# 学习级别的 AI Web 漏洞扫描器
[![CI](https://img.shields.io/github/actions/workflow/status/SagarBiswas-MultiHAT/AI_Web_Vulnerability_Scanner/get-started-actions.yml?branch=main)](https://github.com/SagarBiswas-MultiHAT/AI_Web_Vulnerability_Scanner/actions)   [![Python](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/)   [![Tests](https://img.shields.io/badge/tests-pytest-orange)](https://github.com/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI)   [![License](https://img.shields.io/github/license/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI)](https://github.com/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI/blob/main/LICENSE)   [![Last commit](https://img.shields.io/github/last-commit/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI)](https://github.com/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI/commits)   [![Issues](https://img.shields.io/github/issues/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI)](https://github.com/SagarBiswas-MultiHAT/Web_Vulnerability_Scanner-AI/issues)
一个适合放入作品集的、**学习级别**的 Web 漏洞扫描器,以及轻量级的 **AI 辅助报告查看器**。本项目展示了一种礼貌、非破坏性的方法,用于爬取和发现常见的 Web 安全问题(安全标头、不安全的 cookie 标志、反射型 XSS 启发式检测以及基础的基于错误的 SQL 注入指示器)。它内置了一个基于 Flask 的小型 AI 代理,旨在为报告内的 AI 辅助功能提供支持(可选)。
图片
**运行 python app.py 之后**
![python app.py](https://imgur.com/Gy4JZKZ.png)
**运行 mainScaner.py 之后**
![python mainScaner.py httpssagarbiswas-multihat.github.io --confirm --ai-enabled --ai-server http127.0.0.15000apiai-chat](https://imgur.com/zg26tAn.png)
**运行 cd Reports, python -m http.server 8080 之后**
![python -m http.server 8080](https://imgur.com/HZH6JZK.png)
**JSON 报告示例**
![JSON 报告示例](https://imgur.com/smYnJiW.png)
**HTML 报告示例**
![HTML 报告示例](https://imgur.com/gqfVDXM.png)
**AI 帮助中心** **1).** ![AI Help Center](https://imgur.com/0Ne17Fz.png) **2).** ![AI Help Center](https://imgur.com/YAsnDvb.png)
**发送前未进行匿名化处理**
![发送前未进行匿名化处理](https://imgur.com/Tf39Scd.png)
**发送前已进行匿名化处理**
![发送前已进行匿名化处理](https://imgur.com/CcSuAUs.png)
# 目录 - [核心功能](#key-features) - [扫描器的功能与限制](#what-this-scanner-does-and-doesnt) - [环境要求](#requirements) - [文件结构](#files) - [安装说明](#installation) - [用法与命令行参数](#usage--command-line-arguments) - [示例](#examples) - [输出文件与报告格式](#output-files--report-format) - [内部机制与设计决策](#internals--design-decisions) - [扩展扫描器](#extending-the-scanner) - [安全与法律声明](#safety--legal-notes) - [贡献指南](#contributing) - [联系/致谢](#contact--acknowledgements) # 核心功能 - 基于队列的礼貌爬虫(无递归线程生成)。
快速解释 — 基于队列的爬虫、礼貌爬虫与无递归线程生成(适合初学者) #### **1.** 基于队列的爬虫 **基于队列的爬虫**使用**单一共享工作队列**来管理所有需要访问的 URL。 **工作原理(概念上):** 1. 从基础 URL 开始 → 将其放入队列 2. 工作线程重复执行: - 从队列中取出**一个 URL** - 获取页面 - 提取链接 - 将**新的、允许的 URL** 添加回同一队列 3. 重复此过程,直到队列为空或达到深度限制 **这意味着:** - 每个工作线程一次处理**一个 URL** - 对扫描内容有**集中控制** - 爬取顺序、深度和限制保持可预测 #### **2.** 礼貌爬虫 **礼貌爬虫**的设计初衷是**不给服务器带来压力或造成损害**。 在此扫描器中,礼貌性包括: - ⏱ 针对主机的速率限制 (`--delay`) - 🤖 遵守 `robots.txt` - 🌱 仅限 GET 请求(非破坏性) - 🚫 无暴力破解或 payload 泛洪 - 🧵 受控的线程数量 扫描器不会猛烈请求网站,而是表现得像一个**谨慎的人类在使用浏览器**。 #### **3.** 无递归线程生成(关键设计选择) 这解释了爬虫**刻意不做**的事情。 **✘ 糟糕的设计(递归生成线程):**
| | | ------------------------------ | | 线程 A 访问 URL A | | └── 生成线程 B 用于链接 B | | └── 生成线程 C 用于链接 C | | └── 生成线程 D 用于链接 D |
**线程**是一个轻量级的执行单元,允许程序**并行工作(并行意味着多个任务同时执行,而不是一个接一个地执行。)**。 **这种方法的问题:** - 无限制的线程增长 - 失去对并发的控制 - 服务器不堪重负 - 扫描器耗尽内存或 socket - 难以执行延迟和爬取深度 这种模式被称为**递归线程生成** —— 每一个发现的链接都会创建新线程。 ### ✓ 本扫描器的替代方案是什么? [ 队列 ] ↓ 工作线程池(固定大小) ↓ 获取 → 提取 → 入队(回到队列) 一个等同于 `--threads` 设置(默认:10)的固定线程池。线程在启动时创建一次并被重复使用 —— 不会为每个发现的链接创建新线程。 - 线程只创建**一次** - 线程数量是**固定的**(`--threads`) - **没有任何线程会创建另一个线程** - 发现的链接被视为**数据**,而不是新的执行上下文 #### 为什么这种设计被认为是最佳实践?
| 方面 | 基于队列的爬虫 | 递归生成 | | ---------------------- | ---------------------- | ------------------ | | 线程控制 | ✅ 固定且可预测 | ❌ 无限制 | | 速率限制 | ✅ 可强制执行 | ❌ 困难 | | 服务器安全 | ✅ 礼貌 | ❌ 激进 | | 内存安全 | ✅ 稳定 | ❌ 有风险 | | 调试 | ✅ 更简单 | ❌ 混乱 | | 法律/伦理安全 | ✅ 安全得多 | ❌ 有风险 |
这就是为什么**专业工具和搜索引擎爬虫**使用基于队列的设计。 **结果:** 更安全的扫描、可预测的行为、符合伦理的爬取以及更容易的扩展性。
- 针对主机的速率限制(可通过 `--delay` 配置),避免猛烈请求服务器 - `robots.txt` 感知(扫描器会检查并尽可能遵守规则)。
robots.txt ### robots.txt **robots.txt:** 一个网站规则文件,告诉扫描器应避免访问哪些 URL。