shree-aru/sentinelscan
GitHub: shree-aru/sentinelscan
一个轻量级命令行 Web 安全扫描器,快速发现常见错误配置并提供 CVSS 评分。
Stars: 0 | Forks: 0
# SentinelScan
一个命令行 Web 安全扫描器,用于在其他人发现之前检查常见的错误配置。
我构建这个工具是因为大多数免费的安全扫描器要么臃肿、过时,要么需要完整的 Kali Linux 环境才能运行。SentinelScan 是一个单一 Python 项目,克隆后不到两分钟即可运行。
它不是 Burp Suite 或完整渗透测试的替代品。它是一个快速首轮扫描器——用于在你自己的服务器上运行以发现明显的错误。
## 检查内容
**安全头部** — 检查是否存在缺失或配置不当的 HTTP 响应头部,这些头部用于防范 XSS、点击劫持、协议降级攻击和信息泄露。每个缺失的头部都会附带解释,说明其重要性以及需要在服务器配置中添加的确切代码行。
**SSL/TLS 证书** — 检查证书的有效性和过期时间,标记已弃用的 TLS 版本(1.0 和 1.1),并检测自签名证书。仅使用 Python 内置的 `ssl` 模块,无需外部工具。
**敏感文件与目录** — 探测 47 个绝不应公开访问的常见路径:`.git`、`.env`、备份归档文件、SQL 转储、管理面板、phpMyAdmin、AWS 凭证、私钥等。使用多线程机制,即使路径列表较大也能快速完成检查。
所有发现均使用 CVSS(通用漏洞评分系统)进行评分,这是 Microsoft、Google 及大多数主要安全团队用于评估漏洞严重性的标准。
## 安装
你需要 Python 3.10 或更高版本。
```
git clone https://github.com/yourusername/sentinelscan.git
cd sentinelscan
python -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Linux / Mac
pip install -r requirements.txt
```
## 用法
基础扫描:
```
python main.py https://example.com
```
将报告保存到指定文件:
```
python main.py https://example.com --output reports/example.json
```
调整超时时间(默认为 10 秒):
```
python main.py https://example.com --timeout 15
```
仅显示发现结果,跳过通过的检查:
```
python main.py https://example.com --quiet
```
跳过横幅显示:
```
python main.py https://example.com --no-banner
```
该工具会在开始前要求你确认是否拥有目标系统或拥有书面授权。未经许可扫描系统是非法的。仅应在你自己的基础设施上使用。
## 输出
终端输出会为每个模块的结果显示严重级别(CRITICAL、HIGH、MEDIUM、LOW)、CVSS 分数、风险描述、观察到的证据以及修复建议。
最后,它会打印一个汇总表格,显示整体风险评级以及按严重级别的分布情况。
JSON 报告也会自动保存。JSON 格式易于机器读取,因此输出可用于仪表板、CI/CD 流水线或其他工具。
示例 JSON 结构:
```
{
"sentinelscan_version": "1.0",
"target": "https://example.com",
"scan_time": "2026-04-14T14:49:56Z",
"summary": {
"overall_risk": "HIGH",
"total_findings": 5,
"critical": 0,
"high": 2,
"medium": 2,
"low": 1
},
"modules": [...]
}
```
## 项目结构
```
sentinelscan/
main.py entry point, CLI and terminal output
requirements.txt
scanner/
models.py data classes: Finding, ModuleResult, ScanReport, Severity
header_checker.py HTTP security headers analysis
ssl_checker.py SSL/TLS certificate analysis
dir_scanner.py sensitive file and directory probing
core.py orchestrates modules, handles JSON export
```
## 为何采用特定设计决策
**字典驱动的配置** — 添加新的头部检查或敏感路径只需一行配置,而非新增 if/else 块,便于扩展。
**目录扫描的多线程** — 目录模块使用 `concurrent.futures.ThreadPoolExecutor` 并行探测所有路径。顺序扫描 47 个路径在慢速连接下可能需要数分钟,而多线程版本可在数秒内完成。
**退出码** — 发现 CRITICAL 或 HIGH 级别问题时,扫描器以退出码 1 结束;否则为 0。这使其可在 CI/CD 流水线中用作构建门禁。若引入安全回归,构建将失败。
**无外部二进制依赖** — 全部使用纯 Python 实现。不依赖 nmap、curl 包装器或 pip 包之外的系统依赖。
## 限制
这是一个被动/非破坏性扫描器。它检查 HTTP 响应并探测已知路径,但不会进行输入模糊测试、身份验证绕过尝试或主动漏洞利用。
目录扫描器仅检查固定的 47 个路径,并非完整的目录爆破工具。如需更全面的枚举,应使用 `ffuf` 或 `gobuster` 并搭配更大的字典列表,但这属于不同的使用场景。
SSL 检查通过使用 Python 的 `ssl` 模块发起真实的 TLS 握手实现。如果服务器位于处理 TLS 终止的负载均衡器之后,某些检查结果可能与预期不同。
## 后续计划
- SQL 注入检测(GET 与 POST 参数测试)
- 反射型 XSS 扫描
- CORS 错误配置检查
- 使用 FastAPI 封装 REST API,以便以编程方式运行扫描
- 生成 HTML 与 PDF 报告
## 法律声明
仅应对你拥有或已获得明确书面授权的系统使用该工具。未经授权的扫描在大多数国家属于违法行为,包括印度《信息技术法》(第 66 条)、美国《计算机欺诈和滥用法》以及英国《计算机滥用法》。
本工具仅用于学习、研究及授权安全审计。
标签:AWS凭证检测, CVSS评分, .env文件检测, Git泄露检测, GraphQL安全矩阵, HTTP头部检查, LNA, PB级数据处理, phpMyAdmin探测, Python安全工具, SQL转储检测, SSL/TLS检查, TLS版本检测, Web安全, XSS防护, 信息泄露防护, 协议降级防护, 备份文件检测, 多线程扫描, 安全头防护, 安全扫描器, 安全运维, 安全配置审计, 快速安全评估, 敏感文件探测, 服务器安全检查, 渗透测试辅助, 点击劫持防护, 私钥检测, 自签名证书检测, 蓝队分析, 证书检查, 逆向工具