漏洞2.0评估算法接口说明文档
郝伟 2021/10/18

漏洞2.0管理服务器登陆信息

IP:192.168.104.102
SSH:root/huauN2021!@#$
平台:http://192.168.104.102:8999
     admin/operator2021
路径:/home/project/ai_kg

项目版本控制

本项目使用Git进行版本控制,代码存储于Gitee上,信息如下。

代码测试服务器说明

为了方便测试,代码拖回本地后,使用公司内部机 192.168.104.102 进行测试。其中根据不同人员和作用建立有以下测试目录,每个目录都配有独立的Django的运行环境。

名称 作用 存储目录 Django地址 Django端口 备注
project 项目的正式代码,确认无问题后再提交。 /home/project api, doc 8000
haowei 郝伟的测试目录。 /home/haowei api, doc 8010
wuzhijuan 吴脂娟的测试目录。 /home/wuzhijuan api, doc 8020

注意,每个链接包括两个地址,分别为接口地址和测试地址,如project为例:

其他测试接口

编号 作用 链接
1 变量a显示 http://192.168.104.102:8010/api/hello/
2 变量a和strlist自加 http://192.168.104.102:8010/api/add/

关于Django的相关操作

以正式项目为例(192.168.104.102:8000),启动过程如下:

  1. 进入项目目录: cd /home/project/vul_evaluation_2nd/ai_kg
  2. 启动Django服务,分为前台启动和后台启动两种。
    • 前台启动: python3 manage.py runserver 0.0.0.0:8000
    • 后台启动: nohup python3 manage.py runserver 0.0.0.0:8000 >> log.txt &

可以将代码简化后合并为1行:
python3 /home/project/vul_evaluation_2nd/ai_kg/manage.py runserver 0.0.0.0:8000 >> log.txt &

基于 drf-yasg 的接口调试模块

为了方便接口的高度,在本项目中使用了 drf-yasg 模块,它依赖于Anaconada和Django。

简介

本项目中所使用的三个模块如下所示:

安装过程

  1. 下载安装包与依赖组件到服务器上:

    wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh /root/
    yum install libXcomposite libXcursor libXi libXtst libXrandr alsa-lib mesa-libEGL libXdamage mesa-libGL libXScrnSaver
    
  2. 安装Anaconda3:

    sh Anaconda3-2021.05-Linux-x86_64.sh
    
    • 按提示 询问你是否同意anaconda3的license,输入yes,回车即可
    • 请求用户是否希望对Anaconda3进行初始化 输入yes,回车即可
    • 环境配置:
      vi /etc/profile
      
      • 在文件的末尾加上下述代码
      export PATH=$PATH:/root/anaconda3/bin
      
      • 保存退出
      • 立即生效:
      source /etc/profile
      
  3. 输入python3 查看python版本

  4. 添加软链接:

    ln -s /root/anaconda3/bin/python3 /usr/bin/python3
    ln -s /root/anaconda3/bin/pip3 /usr/bin/pip3
    
  5. 配置Django + drf-yasg实现在线接口文档:

    pip3 install -i https://pypi.douban.com/simple django
    pip3 install -i https://pypi.douban.com/simple drf_yasg
    

相关文档

关于drf-yasg的使用可以可以参见以下文档:

使用方法

打开测试页面,

  1. 点击右下方 vulEval_create
  2. 点击 Try it out
  3. 在文本构模式中输入测试用例
  4. 点击 Execute

测试用例

示例1:机器打分
输入:

{
  "data": "[-1, 2, 3, 3, 3, 2, 2, 2, 2, 3, 1, 2, 1, 2, 2, 2]"
}

输出:

{
  "code": 0,
  "data": {
    "type": 0,
    "result": 2
  }
}

示例2:人工打分
输入

{
  "data": "[4, 2, 3, 3, 3, 2, 2, 2, 2, 3, 1, 2, 1, 2, 2, 2]"
}

输出

{
  "code": 0,
  "data": {
    "type": 1,
    "result": 4
  }
}

接口说明

基本信息

参数说明

