siddhanthh/Advanced-Web-Vulnerability-Scanner

GitHub: siddhanthh/Advanced-Web-Vulnerability-Scanner

基于 Python Flask 构建的被动式 Web 漏洞扫描器,通过启发式分析 HTTP 头、DOM 结构和认证模式帮助用户快速发现潜在安全配置问题。

Stars: 0 | Forks: 0

# 高级 Web 漏洞扫描器 ## 概述 这是一个使用 Python 和 Flask 构建的轻量级被动 Web 漏洞扫描器。它旨在演示核心的 Web 安全概念、启发式分析以及并发编程。该工具扫描目标 URL,识别潜在的配置不当或不安全模式,并在基于 Bootstrap 的整洁仪表板中展示结果。 该应用程序是完全自包含的,使用 SQLite 进行数据持久化,并专注于安全、非破坏性的检查,而不会发起主动攻击。 ## 功能特性 - **安全响应头分析**:识别缺失的必需 HTTP 响应头(例如,Content-Security-Policy, Strict-Transport-Security, X-Frame-Options)。 - **表单与输入检查**:解析 DOM 以检测潜在的不安全表单、隐藏字段和缺失的 CSRF token。 - **注入启发式检测**:根据命名约定(例如,`id`、`search`、`email`),标记通常作为注入点(SQLi/XSS)的输入字段和 URL 参数。 - **弱身份验证检测**:检测通过 HTTP 传输的密码字段、不安全的表单 action 以及弱 autocomplete 配置。 - **内部链接爬取**:对同域链接执行深度受限的广度优先搜索,以并发扫描多个页面(默认限制:20 页)。 - **可选的 Nmap 与 Selenium 支持**:如果缺少外部工具,程序会优雅降级;但如果可用,则会利用它们进行更深度的侦察和动态 JS 渲染。 - **暗黑模式 UI**:响应式、分类清晰的仪表板,用于查看扫描历史和详细的漏洞报告。 ## 技术栈 - **后端**:Python 3.10+, Flask - **数据库**:SQLite3 - **抓取与解析**:`requests`, `BeautifulSoup4` - **动态分析**:`selenium` - **并发**:`concurrent.futures` - **前端**:HTML5, Jinja2, Bootstrap 5, CSS3 ## 工作原理 当用户提交 URL 时,应用程序使用 `requests` 库获取目标页面,并使用 `BeautifulSoup4` 解析 HTML 树。独立的扫描模块(响应头检查、表单检测、身份验证流程)被映射到 `ThreadPoolExecutor` 并发运行,以最大程度地减少网络 I/O 瓶颈。 如果启用了爬取功能,扫描器会查找所有同源的 `` 链接并将它们添加到队列中,在达到定义的 `max_pages` 限制之前对其进行访问。来自所有页面的结果将被聚合、去重并存储在本地 SQLite 数据库中。 ## 架构 该项目遵循模块化、受 MVC 启发的模式: * **`app.py`**:Flask 控制器,负责处理路由、表单提交和模板渲染。 * **`scanner.py`**:核心逻辑引擎,包含启发式规则和 `ThreadPoolExecutor` 实现。 * **`database.py`**:SQLite 查询的包装器,负责管理数据库初始化以及扫描和发现的 CRUD 操作。 ## 文件夹结构 ``` advanced-web-vulnerability-scanner/ │ ├── app.py # Flask entry point and HTTP routes ├── scanner.py # Multithreaded scanning logic and heuristics ├── database.py # SQLite schema and DB interactions ├── requirements.txt # Python dependencies ├── README.md # Project documentation ├── .gitignore # Git ignore rules ├── templates/ # Jinja2 HTML templates │ ├── base.html # Base layout wrapper │ ├── index.html # Dashboard & New Scan page │ ├── report.html # Scan results view │ └── history.html # Previous scans table └── static/ # Static assets └── style.css # Custom dark theme styling ``` ## 安装说明 ### 前置条件 - Python 3.10 或更高版本 - (可选)添加到系统 PATH 中的 [Nmap](https://nmap.org/download.html) - (可选)Google Chrome(Selenium 会自动管理驱动程序) ### Windows 设置 1. 克隆仓库并进入目录: git clone cd advanced-web-vulnerability-scanner 2. 创建虚拟环境并安装依赖: python -m venv venv .\venv\Scripts\python.exe -m pip install -r requirements.txt ## 运行方法 1. 启动 Flask 开发服务器: .\venv\Scripts\python.exe app.py 2. 打开 Web 浏览器并导航至 `http://127.0.0.1:5000`。 3. 输入目标 URL(例如,`https://example.com`),配置爬取限制,选择任意可选工具,然后点击 **Start Scan**。 ## 截图 ### 主仪表板 ![主页面](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/b8c6d20601232143.png) ### 扫描报告 ![报告页面](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/f5d383bfdc232149.png) ### 历史记录视图 ![历史记录页面](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/5be71154c7232155.png) ### Nmap 结果 ![Nmap 输出](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/46b507d590232201.png) ## 数据库架构 SQLite 数据库(`scanner.db`)在首次运行时会自动初始化。它由三个表组成: 1. **`scans`**:存储扫描实例的元数据(URL、时间戳、性能指标、严重性统计、已爬取页面数)。 2. **`findings`**:存储检测到的单个漏洞,通过 `scan_id` 关联到具体的扫描。 3. **`ports`**:存储来自 Nmap 子进程的原始字符串输出,通过 `scan_id` 关联。 ## Nmap 集成 该应用程序包含一个可选功能,可以使用 Python 的 `subprocess` 模块运行快速端口扫描(`nmap -F `)。这提供了基本的网络侦察。其实现是防御性的;如果在系统 PATH(或默认的 Windows 安装目录)中未找到 `nmap` 可执行文件,应用程序会捕获 `FileNotFoundError` 并跳过扫描,而不会导致 Web 服务器崩溃。 ## Selenium 集成 现代单页应用(SPA)通过 JavaScript 动态渲染表单和内容。考虑到这一点,扫描器提供了可选的 Selenium 集成。它会启动一个无头 Chrome 实例以完全渲染 DOM,然后再使用 BeautifulSoup 进行解析。得益于 `selenium >= 4.6`,驱动程序二进制文件由 Selenium Manager 自动管理。 ## 多线程 由于网络请求是严重的 I/O 密集型操作,对多个页面执行线性检查将极其缓慢。`scanner.py` 模块利用 Python 的 `concurrent.futures.ThreadPoolExecutor` 并发执行启发式检查函数。这极大地减少了扫描的总耗时,特别是在增加爬虫限制的情况下。 ## 局限性 - **仅限被动检查**:该扫描器完全依赖于被动启发式方法(例如,分析 DOM 结构和 HTTP 响应头)。它不会发送恶意 payload(如 SQL 注入字符串)来验证可利用性。 - **误报**:由于扫描器根据模式(例如名为 `id` 的输入)标记潜在问题,因此它可能会产生需要手动验证的误报。 - **浅层爬取**:内部爬虫仅解析标准的 `` 标签的 `href` 属性,不会执行 JavaScript 来发现复杂的路由链接。 ## 未来改进 - 实现导出选项,以 PDF 或 CSV 格式下载报告。 - 增加更深入的特定 CMS 指纹识别(例如,WordPress 插件检测)。 - 实现主动测试模块(带有用户同意标志)以验证基本的 XSS payload。 ## 法律免责声明 **本工具严格仅用于授权的安全测试。** 您只能使用本软件扫描您拥有或获得明确、书面授权进行测试的网络、系统或 Web 应用程序。未经授权扫描或攻击第三方系统是违法行为。本项目的作者不承担任何责任,也不对因使用本程序造成的任何误用或损害负责。
标签:BeautifulSoup, BeEF, Bootstrap, C++17, CSRF, CTI, Flask, HTTP头分析, Python, Selenium, Snort++, SQLite, Web安全, Windows内核, XSS检测, 反取证, 安全基线检查, 安全教育, 安全评估, 实时处理, 密码管理, 无后门, 爬虫, 白帽子, 网络安全, 蓝队分析, 被动扫描, 逆向工具, 隐私保护