AyushPatwa11/Scantinel
GitHub: AyushPatwa11/Scantinel
Scantinel 是一款基于 Node.js 的全栈 Web 漏洞扫描平台,通过十阶段自动化检测并输出附带修复建议与风险等级的实时可视化报告。
Stars: 0 | Forks: 0
# Scantinel — 安全智能平台 v2.0
专业的基于 Web 的漏洞扫描器,具备实时进度跟踪、交互式仪表盘和 PDF 导出功能。
## 项目结构
```
scantinel/
├── backend/
│ ├── models/
│ │ └── Scan.js # Mongoose schema (findings, ports, summary)
└── frontend/
├── public/
│ └── index.html
## 设置
### 要求
- Node.js 18+
- MongoDB (local or Atlas)
### 1. Backend
```bash
cd backend
npm install
# 如需修改 .env (MONGO_URI, PORT)
npm run dev
# → http://localhost:5000
### 2. Frontend
```bash
cd frontend
npm install
# → http://localhost:3000
---
## Security Checks (10 Phases)
| Phase | Check |
|---|---|
| Reconnaissance | HTTP reachability, technology detection |
| Risk Assessment | Score calculation, grade assignment (A-F) |
---
## API Endpoints
| Method | Path | Description |
|---|---|---|
| POST | /api/scans | Start a scan |
| GET | /api/scans/:id/report | Download JSON report |
| DELETE | /api/scans/:id | Delete a scan |
| GET | /api/health | Health check |
## 使用 Nmap / Nikto 进行扩展
To add real Nmap integration, install Nmap system-wide and replace the TCP connect scan in `scanner.js`:
```bash
npm install node-nmap --save # backend only
```
然后在端口扫描阶段使用 `nmap.quickScan(hostname, ...)`。
## 注意事项
- 端口扫描使用原生 Node.js TCP 连接 — 无需二进制依赖
- SSE 提供无需轮询的实时扫描进度
- 所有发现结果均包含 CVSS 评分、CWE ID、通俗语言描述和修复建议
- 速率限制为每个 IP 每 15 分钟 20 次扫描
## 项目结构
```
scantinel/
├── backend/
│ ├── models/
│ │ └── Scan.js # Mongoose schema (findings, ports, summary)
│ ├── routes/
│ │ └── scans.js # REST API + SSE streaming endpoint
│ ├── services/
│ │ └── scanner.js # Core scan engine (all security checks)
│ ├── server.js # Express entry point
│ ├── .env # Environment config
│ └── package.json
│
└── frontend/
├── public/
│ └── index.html
└── src/
├── components/
│ ├── FindingCard.js/.css # Expandable finding with severity
│ ├── PortsPanel.js/.css # Port grid with risk badges
│ ├── ResultsDashboard.js/.css # Full results with charts
│ └── ScanningView.js/.css # Animated radar + step list
├── hooks/
│ └── useScan.js # SSE + state management hook
├── pages/
│ ├── HomePage.js/.css # Landing + URL input + history
│ └── ScanPage.js/.css # Scan orchestration page
├── styles/
│ └── globals.css # Design tokens + keyframes
├── utils/
│ ├── api.js # Axios client + SSE factory
│ ├── helpers.js # Severity/grade helpers
│ └── reportGenerator.js # jsPDF report export
├── App.js
└── index.js
```
## 设置说明
### 环境要求
- Node.js 18+
- MongoDB (本地或 Atlas)
### 1. 后端
```
cd backend
npm install
# 如需修改 .env (MONGO_URI, PORT)
npm run dev
# → http://localhost:5000
```
### 2. 前端
```
cd frontend
npm install
npm start
# → http://localhost:3000
```
## 安全检查(10 个阶段)
| 阶段 | 检查项 |
|---|---|
| 侦察 | HTTP 可达性,技术检测 |
| 响应头分析 | HSTS, CSP, X-Frame-Options, MIME 嗅探, Referrer-Policy, Permissions-Policy, COEP |
| 加密 | HTTPS 强制执行,HTTP→HTTPS 重定向 |
| 信息泄露 | 服务器版本,X-Powered-By,详细错误页面 |
| Cookie 安全 | Secure, HttpOnly, SameSite 标志 |
| 访问控制 | CORS 通配符,credentials+通配符配置错误 |
| 暴露的资源 | .git, .env, phpinfo.php, wp-config.php, 数据库备份,管理面板 |
| 端口扫描 | 通过 TCP 连接扫描 29 个常见端口 |
| 内容安全 | 混合内容,无 CSRF token 的表单 |
| 风险评估 | 分数计算,等级评定 (A-F) |
## API 端点
| 方法 | 路径 | 描述 |
|---|---|---|
| POST | /api/scans | 开始扫描 |
| GET | /api/scans | 列出最近的扫描 |
| GET | /api/scans/:id | 获取扫描结果 |
| GET | /api/scans/:id/stream | SSE 进度流 |
| GET | /api/scans/:id/report | 下载 JSON 报告 |
| DELETE | /api/scans/:id | 删除扫描记录 |
| GET | /api/health | 健康检查 |
## 扩展使用 Nmap / Nikto
要添加真正的 Nmap 集成,请在系统范围内安装 Nmap,并替换 `scanner.js` 中的 TCP 连接扫描:
```
npm install node-nmap --save # backend only
```
然后在端口扫描阶段使用 `nmap.quickScan(hostname, ...)`。
## 注意事项
- 端口扫描使用原生 Node.js TCP 连接 — 无需二进制依赖
- SSE 提供无需轮询的实时扫描进度
- 所有发现结果均包含 CVSS 评分、CWE ID、通俗语言描述和修复建议
- 速率限制为每个 IP 每 15 分钟 20 次扫描
标签:CVSS评分, CWE漏洞, DNS枚举, GNU通用公共许可证, HTTP安全头检测, MITM代理, MongoDB, Mongoose, Nikto, Nmap, Node.js, PDF报告生成, SSE, SSL/TLS检测, Web安全, 前端仪表盘, 安全情报, 实时处理, 密码管理, 插件系统, 敏感文件暴露, 数据统计, 端口扫描, 网络安全, 网络安全工具, 自定义脚本, 蓝队分析, 虚拟驱动器, 隐私保护, 风险评估平台