API 接口

1. 认证

确保 HTTP 请求中携带 Authorization 头,内容格式为:”Token *********”,其中 Token 可以通过登录系统中的个人账号中获得。

"Authorization": "Token *********"

2. 升级

2.1 查询升级信息

  • 请求
    • 方式:POST
    • URI:/api/v2/upgrade/version/
  • 响应

返回非加密内容:

{
    "code": 200,
    "data": {
        "version": "1.85.22",
        "md5": "1c0854e4c49646ebcd20ea586b8fc3f8",
        "release_time": "2019-09-20T02:54:31.205098+00:00",
        "download_path": "/home/seecode/upgrade/1.85.22.tgz",
        "download_type": "ftp"
    }
}

返回加密内容:

{
  "code": 200,
  "data": {
      "secret": "WSoZvXo7RwEGJP1YsZ+2ylcD/WusnXMIKNb96GsDjTEzsivjrWRVsQN9tcDY5j6K4d2Qz1q0k5oaMfxSvyii0Hw8A9EF5Xtz5PokJ90OZtVUQAr6OK6CPumnaq77Dflx5OPuNPCNjf2267yyHY9AXCQV6Q5x/B0JOqZl/Se7/uTQvTgXPPyroXILo8gl2ZwI1GM1LlebDC0gELZgvv0+rbOWbNSeLbX0FcLaQYDuPUNBUXte1H4QZglhr5vkvNwCQv1MhW9XdRSjkYzwZYM0mBVzR1Db2XS6RWJYJAlOOKevdcrmF+iJCrF96kJPrlqalLACyhbAt/6MlPZ35tC+Mg=="
  }
}

2. 任务

2.1 查询扫描任务

  • 请求
    • 方式:GET
    • URI:/api/v2/task/:task_id/
    • 参数:
      • task_id: [整型] 扫描任务的ID
    • 状态码:
      • 200: 返回成功
      • 400: 参数错误
      • 401: 无效 token
      • 404: 项目未找到
  • 响应

返回内容:

{
    "code": 200,
    "data": {
        "task_id": 1862,
        "project_name": "tightMdmV2",
        "group_name": "默认扫描分组",
        "status": 1,
        "executor_ip": "192.168.1.1"
    },
    "desc": "成功!"
}

2.2 创建扫描任务

  • 请求
    • 方式:POST
    • URI:/api/v2/scan/add/
    • 参数:
      • ssh_url: [字符串] ssh 地址
      • branch: [字符串] 分支
      • app_name: [字符串] 应用名称
      • force_scan: [整型] 是否强制扫描,1 强制,0 不强制
    • 状态码:
      • 200: 返回成功
      • 400: 参数错误
      • 401: 无效 token
      • 404: 项目未找到
{
    "ssh_url":"git@github.com:seecode-audit/vuln_java.git",
    "branch": "master",
    "app_name":"vuln_java",
    "force_scan": 0
}
  • 响应

返回内容:

{
    "code": 200,
    "desc": "成功!"
}

2.3 更新扫描状态

  • 请求
    • 方式:POST
    • URI:/api/v2/task/:task_id/status/
    • 参数:
      • task_id: [整型] 扫描任务的ID
      • status: [整型] 状态码
      • end_time: [字符串] 结束时间
      • title: [字符串] 状态阶段
      • reason: [字符串] 原因
    • 状态码:
      • 200: 返回成功
      • 400: 参数错误
      • 401: 无效 token
      • 404: 项目未找到
{
    "status": 1,
    "end_time":"2019-07-30 09:37:03",
    "title":"扫描失败",
    "reason":"没有找到sonar-scanner。"
}
  • 响应

返回内容:

{
    "code": 200,
    "desc": "成功!"
}

2.4 更新统计信息

  • 请求
    • 方式:POST
    • URI:/api/v2/task/:task_id/statistic/
    • 参数:
      • task_id: [整型] 扫描任务的ID
      • size: [整型] 项目大小 KB
      • total: [整型] 代码总行数
      • language: [字符串] 项目开发语言
      • statistics: 文件统计信息
    • 状态码:
      • 200: 返回成功
      • 400: 参数错误
      • 401: 无效 token
      • 404: 项目未找到
{
    "size": 80,
    "total": 2048,
    "language":"java",
    "statistics":[
        {
            "language": "java",
            "files": 2,
            "blank": 300,
            "comment": 200,
            "code": 100
        },
        {
            "language": "python",
            "files": 2,
            "blank": 100,
            "comment": 20,
            "code": 103
        }
    ]
}
  • 响应

