urvesh-shekhawat/VulnEye
GitHub: urvesh-shekhawat/VulnEye
基于 Flask 构建的 serverless Web 漏洞扫描器,对公共域名进行非侵入式多维度安全评估并生成企业级 PDF 报告。
Stars: 0 | Forks: 0
# 🛡️ VulnEye — 企业级 Web 漏洞扫描器
[](https://vercel.com)
[](https://python.org)
[](https://flask.palletsprojects.com/)
[](https://console.cloud.google.com/)
VulnEye 是一款高级的现代 Web 漏洞扫描器,旨在对公共 Web 域名进行快速、非侵入性的安全评估。它完全针对 Vercel 上的 serverless 部署进行了优化,具有时尚的毛玻璃深色/浅色界面、Google OAuth 2.0 身份验证以及企业级的动态 PDF 报告生成引擎。
## 📋 目录
- [概述](#-overview)
- [核心功能](#-core-features)
- [技术栈](#-technology-stack)
- [项目结构](#-project-structure)
- [本地安装与配置](#-local-installation--setup)
- [Google Cloud Console 配置](#-google-cloud-console-setup)
- [Vercel 部署 (CI/CD)](#-vercel-deployment-cicd)
- [贡献](#-contributing)
- [免责声明与许可证](#-disclaimer--license)
## 🎯 概述
VulnEye 协助开发人员和安全专业人员评估面向公众的 Web 应用程序的基线安全状况。它不使用具有攻击性的侵入式 payload,而是执行高速安全审计,分析传输层加密、HTTP header 配置、公共端口暴露以及通用的管理目录结构。
## ✨ 核心功能
### 🔑 1. 安全的 Google OAuth 2.0 登录
* 使用与 Google 的 OpenID Connect 发现服务通信的安全 `Authlib` 引擎进行集成。
* 专门设计的、符合官方品牌规范的 Google 登录界面。
* 安全的本地身份验证回退机制,如果尚未配置环境凭证,将显示警告横幅。
### 🔍 2. 多维度安全扫描器
* **SSL/TLS 安全审计:** 评估证书可用性、安全传输和安全重定向。
* **HTTP Headers 扫描器:** 分析响应头以获取关键配置,例如 HSTS (`Strict-Transport-Security`)、CSP (`Content-Security-Policy`)、`X-Frame-Options` 和 `X-Content-Type-Options`。
* **端口扫描器与服务映射:** 安全审计常见数据库、系统和 Web 服务端口(例如 20、21、22、23、25、53、80、110、443、1433、3306、5432、8080)的检查清单,以发现意外暴露。
* **目录暴力破解:** 审计目标域名中可访问的通用管理或系统文件夹(例如 `/admin`、`/login`、`/config`、`/test`)。
* **表单审计器:** 自动提取交互式 HTML 表单定义,捕获操作、方法和输入字段。
### 📄 3. 企业级 PDF 安全报告
* 通过 `ReportLab` 生成专业、高度风格化的安全评估档案。
* 具有自定义品牌横幅条、双层 header、元数据网格(时间戳和扫描参数)以及斑马纹指标表。
* **智能文本换行:** 在段落块内换行极长的目标 URL,以防止文本剪裁和页面溢出。
* **严重性胶囊横幅:** 代表聚合风险(低 = 薄荷绿,中 = 琥珀金,高 = 深红)的高对比度颜色编码指示器。
### ⚙️ 4. Serverless 安全的自愈数据库
* 配置为在 Vercel 的只读 serverless 函数上运行。
* 动态检测 serverless 环境,并将 SQLite 写入重定向到临时的 `/tmp/scans.db` 目录。
* 在 serverless 容器冷启动时,自动重新创建目录并即时编译 SQL schema。
### 🎨 5. 奢华的毛玻璃效果 UI/UX
* 动态背景,具有使用平滑的 CSS keyframes 动画化的浮动**环境极光**。
* 半透明卡片(`backdrop-filter: blur(24px)`),采用发光的聚焦环、边框脉冲动画和交互式悬停过渡效果进行样式设置。
* 时尚的深色/浅色切换可无缝过渡,动态更新布局和组件。
* 自动解析的导航栏个人资料徽章,显示您当前活跃的 **Google 头像**和全名!
## 🛠️ 技术栈
| 技术 | 用途 | 实现细节 |
| :--- | :--- | :--- |
| **Python 3.12+** | 后端逻辑与审计 | Flask 3.x, Authlib, requests, beautifulsoup4, reportlab, python-dotenv |
| **SQLite 3** | 临时/本地日志记录 | 自愈目录与表初始化,serverless 兼容 |
| **HTML5 & CSS3** | 高级用户界面 | 毛玻璃效果,量身定制的 HSL 变量,keyframe 动画,Outfit 字体 |
| **ES6 JavaScript** | 前端交互 | LocalStorage 支持的状态同步,动态暗模式渲染 |
## 📂 项目结构
项目已进行重构,以符合云部署主机所期望的现代 serverless 布局:
```
VulnEye/
├── api/ # Main Serverless Source Folder
│ ├── index.py # Flask Application Entry Point (Vercel Entry)
│ ├── static/ # Static Assets
│ │ └── style.css # Cohesive Luxury Global Stylesheet
│ └── templates/ # Jinja2 HTML Templates (Glassmorphism Designs)
│ ├── history.html # Scans Logs Dashboard & Tables
│ ├── index.html # Futuristic Scanner Launchpad
│ ├── login.html # Premium Google Login UI
│ └── result.html # Vulnerabilities Results Dashboard
├── .env.example # Secrets Template for Local Configurations
├── .gitignore # Git Exclude Lists (UTF-8 Encoded)
├── app.py # Lightweight Local Runner Stub
├── database.py # SQLite Dynamic Database Manager (Serverless /tmp fallbacks)
├── requirements.txt # Python Dependencies
├── scanner.py # Security Scan Logic & Algorithms
└── vercel.json # Vercel Serverless Function Routing Configuration
```
## 🚀 本地安装与配置
按照以下步骤在您的开发环境中本地运行 VulnEye:
### 第一步:克隆并导航
```
git clone https://github.com/urvesh-shekhawat/VulnEye.git
cd VulnEye
```
### 第二步:建立虚拟环境并安装依赖项
```
python -m venv venv
# 在 Windows 上:
venv\Scripts\activate
# 在 macOS/Linux 上:
source venv/bin/activate
pip install -r requirements.txt
```
### 第三步:配置本地环境变量
1. 复制模板配置文件:
cp .env.example .env
2. 打开 `.env` 并填写您真实的 Google Cloud Console 凭证(请参阅下方的 Google 凭证配置部分):
SECRET_KEY="A_Complex_Random_String_For_Signing_Sessions"
GOOGLE_CLIENT_ID="123456789-abcdefg.apps.googleusercontent.com"
GOOGLE_CLIENT_SECRET="GOCSPX-abc123yourclientsecret"
### 第四步:运行开发服务器
```
python app.py
```
在浏览器中打开 **`http://localhost:5000`** 即可开始审计目标!
## 🔐 Google Cloud Console 配置
要配置 Google OAuth 2.0 凭证:
1. 前往 **[Google Cloud Console 凭证页面](https://console.cloud.google.com/apis/credentials)**。
2. 选择或创建一个项目。
3. 配置 **OAuth 同意屏幕**(用户类型:外部)并添加您应用程序的基本信息。
4. 前往 **凭证**,点击 **创建凭证** -> **OAuth Client ID**。
5. 选择 **Web Application** 作为应用程序类型。
6. 添加以下参数:
* **已授权的 JavaScript 来源:**
* 本地开发:`http://localhost:5000`
* 生产环境:`https://your-app.vercel.app`(您的 Vercel URL)
* **已授权的重定向 URI:**
* 本地开发:`http://localhost:5000/authorize`
* 生产环境:`https://your-app.vercel.app/authorize`
7. 点击 **创建** 并将您的 **Client ID** 和 **Client Secret** 复制到您的 `.env` 文件中(本地)或 Vercel 控制台中(生产环境)。
## 🌌 Vercel 部署 (CI/CD)
由于 VulnEye 在 `vercel.json` 中配置了现代 serverless 重写规则,其实时部署只需不到一分钟:
1. 将您最新的代码更改推送到您的 GitHub/GitLab 仓库。
2. 登录 **[Vercel 控制台](https://vercel.com)**。
3. 点击 **添加新项** -> **项目**,找到您的 **`VulnEye`** 仓库,然后点击 **导入**。
4. 在项目设置屏幕中:
* 保持 **框架预设** 为 `Other`(Vercel 会自动检测 `vercel.json` 并构建 `@vercel/python` 运行时)。
* 保持 **根目录** 为 `./`。
5. 在 **环境变量** 标签页下,添加您的生产环境变量:
* `SECRET_KEY` = `[您的自定义随机会话签名密钥]`
* `GOOGLE_CLIENT_ID` = `[您的 Google Client ID]`
* `GOOGLE_CLIENT_SECRET` = `[您的 Google Client Secret]`
6. 点击 **部署**。
Vercel 将编译您的代码,打包 `api/` 目录(包含模板、样式和模块),配置安全的 HTTPS URL,并将您的应用程序在线托管!
## 📜 免责声明与许可证
### ⚠️ 免责声明
此工具仅供授权的安全测试使用。未经授权访问计算机系统是违法行为。在扫描任何网站或应用程序之前,请务必确保您已获得明确许可。对于任何滥用此工具的行为,作者不承担任何责任。
### 许可证
该项目基于 **MIT License** 授权 - 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
**祝您扫描愉快! 🔒**
标签:Flask, OAuth 2.0, OSV, Vercel, Web漏洞扫描, 反取证, 后端开发, 安全评估, 插件系统, 数据可视化, 逆向工具