muffinbread/Web-Scanner-Sentinel
GitHub: muffinbread/Web-Scanner-Sentinel
一个模块化的网站安全审计工具,可检测常见漏洞和错误配置并生成带有安全等级的HTML报告。
Stars: 0 | Forks: 0
# WebSentinel
一个用 Python 构建的模块化网站安全审计工具包。WebSentinel 扫描网站的常见漏洞和错误配置,然后生成专业的 HTML 报告,包含发现的问题、证据和修复建议。
## 功能
| 扫描器 | 描述 |
|--------|-------------|
| **头部扫描器** | 检查缺失或配置错误的 HTTP 安全头部(CSP、HSTS、X-Frame-Options 等) |
| **SSL/TLS 分析器** | 验证证书过期时间、协议版本、主机名匹配和自签名证书 |
| **Cookie 分析器** | 检查 Cookie 的 Secure、HttpOnly 和 SameSite 标志 |
| **端口扫描器** | 发现开放端口并识别 22 个常见端口上运行的服务 |
| **目录枚举器** | 暴力破解常见路径以查找隐藏页面、管理面板和暴露的配置文件 |
| **XSS 检测器** | 测试表单输入和 URL 参数是否存在反射型跨站脚本攻击 |
| **SQL 注入检测器** | 使用基于错误和基于时间的盲注 SQL 注入有效载荷测试输入 |
| **子域名枚举器** | 通过 DNS 暴力破解解析发现子域名 |
附加功能:
- **Web GUI 仪表板** — 基于浏览器的界面,提供实时扫描进度、交互式结果、扫描历史和报告下载
- **HTML 报告生成** — 生成独立的深色主题 HTML 报告,包含安全等级(A+ 到 F)、严重程度分类和修复建议
- **选择性扫描** — 运行所有扫描器或使用 `--scanners` 选择特定的扫描器
- **彩色 CLI 输出** — 丰富的终端输出,包含严重程度编码的表格和摘要仪表板
- **模块化架构** — 每个扫描器都是一个独立的模块,继承自公共基类,便于添加新的扫描器
## 安装
```
git clone https://github.com/yourusername/websentinel.git
cd websentinel
pip install -r requirements.txt
```
**要求:** Python 3.12+
## 使用方法
### 对目标运行所有扫描器
```
python -m websentinel scan example.com
```
### 运行特定的扫描器
```
python -m websentinel scan example.com --scanners headers,ssl,cookies
```
### 生成 HTML 报告
```
python -m websentinel scan example.com -o report.html
```
### 列出可用的扫描器
```
python -m websentinel list-scanners
```
### 启动 Web GUI
```
python -m websentinel gui
```
然后在浏览器中打开 `http://127.0.0.1:5000`。GUI 提供:
- 目标输入和扫描器选择复选框
- 带进度条的实时扫描进度
- 可折叠扫描器部分的交互式结果
- 安全等级徽章和严重程度分类
- 扫描历史侧边栏(在会话期间持续存在)
- 一键下载 HTML 报告
### 查看帮助
```
python -m websentinel scan --help
```
## 扫描器密钥
将这些密钥与 `--scanners` / `-s` 标志一起使用:
| 密钥 | 扫描器 |
|-----|---------|
| `headers` | 头部扫描器 |
| `ssl` | SSL/TLS 分析器 |
| `cookies` | Cookie 分析器 |
| `ports` | 端口扫描器 |
| `dirs` | 目录枚举器 |
| `xss` | XSS 检测器 |
| `sqli` | SQL 注入检测器 |
| `subdomains` | 子域名枚举器 |
## 项目结构
```
websentinel/
├── README.md
├── requirements.txt
├── .gitignore
├── websentinel/
│ ├── __init__.py # Package init and version
│ ├── __main__.py # Entry point (python -m websentinel)
│ ├── cli.py # Command-line interface (Click + Rich)
│ ├── web.py # Flask web GUI backend
│ ├── models.py # Data models (Finding, ScanResult, Severity)
│ ├── scanner.py # Base scanner abstract class
│ ├── report.py # HTML report generator
│ ├── templates/
│ │ └── index.html # Web GUI dashboard (HTML + CSS + JS)
│ └── scanners/
│ ├── headers.py # HTTP security header checks
│ ├── ssl_tls.py # SSL/TLS certificate analysis
│ ├── cookies.py # Cookie security flag checks
│ ├── ports.py # TCP port scanning
│ ├── directories.py # Hidden path discovery
│ ├── xss.py # Reflected XSS testing
│ ├── sqli.py # SQL injection testing
│ └── subdomains.py # DNS subdomain enumeration
├── wordlists/
│ ├── common_dirs.txt # 104 common directory/file paths
│ └── common_subdomains.txt # 113 common subdomain prefixes
└── tests/
└── __init__.py
```
## 架构
WebSentinel 采用模块化插件架构:
- **`BaseScanner`** — 所有扫描器继承的抽象基类。提供自动计时、错误处理和一致的接口(`name`、`description`、`run_scan`)。
- **`Finding`** — 表示一个安全问题的数据类:标题、描述、严重程度、证据和修复方法。
- **`ScanResult`** — 将单次扫描运行的所有发现分组,包含持续时间和错误状态等元数据。
- **`Severity`** — 包含五个级别的枚举:INFO、LOW、MEDIUM、HIGH、CRITICAL。
添加新的扫描器非常简单,只需在 `scanners/` 中创建新文件,继承 `BaseScanner`,然后在 `cli.py` 中注册即可。
## 免责声明
此工具仅用于**教育目的**和**授权的安全测试**。在扫描非您所有的系统之前,请务必获得适当的书面授权。未经授权的扫描可能违反法律法规。
## 许可证
MIT
标签:CISA项目, Cookie安全, DOE合作, HTTP头检测, HTTP工具, Python, SSL/TLS分析, Web GUI, Web安全, Web应用防火墙检测, Web扫描器, XSS, 多模态安全, 子域名枚举, 安全头分析, 安全报告生成, 安全评级, 密码管理, 插件系统, 数据可视化, 数据统计, 无后门, 无线安全, 漏洞情报, 目录暴力破解, 目录枚举, 移动安全, 端口扫描, 系统安全, 网络安全, 网络安全审计, 自动化安全检测, 蓝队分析, 逆向工具, 隐私保护