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

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

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

2. 项目版本控制

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

3. 代码测试服务器说明

为了方便测试,代码拖回本地后,使用公司内部机 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/|

4. 关于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 &

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

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

5.1. 简介

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

  • Anaconda3, 一个综合的Python运行环境;
  • Django, 一个简单易用的Python版的Web服务;
  • drf-yasg, 基于Django的接口服务

5.2. 安装过程

  1. 下载安装包与依赖组件到服务器上: shell script 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: ```shell script sh Anaconda3-2021.05-Linux-x86_64.sh
     * 按提示 询问你是否同意anaconda3的license,输入yes,回车即可
     * 请求用户是否希望对Anaconda3进行初始化   输入yes,回车即可
     * 环境配置:
         ```shell script
         vi /etc/profile
    
     * 在文件的末尾加上下述代码
     ```shell script
     export PATH=$PATH:/root/anaconda3/bin
     ```
     * 保存退出
     * 立即生效:
     ```shell script
     source /etc/profile
     ```
    
  3. 输入python3 查看python版本

  4. 添加软链接: shell script ln -s /root/anaconda3/bin/python3 /usr/bin/python3 ln -s /root/anaconda3/bin/pip3 /usr/bin/pip3

  5. 配置Django + drf-yasg实现在线接口文档: shell script pip3 install -i https://pypi.douban.com/simple django pip3 install -i https://pypi.douban.com/simple drf_yasg

5.3. 相关文档

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

5.4. 使用方法

打开测试页面,

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

5.5. 测试用例

示例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
  }
}

6. 接口说明

6.1. 基本信息

  • 接口名称:vulEval
  • 示例地址:http://10.10.0.16:8300/vulEval
  • 接口作用:用于进行漏洞可利用性评估,包括机器评估和人工评估两类。
  • 传值方式:post

6.2. 参数说明

顺序| 参数名| 说明| 取值范围说明 |:---:|:---|:---|:---| | 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.普通用户; |4.访客 | 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.低; |

6.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'}

6.4. 注意事项:

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

6.5. 示例集

6.5.1. 示例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
  }
}

7. 附:漏洞分类

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

results matching ""

    No results matching ""