Skip to content

ClaudeRead/Cybersecurity_Knowledge_Base

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

网络安全知识库系统 (Cybersecurity Knowledge Base)

功能特性

  • 漏洞检索 - 支持 CVE 编号和关键词搜索,快速定位漏洞信息
  • 漏洞分析 - 结构化展示 CVSS 评分、攻击向量、影响范围
  • POC 资源 - 自动聚合 GitHub、Exploit-DB 等平台的 POC 资源
  • 应急响应 - 文章体系,支持 Markdown 博客式展示
  • 数据同步 - 自动从 NVD API 增量同步漏洞数据
  • 全文搜索 - SQLite FTS5 全文搜索引擎

技术栈

组件 技术选型
后端框架 Rust + Axum
数据库 SQLite + FTS5
ORM sqlx
模板引擎 Askama
Markdown pulldown-cmark
HTTP 客户端 reqwest
异步运行时 tokio

项目结构

Cybersecurity_Knowledge_Base/
├── Cargo.toml                    # 项目配置和依赖
├── .env                          # 环境变量配置
├── migrations/
│   └── 20240101000000_init.sql   # 数据库迁移脚本
├── src/
│   ├── main.rs                   # 主程序入口
│   ├── model/
│   │   └── mod.rs                # 数据模型定义
│   ├── db/
│   │   └── mod.rs                # 数据库操作层
│   ├── parser/
│   │   └── mod.rs                # NVD API 数据解析器
│   ├── sync/
│   │   └── mod.rs                # 数据同步模块
│   ├── service/
│   │   └── mod.rs                # 业务逻辑层
│   └── api/
│       ├── mod.rs                # API 模块声明
│       ├── pages.rs              # 页面路由
│       ├── vulnerabilities.rs    # 漏洞 API
│       ├── poc.rs                # POC API
│       ├── search.rs             # 搜索 API
│       └── articles.rs           # 文章 API
├── templates/                    # Askama HTML 模板
│   ├── base.html                 # 基础模板
│   ├── index.html                # 首页
│   ├── vulnerabilities.html      # 漏洞列表页
│   ├── vulnerability_detail.html # 漏洞详情页
│   ├── articles.html             # 文章列表页
│   └── article_detail.html       # 文章详情页
├── static/
│   ├── css/
│   │   └── style.css             # 样式文件
│   └── js/
│       └── main.js               # 交互逻辑
├── content/                      # 用户上传的 Markdown 文档
└── knowledge_base.db             # SQLite 数据库文件

快速开始

环境要求

  • Rust 1.70+
  • NVD API Key(可选,但强烈推荐)

安装步骤

  1. 克隆项目
git clone https://github.com/your-username/Cybersecurity_Knowledge_Base.git
cd Cybersecurity_Knowledge_Base
  1. 配置环境变量

编辑 .env 文件:

DATABASE_URL=sqlite://knowledge_base.db?mode=rwc
RUST_LOG=info
NVD_API_KEY=your_api_key_here

获取 NVD API Key:访问 NVD API 官网 申请免费 API Key

  1. 编译运行
cargo run
  1. 访问系统

浏览器打开 http://localhost:3000

配置说明

环境变量

变量名 必填 默认值 说明
DATABASE_URL sqlite://knowledge_base.db?mode=rwc SQLite 数据库连接字符串
RUST_LOG info 日志级别 (error/warn/info/debug/trace)
NVD_API_KEY NVD API 密钥(无 Key 限制请求频率)

NVD API 速率限制

  • 无 API Key:每 30 秒 5 个请求
  • 有 API Key:每 30 秒 50 个请求

建议申请 API Key 以获得更快的数据同步速度。

API 文档

基础信息

  • Base URL: http://localhost:3000/api/v1
  • 响应格式: JSON

漏洞接口

获取漏洞列表

GET /api/v1/vulnerabilities

查询参数

参数 类型 必填 默认值 说明
page int 1 页码
page_size int 20 每页数量
severity string 严重等级筛选 (CRITICAL/HIGH/MEDIUM/LOW)

响应示例

{
  "success": true,
  "data": [
    {
      "id": "CVE-2024-1234",
      "name": null,
      "description": "A vulnerability in...",
      "severity": "HIGH",
      "cvss_score": 8.5,
      "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
      "publish_date": "2024-01-15T10:30:00.000",
      "update_date": "2024-01-20T15:45:00.000",
      "impact": "高影响",
      "attack_vector": "网络",
      "affected_versions": null,
      "exploit_conditions": null,
      "fix_steps": null
    }
  ],
  "page": 1,
  "page_size": 20
}

