dbanegasl/web-security-suite-main
GitHub: dbanegasl/web-security-suite-main
一款零外部依赖的 Bash HTTP 安全测试套件,通过 5 大模块 20 项检测快速审计 Web 域名的安全配置状况,同时提供 CLI、批量扫描和 Docker Web 界面三种运行方式。
Stars: 1 | Forks: 0
# web-security-suite
HTTP 安全测试套件,用于 Web 域名审计。执行按 5 个模块组织的 **20 项测试**,检测影响安全评分卡的最常见漏洞(OWASP Top 10 基础,安全头)。
**版本:** 3.1 · **作者:** Daniel Banegas · **组织:** UNAE TICS
## 特性
- 无外部依赖 — 仅需 `curl`、`openssl` 和 `dig`/`getent`(Ubuntu/Debian 默认提供)
- **交互式菜单**提供 3 个选项:单次分析、自动批量分析和退出
- 执行前进行**域名验证**:DNS、私有 IP(警告)、HTTPS 可访问性以及自动分离 host/path
- 通过 CSV 文件的**批处理模式**:按顺序分析多个域名并展示对比结果表
- 通过环境变量实现的**非交互模式**:适用于 CI/CD 和定时任务
- 结果按级别显示:`PASS` / `FAIL` / `WARN` / `SKIP`
- 通过 IP 强制解析 DNS(适用于内部或 staging 环境)
- 结构中包含 `reports/` 文件夹(通过 `.gitkeep` 进行跟踪,内容由 git 忽略)
- 通过 Docker 提供 **Web 界面**:支持单次分析、CSV 批量分析、会话历史和报告下载的 SPA
## 系统要求
- Bash ≥ 4.0
- 支持 TLS 的 `curl`
- `openssl`(用于 TEST-09 — SSL 证书验证)
- 运行脚本的主机对域名的网络访问权限
## 快速开始
```
# 交互模式 — 主菜单
bash web-security-scan.sh
# 直接模式 — 域名 + 已识别的会话 cookie
DOMAIN=ssoserver.unae.edu.ec \
SESSION_COOKIE_NAME=ssoserver_unae_session \
bash web-security-scan.sh
# 强制 IP (内部环境 / staging)
DOMAIN=ssoserver.unae.edu.ec \
SESSION_COOKIE_NAME=ssoserver_unae_session \
IP=192.168.3.203 \
bash web-security-scan.sh
# 从 CSV 批量运行 (非交互模式)
bash web-security-scan.sh # → opción [2] en el menú
```
### 环境变量
| 变量 | 描述 |
|---|---|
| `DOMAIN` | 要分析的域名(不带 `https://`) |
| `SESSION_COOKIE_NAME` | 主会话 cookie 的名称 |
| `IP` | 用于强制 DNS 解析的服务器 IP(可选) |
## Web 界面 (Docker)
该套件包含一个完整的 Web 界面,通过 Docker 栈(FastAPI + nginx + SPA)在浏览器中公开相同的 20 项测试。
### 快速开始
```
cd web
cp .env.example .env # ajusta FRONTEND_PORT si es necesario
docker compose up -d
# → http://localhost:8778
```
在代码更改后重新构建:
```
cd web && docker compose up --build
```
### 环境变量 (`web/.env`)
| 变量 | 描述 | 默认值 |
|---|---|---|
| `FRONTEND_PORT` | 访问界面的主机端口 | `8778` |
| `FRONTEND_ORIGIN` | API 允许的来源 (CORS) | `http://localhost:8778` |
| `SCAN_TIMEOUT_SECONDS` | 每个域名的超时时间(秒) | `120` |
### 架构
```
navegador → nginx :FRONTEND_PORT ─┬─ /api/ → FastAPI :8000 (interno)
└─ / → SPA (HTML/JS/CSS)
```
- **nginx** 提供前端服务,并将 `/api/` 反向代理到后端 — 仅向主机公开一个端口。
- **FastAPI** (`web/api/main.py`) 以 `OUTPUT_FORMAT=json` 作为子进程执行 `scan.sh`,并返回结构化的 JSON。
- **scan.sh** 是 `web-security-scan.sh` 的核心引擎,支持 JSON 输出和静默批处理模式。
### 界面功能
- 通过表单进行单次分析(域名、会话 cookie、可选的强制 IP)
- 通过拖拽或选择上传 `domains.csv` 进行批量分析
- 带有每个测试徽章和可展开详情的结果表
- 当前会话的扫描历史记录
- 以 Markdown 格式下载报告
### 系统要求
- Docker ≥ 24 及 Compose 插件
- 运行 Docker 的主机对被审计域名的网络访问权限
## 结果
| 符号 | 含义 |
|---|---|
| `✅ PASS` | 配置正确 |
| `❌ FAIL` | 检测到漏洞 — 需要修复 |
| `⚠️ WARN` | 非关键警告 — 建议检查 |
| `⏭ SKIP` | 测试跳过(缺少上下文或工具) |
**输出示例:**
```
RESUMEN: 19 PASS 0 FAIL 1 WARN 0 SKIP / 20 tests
⚠️ SECURITY SCAN: SIN FALLOS CRÍTICOS, 1 advertencia(s) — ssoserver.unae.edu.ec
```
## 包含的测试
| 模块 | 测试 | 检测内容 |
|---|---|---|
| **1 — Cookies** | TEST-01 到 TEST-04 | Secure, HttpOnly, SameSite, Path |
| **2 — 传输 / TLS** | TEST-05 到 TEST-09 | HTTP→HTTPS, HSTS, TLS 1.0/1.1, 证书过期 |
| **3 — HTTP 头** | TEST-10 到 TEST-14 | X-Frame-Options, XCTO, CSP, Referrer-Policy, Permissions-Policy |
| **4 — 信息泄露** | TEST-15 到 TEST-17 | Server 版本, X-Powered-By, X-AspNet 头 |
| **5 — 服务器配置** | TEST-18 到 TEST-20 | CORS 通配符, HTTP TRACE, Cache-Control |
## 各域名会话 Cookie (UNAE 参考)
| 域名 | `SESSION_COOKIE_NAME` | Stack |
|---|---|---|
| `ssoserver.unae.edu.ec` | `ssoserver_unae_session` | Laravel / PHP-FPM |
| `admisiones.unae.edu.ec` | `sessionid` | Django / Python |
| `soporte.unae.edu.ec` | `sessionid` | Django / Python |
| `cas.unae.edu.ec` | `JSESSIONID` | Java / Tomcat |
| `servicios.unae.edu.ec` | `PHPSESSID` | PHP (用 curl 确认) |
## 仓库结构
```
web-security-suite/
├── README.md # Este archivo
├── web-security-scan.sh # Script principal (v3.1)
├── scan.sh # Motor de escaneo con salida JSON (usado por la API)
├── domains.csv.example # Plantilla de dominios para análisis batch
├── domains.csv # Tu lista de dominios (gitignored — copiar del .example)
├── .gitignore
├── reports/ # Reportes generados (gitignored, carpeta trackeada)
│ └── .gitkeep
├── web/ # Stack de la interfaz web
│ ├── .env.example # Variables de entorno (copiar como .env)
│ ├── docker-compose.yml # Orquestación: API (FastAPI) + Frontend (nginx)
│ ├── api/
│ │ ├── Dockerfile
│ │ ├── main.py # API FastAPI — endpoints /api/scan y /api/batch
│ │ └── requirements.txt
│ └── frontend/
│ ├── Dockerfile
│ ├── nginx.conf # Proxy reverso /api/ → API interna
│ ├── index.html
│ ├── app.js
│ └── styles.css
└── docs/
├── usage-guide.md # Guía detallada de uso, modos, ejemplos y correcciones
├── tests-reference.md # Especificación técnica (PRD) de cada test con snippets bash
└── planificacion-interfaz-web.md # Análisis y planificación de la interfaz web
```
## 文档
- [使用指南](docs/usage-guide.md) — 执行模式 (CLI、非交互、Docker)、各域名示例、结果解读、常见修复、CI/CD
- [测试参考](docs/tests-reference.md) — 20 项测试的技术规范,包含单独的 bash 代码片段和验收标准
- [Web 界面 — 规划与实现](docs/planificacion-interfaz-web.md) — 可行性分析、Docker 栈架构和各阶段状态
*由 GitHub Copilot 辅助生成 — UNAE TICS 2026。*
标签:AV绕过, CI/CD安全, Cookie安全, DevSecOps, Docker, FastAPI, HTTP安全测试, Llama, Nginx, OWASP Top 10, SPA, SSL/TLS检测, Web安全, 上游代理, 多模态安全, 安全响应头, 安全基线检查, 安全报告生成, 安全防御评估, 密码管理, 应用安全, 开源安全工具, 数据可视化, 数据泄露, 网络安全, 蓝队分析, 请求拦截, 逆向工程平台, 隐私保护