AkashAswal5/web-vulnerability-scanner
GitHub: AkashAswal5/web-vulnerability-scanner
一款基于 Flask 的 Web 漏洞扫描器,支持 SQL 注入、XSS、安全 Headers 分析和端口扫描,用于安全教育与授权测试。
Stars: 0 | Forks: 0
# 🔒 专业 Web 漏洞扫描器
[](https://www.python.org/downloads/)
[](https://flask.palletsprojects.com/)
[](LICENSE)
[](README.md)
一款**专业级**的 Web 漏洞扫描器,旨在识别 Web 应用程序中的安全弱点。采用企业级架构构建,具备全面的日志记录、速率限制和现代安全实践。
## ✨ 专业功能
### 🔐 **高级安全扫描**
- **SQL 注入检测** - 18+ 种 payload 变体,支持错误模式匹配
- **跨站脚本攻击 (XSS)** - 14+ 种 XSS payload 测试,支持上下文分析
- **安全 Headers 分析** - 全面的 header 检查与风险评分
- **端口扫描** - 多线程端口检测与服务识别
- **漏洞风险评估** - 自动风险等级分类(低/中/高/严重)
### 🛡️ **企业级安全**
- ✅ 速率限制(每天 200 次,每小时 50 次)
- ✅ CSRF 防护
- ✅ 安全 headers(CSP、HSTS、X-Frame-Options 等)
- ✅ 基于 secure cookies 的 session 管理
- ✅ 密码强度验证
- ✅ 输入清理与验证
- ✅ 全面的审计日志
- ✅ 错误处理与监控
### 📊 **专业架构**
- 采用 blueprints 的现代 MVC 模式
- 基于 SQLAlchemy 的数据库 ORM
- RESTful API 设计
- 全面的日志系统
- 基于环境的配置
- 模块化且可扩展的代码库
### 👤 **用户管理**
- 安全注册与密码哈希 (PBKDF2-SHA256)
- 基于 session 的身份验证
- 带统计信息的用户控制台
- 扫描历史记录跟踪
- 学习资源库
## 🚀 快速开始
### 一键安装
```
git clone https://github.com/AkashAswal5/web-vulnerability-scanner.git
cd web-vulnerability-scanner
chmod +x setup.sh && ./setup.sh
./run.sh
```
访问 **http://localhost:5000** 🎉
## ⚠️ 重要提示:Python 版本
**要求**:Python 3.9 - 3.13
**❌ 不兼容**:Python 3.14+(包含破坏性更改)
**✅ 推荐**:Python 3.12
如果您正在使用 Python 3.14,请参阅 [PYTHON_VERSION_FIX.md](PYTHON_VERSION_FIX.md) 获取指南。
## 📋 详细安装说明
### 前置条件
- **Python 3.9, 3.10, 3.11, 3.12 或 3.13**(推荐 Python 3.12)
- pip 包管理器
- 虚拟环境(推荐)
### 检查您的 Python 版本
```
python3 --version
# 应显示 3.9.x 至 3.13.x
# 如果为 3.14+,请参见 PYTHON_VERSION_FIX.md
```
### 分步设置
1. **克隆代码库**
```
git clone https://github.com/AkashAswal5/web-vulnerability-scanner.git
cd web-vulnerability-scanner
```
2. **创建虚拟环境**
```
python3 -m venv venv
# 在 macOS/Linux 上激活
source venv/bin/activate
# 在 Windows 上激活
venv\Scripts\activate
```
3. **安装依赖项**
```
pip install --upgrade pip
pip install -r requirements.txt
```
4. **配置环境**
```
cp .env.example .env
# 使用你的设置编辑 .env
nano .env # or use any text editor
```
5. **运行应用程序**
```
cd functionailty
python app.py
```
应用程序将可通过 `http://localhost:5000` 访问
## 🎯 使用指南
### 首次设置
1. **注册账号**
- 访问 http://localhost:5000
- 点击“注册”
- 创建用户名和强密码(至少 8 个字符,包含大写字母、小写字母、数字、特殊字符)
- 提交注册
2. **登录**
- 使用您的凭据登录
- 您将被重定向到控制台
### 执行扫描
#### SQL 注入扫描
```
1. Go to Dashboard → SQL Injection Scanner
2. Enter target URL (e.g., http://testphp.vulnweb.com/artists.php?artist=1)
3. Click "Scan"
4. Review detailed results with vulnerabilities found
```
#### XSS 漏洞扫描
```
1. Go to Dashboard → XSS Scanner
2. Enter target URL
3. Click "Scan"
4. Review XSS vulnerabilities with payload details
```
#### 安全 Headers 分析
```
1. Go to Dashboard → Header Scanner
2. Enter target URL (e.g., https://example.com)
3. Click "Scan"
4. Review missing/present security headers with recommendations
```
#### 端口扫描
```
1. Go to Dashboard → Port Scanner
2. Enter target IP or hostname
3. Click "Scan"
4. Review open ports and services
```
## 📁 项目结构
```
web-vulnerability-scanner/
├── functionailty/ # Main application
│ ├── app.py # Main Flask application (Enhanced)
│ ├── config.py # Configuration management
│ ├── models.py # Database models
│ ├── blueprints/ # Application blueprints
│ │ ├── auth.py # Authentication
│ │ └── scanner.py # Scanning routes
│ ├── utils/ # Utility modules
│ │ ├── security_scanner.py # Basic scanners
│ │ ├── advanced_scanner.py # Advanced scanners
│ │ └── validators.py # Input validation
│ ├── templates/ # HTML templates
│ │ ├── errors/ # Error pages (404, 500, 429)
│ │ ├── auth/ # Auth templates
│ │ └── scanner/ # Scanner templates
│ ├── static/ # Static files (CSS, JS)
│ └── logs/ # Application logs
├── requirements.txt # Python dependencies
├── .env.example # Environment template
├── .gitignore # Git ignore rules
├── setup.sh # Automated setup
├── run.sh # Run script
└── README.md # This file
```
## ⚙️ 配置
### 环境变量 (.env)
```
# Flask 配置
FLASK_SECRET_KEY=your-super-secret-key-here
FLASK_ENV=development # or production
FLASK_HOST=0.0.0.0
FLASK_PORT=5000
# 数据库
DATABASE_URI=sqlite:///scanner.db
# 安全性
SESSION_COOKIE_SECURE=False # True for HTTPS only
RATELIMIT_ENABLED=True
# 日志
LOG_LEVEL=INFO
LOG_FILE=logs/scanner.log
```
### 生产环境部署
对于生产环境:
1. 设置 `FLASK_ENV=production`
2. 将 `FLASK_SECRET_KEY` 更改为强随机值
3. 启用 `SESSION_COOKIE_SECURE=True`(需要 HTTPS)
4. 使用生产级数据库(PostgreSQL、MySQL)
5. 设置反向代理(nginx、Apache)
6. 配置 SSL/TLS 证书
7. 启用防火墙和安全组
8. 设置监控和告警
## 🧪 测试
### 安全测试目标
**仅扫描您拥有或已获授权测试的系统!**
安全测试网站:
- http://testphp.vulnweb.com/
- http://demo.testfire.net/
- https://httpbin.org/
示例命令:
```
# SQL Injection 测试
URL: http://testphp.vulnweb.com/artists.php?artist=1
# Security Headers 测试
URL: https://example.com
# Port Scan 测试(仅限 localhost)
Target: 127.0.0.1
```
## 📊 功能明细
| 功能 | 状态 | 描述 |
|---------|--------|-------------|
| SQL 注入扫描器 | ✅ | 18+ 种 payload,错误检测 |
| XSS 扫描器 | ✅ | 14+ 种 payload,表单分析 |
| 安全 Headers | ✅ | 7 个关键 headers + 评分 |
| 端口扫描器 | ✅ | 多线程,服务检测 |
| 速率限制 | ✅ | 每 IP 每天 200 次,每小时 50 次 |
| 身份验证 | ✅ | 安全密码哈希 |
| 审计日志 | ✅ | 全面的活动日志 |
| 错误处理 | ✅ | 专业的错误页面 |
| 输入验证 | ✅ | URL、IP、用户名、密码 |
| Session 安全 | ✅ | Secure cookies,CSRF 防护 |
## 🔒 安全最佳实践
此扫描器实现了:
1. **OWASP Top 10 防护**
- SQL 注入防御
- XSS 防护
- CSRF token
- 安全 headers
- 身份验证控制
2. **安全编码**
- 参数化查询
- 输入验证
- 输出编码
- 密码哈希
- Session 管理
3. **基础设施安全**
- 速率限制
- 日志与监控
- 错误处理
- 安全 headers
- Cookie 安全
## ⚠️ 法律免责声明
**重要提示**:此工具仅供**教育目的**和**授权的安全测试**使用。
- ✅ 仅扫描您拥有的系统
- ✅ 在扫描前获得明确的书面授权
- ✅ 遵循负责任的漏洞披露实践
- ✅ 遵守所有法律法规
- ❌ 严禁未经授权进行扫描
- ❌ 严禁用于恶意目的
**未经授权的扫描**在您所在的司法管辖区**可能是违法的**。开发者不对滥用行为承担任何责任。
## 🐛 故障排除
### 常见问题
**问题**:`ModuleNotFoundError`
```
# 解决方案
source venv/bin/activate
pip install -r requirements.txt
```
**问题**:端口 5000 已被占用
```
# 解决方案:编辑 .env
FLASK_PORT=5001
```
**问题**:数据库错误
```
# 解决方案
cd functionailty
rm instance/scanner.db
python app.py # Database will be recreated
```
**问题**:权限被拒绝
```
# 解决方案
chmod +x setup.sh run.sh
```
## 📚 进阶文档
- [配置指南](docs/CONFIGURATION.md) - 详细的配置选项
- [API 文档](docs/API.md) - API endpoint 与用法
- [架构](docs/ARCHITECTURE.md) - 系统设计与架构
- [安全指南](docs/SECURITY.md) - 安全实现细节
## 📝 更新日志
请参阅 [CHANGELOG.md](CHANGELOG.md) 了解版本历史和更新。
## 👤 作者
**Akash Aswal**
- GitHub: [@AkashAswal5](https://github.com/AkashAswal5)
- 项目: [Web 漏洞扫描器](https://github.com/AkashAswal5/web-vulnerability-scanner)
## 📄 许可证
本项目仅用于**教育目的**。
**用心 ❤️ 为安全学习而打造**
切记:**负责任地使用。合乎道德地扫描。保持合法。** 🔐
标签:CISA项目, DOE合作, Flask, Python, SQL注入检测, Web漏洞扫描器, XSS检测, 数据统计, 无后门, 端口扫描, 逆向工具