获取漏洞详情

GET /api/v1/vulnerabilities/{id}

路径参数

参数 类型 说明
id string CVE 编号 (如 CVE-2024-1234)

响应示例

{
  "success": true,
  "data": {
    "vulnerability": {
      "id": "CVE-2024-1234",
      "severity": "HIGH",
      "cvss_score": 8.5,
      "description": "A vulnerability in...",
      "fix_steps": "1. Update to version 2.0..."
    },
    "pocs": [
      {
        "id": 1,
        "cve_id": "CVE-2024-1234",
        "poc_url": "https://github.com/example/poc",
        "source": "github",
        "language": "python",
        "verified": 0,
        "usage": "python poc.py",
        "cache_time": "2024-01-20 15:45:00"
      }
    ]
  }
}

获取漏洞 POC

GET /api/v1/vulnerabilities/{id}/poc

搜索接口

全文搜索

GET /api/v1/search?q={query}

查询参数

参数 类型 必填 默认值 说明
q string 搜索关键词
limit int 50 结果数量限制

文章接口

获取文章列表

GET /api/v1/articles

查询参数

参数 类型 必填 默认值 说明
page int 1 页码
page_size int 20 每页数量

数据库设计

vulnerabilities 表

存储漏洞基本信息

字段 类型 说明
id TEXT (PK) CVE 编号
name TEXT 漏洞名称
description TEXT 漏洞描述
severity TEXT 严重等级 (CRITICAL/HIGH/MEDIUM/LOW)
cvss_score REAL CVSS 评分
cvss_vector TEXT CVSS 向量字符串
publish_date TEXT 发布日期
update_date TEXT 更新日期
impact TEXT 影响范围
affected_versions TEXT 受影响版本
exploit_conditions TEXT 利用条件
attack_vector TEXT 攻击向量
fix_steps TEXT 修复步骤

poc_resources 表

存储 POC 资源信息

字段 类型 说明
id INTEGER (PK) 自增 ID
cve_id TEXT 关联的 CVE 编号
poc_url TEXT (UNIQUE) POC 链接
source TEXT 来源 (github/exploit-db)
type TEXT 类型 (exploit)
language TEXT 编程语言
verified INTEGER 是否已验证 (0/1)
usage TEXT 使用方法
cache_time TEXT 缓存时间

vuln_references 表

存储漏洞参考链接

字段 类型 说明
id INTEGER (PK) 自增 ID
cve_id TEXT 关联的 CVE 编号
url TEXT 参考链接
source TEXT 来源
tags TEXT 标签

articles 表

存储应急响应文章

字段 类型 说明
id INTEGER (PK) 自增 ID
title TEXT 文章标题
content TEXT Markdown 内容
tags TEXT 标签
related_cve TEXT 关联 CVE
create_time TEXT 创建时间

vuln_fts 表 (FTS5 虚拟表)

全文搜索索引

CREATE VIRTUAL TABLE vuln_fts USING fts5(id, name, description)

页面路由

路由 说明
/ 首页
/vulnerabilities 漏洞列表页
/vulnerabilities/:id 漏洞详情页
/articles 文章列表页
/articles/:id 文章详情页

开发指南

添加新的 API 接口

  1. src/api/ 下创建或修改处理函数
  2. src/main.rs 中注册路由
  3. src/service/ 中实现业务逻辑
  4. src/db/ 中添加数据库操作

添加新页面

  1. templates/ 下创建 Askama 模板
  2. 继承 base.html 基础模板
  3. src/api/pages.rs 中添加页面处理函数
  4. src/main.rs 中注册页面路由

数据库迁移

migrations/ 目录下创建新的 SQL 文件:

-- migrations/20240101000001_add_new_feature.sql
ALTER TABLE vulnerabilities ADD COLUMN new_field TEXT;

运行测试

cargo test

代码格式化

cargo fmt

代码检查

cargo clippy

贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

致谢

  • NVD - 国家漏洞数据库
  • Axum - Rust Web 框架
  • sqlx - Rust 异步 SQL 工具包

联系方式

About

这是一个网络安全相关的知识库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors