Moscvv/websentinel
GitHub: Moscvv/websentinel
一款基于 OWASP Top 10 标准的 Python 命令行 Web 应用漏洞扫描器,支持自动化检测安全标头、注入、CORS 等常见 Web 安全问题并输出分级报告。
Stars: 0 | Forks: 0
# 🛡️ WebSentinel — OWASP Top 10 漏洞扫描器
## 扫描范围
| # | 检查项 | OWASP 参考 | 严重性范围 |
|---|-------|----------------|----------------|
| 1 | **安全标头** | A05 – 安全配置错误 | LOW → HIGH |
| 2 | **开放重定向** | A01 – 访问控制失效 | HIGH |
| 3 | **SQL 注入指标** | A03 – 注入 | CRITICAL |
| 4 | **暴露的管理面板和路径** | A05 – 安全配置错误 | MEDIUM → HIGH |
| 5 | **敏感文件泄露** (.env, backups, .git) | A05 – 安全配置错误 | MEDIUM → CRITICAL |
| 6 | **Cookie 安全标志** | A02 – 加密机制失效 | MEDIUM |
| 7 | **CORS 配置错误** | A05 – 安全配置错误 | HIGH → CRITICAL |
| 8 | **反射型 XSS 指标** | A03 – 注入 | HIGH |
| 9 | **危险的 HTTP 方法** (PUT, DELETE, TRACE) | A05 – 安全配置错误 | MEDIUM |
## 快速开始
```
# 克隆并安装
git clone https://github.com/yourusername/websentinel.git
cd websentinel
pip install -r requirements.txt
# 启动一个易受攻击的测试目标(需要 Docker)
docker run --rm -d -p 3000:3000 bkimminich/juice-shop # OWASP Juice Shop
# 或者
docker run --rm -d -p 80:80 vulnerables/web-dvwa # DVWA
# 运行 scanner
python scanner.py http://localhost:3000
# 保存 JSON 报告
python scanner.py http://localhost:3000 --output report.json
```
## 示例输出
```
██╗ ██╗███████╗██████╗ ███████╗███████╗███╗ ██╗████████╗██╗███╗ ██╗███████╗██╗
...
Target : http://localhost:3000
Started : 2025-05-03 14:22:11
────────────────────────────────────────────────────
▶ Running: Security Headers… [4 issue(s)] (0.3s)
▶ Running: Open Redirect… [1 issue(s)] (0.8s)
▶ Running: SQL Injection Indicators… [clean] (1.2s)
▶ Running: Exposed Admin / Paths… [3 issue(s)] (2.1s)
...
════════════════════════════════════════════════════
SCAN COMPLETE — 11 finding(s)
════════════════════════════════════════════════════
[1] Open Redirect Detected
Severity : HIGH
OWASP : A01:2021 – Broken Access Control
Detail : Parameter 'url' redirects to arbitrary external URLs...
Evidence : GET http://localhost:3000?url=https://evil.example.com
: → 302 Location: https://evil.example.com
Fix : Validate and whitelist redirect targets.
Severity Breakdown:
HIGH ███████ (7)
MEDIUM ████ (4)
```
## 在故意存在漏洞的应用上进行测试
### OWASP Juice Shop (推荐)
```
docker run --rm -d -p 3000:3000 bkimminich/juice-shop
python scanner.py http://localhost:3000 -o juice_shop_report.json
```
Juice Shop 是一个现代的 Node.js 应用,包含故意的 OWASP Top 10 漏洞 — 非常适合用于验证扫描器的准确性。
### DVWA (Damn Vulnerable Web App)
```
docker run --rm -d -p 80:80 -p 3306:3306 vulnerables/web-dvwa
# 默认凭证:admin / password
python scanner.py http://localhost/dvwa -o dvwa_report.json
```
### 各应用的预期发现
| 发现类型 | Juice Shop | DVWA |
|---|---|---|
| 缺失安全标头 | ✅ | ✅ |
| 开放重定向 | ✅ | ❌ |
| SQLi 指标 | ❌ (使用 ORM) | ✅ |
| 暴露的路径 | ✅ (/api-docs) | ✅ (/phpmyadmin) |
| 敏感文件 | ✅ | ✅ |
| 弱 Cookie | ✅ | ✅ |
| CORS 问题 | ✅ | ❌ |
## 架构
```
scanner.py
├── HTTP helper layer (requests session, timeout/SSL handling)
├── Check modules (×9) (each returns list of Finding dicts)
├── Orchestrator (runs all checks, collects results)
├── Reporter (coloured terminal + JSON export)
└── CLI (argparse, --output, --verbose)
```
每个检查模块都是独立的,并返回一个 `finding` 字典列表 — 易于扩展、独立测试或插入到 CI pipeline 中。
## 扩展扫描器
添加新检查只需三个步骤:
```
# 1. 编写一个 check 函数
def check_my_new_vuln(base_url):
findings = []
r = get(base_url + "/some/path")
if r and "dangerous_pattern" in r.text:
findings.append(finding(
title="My New Vulnerability",
severity="HIGH",
description="Explanation of the issue.",
evidence=f"GET {base_url}/some/path → match found",
remediation="How to fix it.",
owasp_ref="A05:2021 – Security Misconfiguration",
))
return findings
# 2. 将其注册到 CHECKS 列表中
CHECKS = [
...
("My New Check", check_my_new_vuln),
]
# 3. 针对 DVWA 或 Juice Shop 运行并验证
```
## 路线图
- [ ] 速率限制/节流控制 (`--delay` 标志)
- [ ] 认证扫描 (session cookie / Bearer token 注入)
- [ ] HTML 报告输出 (Jinja2 模板)
- [ ] 子域名枚举预扫描
- [ ] CI/CD 集成示例 (GitHub Actions)
- [ ] 使用多线程加快路径枚举速度
## ⚠️ 法律免责声明
本工具仅供**授权的安全测试**使用。仅在你的系统上运行,或者在获得明确书面测试许可的系统上运行。未经授权的扫描可能违反计算机犯罪法,包括日本的《禁止非法访问计算机法》(不正アクセス行為の禁止等に関する法律)。
## 展示的技能
- **Python** — 具有清晰架构的模块化 CLI 工具
- **Web 安全** — 实践应用 OWASP Top 10 (2021) 概念
- **HTTP 内部机制** — 标头、重定向、CORS、cookie、方法
- **安全工具开发** — 类似于 Nikto、Nuclei、Burp Suite 主动扫描的模式
- **负责任的披露意识** — 严重性评级、修复指导
*为入门级进攻性安全 / Web 应用渗透测试岗位构建的作品集项目。*
标签:CISA项目, Homebrew安装, Python, Web安全, 内存取证对抗, 数据泄露, 无后门, 蓝队分析, 请求拦截, 逆向工具