顺序 参数名 说明 取值范围说明
v0 invokingType 调用类型 表示机器评估或人工评估:-1表示机器评估;0-5表示人工评估,对应的数值为评估的分值;其他值无效。
v1 vulType 漏洞类型 1.配置错误; 2.代码问题; 3.资源管理错误; 4.数字错误; 5.信息泄露; 6.竞争条件; 7.输入验证; 8.缓冲区错误; 9.格式化字符串; 10.跨站脚本; 11.路径遍历; 12.后置链接; 13.SQL注入; 14.注入; 15.代码注入; 16.命令注入; 17.操作系统命令注入; 18.安全特征问题; 19.授权问题; 20.信任管理; 21.加密问题; 22.未充分验证数据可靠性; 23.跨站请求伪造; 24.权限许可和访问控制; 25.访问控制错误; 26.资料不足
v2 accessLevel 获取权限等级 1.管理员权限; 2.部分权限用户; 3.普通用户;
v3 CVSS3Score CVSS3漏洞综合评分 具体的评分分值。
v4 CNNVDScore CNNVD危害等级评分 具体的评分分值。
v5 POC POC 1.有; 2.无
v6 EXP EXP 1.有; 2.无
v7 vulPermissions 漏洞对权限的需求 1.高; 2.低;
v8 accessPath 访问路径 1.网络; 2.邻接; 3.本地; 4.物理接触;
v9 impactPlatformScope 影响平台范围 1.所有; 2.适度; 3.罕见; 4.可能触
v10 impactAssetNum 影响资产数量 1.高; 2.中; 3.低;
v11 days 0Day 1.0day; 2.1day; 3.nday;
v12 degree 确认程度 1.是; 2.否;
v13 securityPatches 安全补丁 1.有; 2.无;
v14 softwareProtectionCapability 软件防护能力 1.高; 2.低;
v15 organProtectionCapability 机构防护能力 1.高; 2.中; 3.低;

返回类型

格式:json
内容:表示查询结果,格式如下所示,结果放在data中,type为0时表示查询,result表示查询的结果;如果type为1,则result无效。
示例

"result = -1   {'code': -1, 'message': 'Machine evaluation error'}
result = 0-5 {'code': 0, 'data': {'type': 0, 'result': result}}"
# invokingType = 0-5表示人工评估
{'code': 0, 'data': {'type': 1, 'result': invokingType}}

# invokingType 其他值无效
{'code': -2, 'message': 'invokingType input error'}

注意事项:

  1. 调用时注意两点:
    1. 传参数时传送索引;
    2. 默认值为0,表未选择。

示例集

示例1

{
  ""code"": 0,
  ""data"": {
    ""list"": [
      {
        ""id"": ""country00020210920030000000001"",
        ""name"": ""不丹"",
        ""code"": ""BT"",
        ""readNum"": 0
      },
      {
        ""id"": ""country00020210920030000000002"",
        ""name"": ""东帝汶"",
        ""code"": ""TL"",
        ""readNum"": 0
      },
      {
        ""id"": ""country00020210920030000000003"",
        ""name"": ""中国"",
        ""code"": ""HK"",
        ""readNum"": 0
      },
      {
        ""id"": ""country00020210920030000000004"",
        ""name"": ""中国"",
        ""code"": ""TW"",
        ""readNum"": 0
      },
      {
        ""id"": ""country00020210920030000000005"",
        ""name"": ""中国"",
        ""code"": ""MO"",
        ""readNum"": 0
      }
    ],
    ""pageNum"": 1,
    ""pageSize"": 5,
    ""total"": 5
  }
}

附:漏洞分类

id name class
9 格式化字符串 1
10 跨站脚本 1
13 SQL注入 1
14 注入 1
15 代码注入 1
16 命令注入 1
17 操作系统命令注入 1

2 代码问题 2
3 资源管理错误 2
4 数字错误 2
5 信息泄露 2
6 竞争条件 2
11 路径遍历 2
12 后置链接 2

18 安全特征问题 3
19 授权问题 3
20 信任管理 3
21 加密问题 3
22 未充分验证数据可靠性 3
23 跨站请求伪造 3
24 权限许可和访问控制 3
25 访问控制错误 3

26 资料不足 4

8 缓冲区错误 5

1 配置错误 6

7 输入验证 7