andrew-ltu/crennotech-vuln-scanner
GitHub: andrew-ltu/crennotech-vuln-scanner
Crennotech 漏洞扫描器是一款用于内部漏洞扫描和管理的平台。
Stars: 0 | Forks: 0
# Crennotech 漏洞扫描器
为符合 **ISO 27001** 标准而构建的内部漏洞扫描平台。本可交付成果是后端 API 平台(第一阶段)。计划在第二阶段开发基于 React 的网页前端,并在设计文档中记录为未来工作。
## 技术栈
| 层 | 技术 |
| ------------ | -------------------------- |
| 后端 API | ASP.NET Core 8 (.NET 8 SDK) |
| 数据库 | Microsoft SQL Server (或 LocalDB)|
| 背景任务 | Hangfire 1.8 |
| ORM / 迁移 | EF Core 8 |
| 扫描器 | OWASP ZAP (REST API) |
| 测试 | xUnit + Moq + EF InMemory |
| API 文档 | Swagger / OpenAPI |
| 未来前端 | React (第二阶段 - 不在范围内) |
## 解决方案布局
```
VulnScanner.sln
├── VulnScanner.API -> ASP.NET Core Web API host + Swagger
├── VulnScanner.Domain -> Entities, enums, DTOs (no dependencies)
├── VulnScanner.Infrastructure -> EF Core DbContext + migrations
├── VulnScanner.Services -> ZAP integration, result parsing
├── VulnScanner.Jobs -> Hangfire background job orchestration
└── VulnScanner.Tests -> xUnit unit tests (InMemory + Moq)
```
## 快速入门(开发)
### 预先条件
| 工具 | 最小版本 | 原因 |
| --------------------------- | ----------- | ----------------------------------------------- |
| .NET SDK | 8.0 | 构建 / 运行 API |
| SQL Server LocalDB 或更高版本 | 2019 | 扫描的持久化存储 + Hangfire |
| OWASP ZAP (守护进程模式) | 2.14 | 执行实际扫描 |
| Git | 任何近期版本 | 克隆仓库 |
(完整的最小需求推导见 `docs/system-maintenance.md`。)
### 步骤
```
# 1. Clone
git clone https://github.com/andrew-ltu/crennotech-vuln-scanner.git
cd crennotech-vuln-scanner
# 2. Restore + build
dotnet restore
dotnet build
# 3. Update connection string in VulnScanner.API/appsettings.json
# (default uses (localdb)\MSSQLLocalDB)
# 4. Create the database (first run only)
cd VulnScanner.API
dotnet ef migrations add InitialCreate --project ../VulnScanner.Infrastructure --startup-project .
dotnet ef database update --project ../VulnScanner.Infrastructure --startup-project .
# 5. Start OWASP ZAP in daemon mode (separate terminal)
zap.sh -daemon -host 0.0.0.0 -port 8080 -config api.disablekey=true
# 6. Run the API
dotnet run --project VulnScanner.API
# Swagger UI: https://localhost:7180/swagger
# Hangfire dashboard: https://localhost:7180/hangfire
```
### 运行测试
```
dotnet test
```
## API 表面(摘要)
| 动词 | 路径 | 目的 |
| ------ | --------------------------- | ------------------------------------ |
| POST | `/api/scans` | 触发新的扫描 |
| GET | `/api/scans` | 列出所有扫描(按最新排序) |
| GET | `/api/scans/{id}` | 获取一个扫描 |
| GET | `/api/scans/{id}/status` | 轻量级状态轮询 |
| GET | `/api/scans/{id}/report` | 聚合发现 + 摘要 |
| GET | `/api/scans/{id}/raw` | 原始 ZAP JSON |
| DELETE | `/api/scans/{id}` | 取消已排队的扫描 |
参见 `docs/user-manual.md` 获取完整的请求/响应示例和 `docs/postman/` 中的 Postman 收集。
## 文档
| 文档 | 目的 |
| ------------------------------ | ------------------------------------------------------- |
| `docs/system-maintenance.md` | 安装、更新、打补丁、部署、依赖、CVEs |
| `docs/user-manual.md` | 通过 Swagger / Postman 的最终用户工作流程 |
| `docs/design.md` | 架构、威胁模型、UML、ER 图、理由 |
标签:API 文档, EF Core, Hangfire, ISO 27001, Moq, .NET 8, OpenAPI, OWASP ZAP, PB级数据处理, React, SQL Server, Swagger, Syscalls, Web API, XML 请求, xUnit, 安全合规, 安全开发, 安全开发工具, 安全架构, 安全测试, 安全运维, 开源框架, 持续集成, 攻击性安全, 网络代理, 背景任务