返回内容:

{
    "code": 200,
    "desc": "成功!"
}

2.5 更新依赖组件

  • 请求
    • 方式:POST
    • URI:/api/v2/task/:task_id/component/
    • 参数:
      • task_id: [整型] 扫描任务的ID
    • 状态码:
      • 200: 返回成功
      • 400: 参数错误
      • 401: 无效 token
      • 404: 项目未找到
  • 响应
[
  {
     "name": "fastjson",
     "tag": "com.alibaba",
     "version": "1.2.58",
     "new_version": "",
     "origin": "pom.xml"
  }
]

返回内容:

{
    "code": 200,
    "desc": "成功!"
}

2.6 更新漏洞信息

  • 请求
    • 方式:POST
    • URI:/api/v2/task/:task_id/issues/
    • 参数:
      • task_id: [整型] 扫描任务的ID
      • rule_key: [字符串] 规则 key
      • risk_id: [整型] 风险 id
      • category: [字符串] 漏洞类型
      • title: [字符串] 漏洞标标题
      • file: [字符串] 漏洞文件
      • author: [字符串] 最后提交作者
      • author_email: [字符串] 邮箱
      • hash: [字符串] 最后 commit id
      • start_line: [整型] 开始行
      • end_line: [整型] 结束行
      • report: [字符串] 报告
      • code_example: [字符串] 代码片段
      • is_false_positive: [布尔] 是否误报
      • whitelist_rule_id: [整型] 白名单 ID
      • evidence_content: [字符串] 取证内容
      • engine: [整型] 引擎 ID
    • 状态码:
      • 200: 返回成功
      • 400: 参数错误
      • 401: 无效 token
      • 404: 项目未找到
[
  {
    "rule_key": "java:jackson-databind-cve-2019-12384",
    "risk_id": 3,
    "category": "vulnerability",
    "title": "Jackson-databind \u53cd\u5e8f\u5217\u5316\u6f0f\u6d1e (CVE-2019-12384)",
    "file": "pom.xml",
    "author": "zhangsan",
    "author_email": "zhangsan@example.com",
    "hash": "182fb49613656f833ed4c5ed059e7855269e56f2",
    "start_line": 61,
    "end_line": 62,
    "report": "https://git.example.com/app_group/app/blob/master/pom.xml#L61",
    "code_example": "\n        <jackson.version>2.9.9</jackson.version>\n        <jackson-databind.version>2.9.9.3</jackson-databind.version>\n        <dealer.lib.version>2018.08.29.1730</dealer.lib.version>\n\n",
    "is_false_positive": false,
    "whitelist_rule_id": "",
    "evidence_content": "2.9.9",
    "engine": 2
  }
]
  • 响应

返回内容:

{
    "code": 200,
    "desc": "成功!"
}

3. 系统

3.1 日志收集

  • 请求
    • 方式:POST
    • URI:/api/v2/sys/log/
    • 参数:
      • title: [字符串] 标题
      • description: [字符串] 描述
      • stack_trace: [字符串] 堆栈信息
      • sys_type: [字符串] 类型
      • level: [字符串] 级别
    • 状态码:
      • 200: 返回成功
      • 400: 参数错误
      • 401: 无效 token
      • 404: 项目未找到
{
    "title": "",
    "description": "",
    "stack_trace": "",
    "sys_type": "",
    "level": ""
}
  • 响应

返回内容:

{
    "code": 200,
    "desc": "成功!"
}

3.1 扫描节点注册

  • 请求
    • 方式:POST
    • URI:/api/v2/node/host/
    • 参数:
      • hostname: [字符串] 主机名称
      • ipv4: [字符串] ipv4 地址
      • ipv6: [字符串] ipv6 地址
      • role: [字符串] 角色
      • ui_version: [字符串] UI 版本
      • client_version: [字符串] 客户端版本
    • 状态码:
      • 200: 返回成功
      • 400: 参数错误
      • 401: 无效 token
      • 404: 项目未找到
{
    "hostname": "test.local",
    "ipv4": "192.168.1.1",
    "ipv6": "",
    "role": "client",
    "ui_version": "",
    "client_version": "1.8.22"
}
  • 响应

返回内容:

{
    "code": 200,
    "desc": "成功!"
}