goby sdk 非官方版本 使用文档(3)

root2个月前Goby 非官方SDK 开发77
11、get_ip_info 方法
I、调用文档
  1. get_ip_info 接受参数:

def get_ip_info(self, task_id, ip):
  1. 功能:获取IP详细信息

  2. 调用方法

# 测试第二页,点击IP地址获取详情 info = sdk.get_ip_info(task_id="20230403070712",ip="192.168.136.1") print(info)
  1. HTTP 默认请求

POST /api/v1/getIPInfo HTTP/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 50 Authorization: Basic dXNlcjpwYXNz host: 192.168.136.133:8361 Connection: close {"taskId":"20230404080804","ip":"192.168.136.132"} HTTP/1.1 200 OK Content-Type: application/json Date: Mon, 10 Apr 2023 08:11:14 GMT Connection: close Content-Length: 3144 {"statusCode":200,"messages":"","data":{"taskId":"20230404080804","ip":"192.168.136.132","honeypot":"0","ports":[{"port":"80","baseprotocol":"tcp"},{"port":"22","baseprotocol":"tcp"}],"protocols":{"192.168.136.132:22":{"port":"22","hostinfo":"192.168.136.132:22","url":"","product":"Ubuntu-system|OpenSSH","protocol":"ssh","json":"{\"protocol\":\"ssh\",\"notretry\":false,\"base_protocol\":\"tcp\",\"status\":\"success\",\"banner\":\"SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5\\r\\n\\nserver_host_key:\\nfingerprint:M2+hR6D0POCdsVvBWh9BKYcTov0td5xRsINBDJthjyM\\nfingerprint_sha256:336fa147a0f43ce09db15bc15a1f41298713a2fd2d779c51b083410c9b618f23\",\"structinfo\":\"\",\"ip\":\"192.168.136.132\",\"port\":\"22\",\"time\":\"2023-04-04 08:44:24 +0000\"}\n","fid":[""],"products":["Ubuntu-system","OpenSSH"],"protocols":["ssh"]},"192.168.136.132:80":{"port":"80","hostinfo":"192.168.136.132:80","url":"","product":"Ubuntu-system|Nginx","protocol":"http","json":"{\"appserver\":[\"nginx\"],\"body\":\"\\u003c!DOCTYPE html\\u003e\\n\\u003chtml\\u003e\\n\\u003chead\\u003e\\n\\u003ctitle\\u003eWelcome to nginx!\\u003c/title\\u003e\\n\\u003cstyle\\u003e\\n    body {\\n        width: 35em;\\n        margin: 0 auto;\\n        font-family: Tahoma, Verdana, Arial, sans-serif;\\n    }\\n\\u003c/style\\u003e\\n\\u003c/head\\u003e\\n\\u003cbody\\u003e\\n\\u003ch1\\u003eWelcome to nginx!\\u003c/h1\\u003e\\n\\u003cp\\u003eIf you see this page, the nginx web server is successfully installed and\\nworking. Further configuration is required.\\u003c/p\\u003e\\n\\n\\u003cp\\u003eFor online documentation and support please refer to\\n\\u003ca href=\\\"http://nginx.org/\\\"\\u003enginx.org\\u003c/a\\u003e.\\u003cbr/\\u003e\\nCommercial support is available at\\n\\u003ca href=\\\"http://nginx.com/\\\"\\u003enginx.com\\u003c/a\\u003e.\\u003c/p\\u003e\\n\\n\\u003cp\\u003e\\u003cem\\u003eThank you for using nginx.\\u003c/em\\u003e\\u003c/p\\u003e\\n\\u003c/body\\u003e\\n\\u003c/html\\u003e\\n\",\"domain\":\"192.168.136.132\",\"header\":\"HTTP/1.1 200 OK\\r\\nEtag: W/\\\"63e4a71b-264\\\"\\r\\nDate: Tue, 04 Apr 2023 08:44:19 GMT\\r\\nContent-Type: text/html\\r\\nServer: nginx/1.18.0 (Ubuntu)\\r\\nLast-Modified: Thu, 09 Feb 2023 07:56:11 GMT\\r\\n\",\"host\":\"192.168.136.132\",\"id\":\"http://192.168.136.132\",\"ip\":\"192.168.136.132\",\"isdomain\":false,\"os\":[\"ubuntu\"],\"port\":\"\",\"server\":\"nginx/1.18.0 (Ubuntu)\",\"subdomain\":\"\",\"title\":\"Welcome to nginx!\",\"version\":[\"nginx/1.18.0\"]}","fid":["bclL6A9aXzKBK/xoJrZeckSQ7gymt98+"],"products":["Ubuntu-system","Nginx"],"protocols":["http","web"]}},"tags":[{"rule_id":"209","product":"Nginx","company":"other","level":"3","category":"Service","parent_category":"Support System","softhard":"2","version":"1.18.0"},{"rule_id":"4528","product":"Ubuntu-system","company":"Canonical Ltd.","level":"2","category":"Operating System","parent_category":"Software System","softhard":"2","version":""},{"rule_id":"7512","product":"OpenSSH","company":"other","level":"3","category":"Other Support System","parent_category":"Support System","softhard":"2","version":"8.2p1"}],"hostnames":[""]}}
II、字段文档
  1. 请求字段

  • taskId:任务ID,字符串类型,值为"20230404080804",表示所要查询的任务ID。

  • ip:需要查询的IP地址,字符串类型,值为"192.168.136.132"。

  1. 返回字段

  • statusCode:表示请求处理的状态码,与HTTP状态码不同,这里的状态码由响应的API定义。

  • messages:为空字符串,表示响应中没有错误信息。

  • data:包含实际的响应数据。

    • data.taskId:表示任务ID,是一个字符串类型。

    • data.ip:表示扫描的IP地址,是一个字符串类型。

    • data.honeypot:表示是否是蜜罐IP,是一个字符串类型,值为0表示不是蜜罐IP。

    • data.ports:表示扫描的端口列表,是一个数组类型,数组元素为对象,包含两个属性:port表示端口号,baseprotocol表示协议类型,都是字符串类型。

    • data.protocols:表示扫描到的协议信息,是一个对象类型,属性名为扫描到的主机IP和端口号,属性值为该端口上协议相关的信息,是一个对象类型,包含以下字段:

      • port:表示端口号,是一个字符串类型。

      • hostinfo:表示主机IP和端口号,是一个字符串类型。

      • url:为空字符串,表示没有URL。

      • product:表示协议的产品信息,是一个字符串类型,由"|"分隔的多个产品信息。

      • protocol:表示协议类型,是一个字符串类型。

      • json:包含协议相关的JSON格式信息,是一个字符串类型。

      • fid:为空数组,表示没有文件ID信息。

      • products:表示扫描到的产品信息,是一个数组类型,数组元素为字符串类型。

      • protocols:表示扫描到的协议信息,是一个数组类型,数组元素为字符串类型。

    • data.tags:表示标签信息,是一个数组类型,数组元素为对象,包含以下字段:

      • rule_id:规则ID,是一个字符串类型。

      • product:表示标签相关的产品信息,是一个字符串类型。

      • company:表示标签相关的公司信息,是一个字符串类型。

      • level:表示标签的级别,是一个字符串类型。

      • category:表示标签的类别,是一个字符串类型。

      • parent_category:表示标签的父类别,是一个字符串类型。

      • softhard:表示标签相关的软硬件信息,是一个字符串类型,值为2表示软件。

      • version:表示标签相关的版本信息,是一个字符串类型。

    • data.hostnames:为空数组,表示没有主机名信息。

更多使用说明访问:https://www.exp-9.com
12、get_web_list 方法
I、调用文档
  1. get_web_list 接受参数:

def get_web_list(self, task_id, page=1, size=20):
  1. 功能:获取任务的Web漏洞列表

  2. 调用方法

# 测试第二页, 获取任务的Web漏洞列表 result = sdk.get_web_list("20230403073546", page=1, size=20) print(result)
  1. HTTP 默认请求

POST /api/v1/getWebList HTTP/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 67 Authorization: Basic dXNlcjpwYXNz host: 192.168.136.133:8361 Connection: close {"taskId":"20230404080804","options":{"page":{"page":1,"size":20}}} HTTP/1.1 200 OK Content-Type: application/json Date: Mon, 10 Apr 2023 08:36:25 GMT Content-Length: 559 Connection: close {"statusCode":200,"messages":"","data":{"taskId":"20230404080804","total":{"ips":2,"hosts":2,"ports":2},"lists":[{"ip":"192.168.136.1","port":"7001","hostinfo":"192.168.136.1:7001","url":"http://192.168.136.1:7001","server":"JSP3/2.0.14","title":"Oracle WebLogic Server 管理控制台","imgpath":"","fid":"OW8AeC9cKwa8TI0980pN7obnRtGFlnWv"},{"ip":"192.168.136.132","port":"80","hostinfo":"192.168.136.132:80","url":"http://192.168.136.132","server":"nginx/1.18.0 (Ubuntu)","title":"Welcome to nginx!","imgpath":"","fid":"bclL6A9aXzKBK/xoJrZeckSQ7gymt98+"}]}}
II、字段文档
  1. 请求字段

  • taskId:表示任务ID,其值为一个时间戳,用于唯一标识该次请求。

  • options:表示选项参数,包含以下字段:

    • page:表示分页参数,包含以下字段:

      • page:表示当前页数,其值为整数类型。

      • size:表示每页数据条数,其值为整数类型。

  1. 返回字段

  • statusCode: 整数值,表示请求处理的状态码,200表示成功;

  • messages: 字符串,表示请求处理的消息,此处为空字符串;

  • data: 包含请求处理结果的数据对象;

    • taskId: 字符串,表示请求任务的ID;

    • total: 包含IP、主机和端口总数的对象;

    • ips: 整数值,表示请求任务中IP的总数;

    • hosts: 整数值,表示请求任务中主机的总数;

    • ports: 整数值,表示请求任务中端口的总数;

  • lists: 包含请求任务结果列表的数组;

    • ip: 字符串,表示扫描到的IP地址;

    • port: 字符串,表示扫描到的端口号;

    • hostinfo: 字符串,表示扫描到的主机信息,格式为"IP地址:端口号";

    • url: 字符串,表示扫描到的URL;

    • server: 字符串,表示扫描到的服务器信息;

    • title: 字符串,表示扫描到的页面标题;

    • imgpath: 字符串,表示扫描到的图片路径,此处为空字符串;

    • fid: 字符串,表示该结果的唯一ID。

13、get_pocs 方法
I、调用文档
  1. get_pocs 接受参数:

def get_pocs(self, task_id, query, reload_pocs=False, order_by='vul_nums', order='desc', page=1, page_size=20):
  1. 功能:获取POC信息

  2. 调用方法:

# 测试第三页 ,获取poc列表 result = sdk.get_pocs(task_id="20230404020131", query="vultype=0 && vulcategory=\"all\"",                         reload_pocs=False, order_by="vul_nums", order="desc", page=1, page_size=20) print(result)
  1. HTTP 默认请求

POST /api/v1/getPocs HTTP/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 191 Authorization: Basic dXNlcjpwYXNz host: 192.168.136.133:8361 Connection: close {"taskId":"20230404080804","query":"vultype=0 && vulcategory=\"all\"","options":{"reloadPocs":false,"order":{"vul_nums":"desc","level":"desc","host_nums":"desc"},"page":{"page":1,"size":20}}} HTTP/1.1 200 OK Content-Type: application/json Date: Mon, 10 Apr 2023 08:47:26 GMT Connection: close Content-Length: 4576 {"statusCode":200,"messages":"","data":{"taskId":"20230404080804","total":{"general":333,"bruteforce":10,"search_general":333,"search_bruteforce":0},"lists":[{"category":"system","pocType":"","fileName":"DS_Store_found.json","name":"DS_Store found","level":"3","gifAddress":"","host_nums":2,"vul_nums":0,"scanTime":"","hasexp":false},{"category":"system","pocType":"","fileName":"Git_repository_found.json","name":"Git repository found","level":"3","gifAddress":"","host_nums":2,"vul_nums":0,"scanTime":"","hasexp":false},{"category":"system","pocType":"","fileName":"JetBrains_idea_project_directory.json","name":"JetBrains .idea project directory","level":"2","gifAddress":"","host_nums":2,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"SVN_repository_found.json","name":"SVN repository found","level":"3","gifAddress":"","host_nums":2,"vul_nums":0,"scanTime":"","hasexp":false},{"category":"system","pocType":"","fileName":"BlueKeep_Microsoft_Remote_Desktop_RCE.json","name":"BlueKeep Microsoft Remote Desktop RCE (CVE-2019-0708)","level":"3","gifAddress":"","host_nums":1,"vul_nums":0,"scanTime":"","hasexp":false},{"category":"system","pocType":"","fileName":"Cisco_HyperFlex_HX_Data_Platform_Command_Injection_CVE_2021_1498.json","name":"Cisco HyperFlex HX Data Platform Command Injection (CVE-2021-1498)","level":"3","gifAddress":"","host_nums":1,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"Cisco_HyperFlex_HX_Data_Platform_File_Upload_CVE_2021_1499.json","name":"Cisco HyperFlex HX Data Platform File Upload (CVE-2021-1499)","level":"3","gifAddress":"","host_nums":1,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"smb_ms17_010.json","name":"Eternalblue/DOUBLEPULSAR MS17-010 SMB RCE","level":"3","gifAddress":"","host_nums":1,"vul_nums":0,"scanTime":"","hasexp":false},{"category":"system","pocType":"","fileName":"74cms_plus_ajax_common_SQLi.json","name":"74CMS SQLi with Plus ajax common","level":"3","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"74cms_plus_weixin_SQLi.json","name":"74CMS SQLi with Plus weixin","level":"3","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"mini_httpd_File_Read_CVE_2018_18778.json","name":"ACME mini_httpd Arbitrary File Read (CVE-2018-18778)","level":"2","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"ActiveMQ_RCE_CVE_2016_3088.json","name":"ActiveMQ Arbitrary File Write Vulnerability (CVE-2016-3088)","level":"3","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"ActiveMQ_default_account.json","name":"ActiveMQ default admin account","level":"2","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":false},{"category":"system","pocType":"","fileName":"ActiveMQ_RCE_CVE_2015_5254.json","name":"ActiveMQ Deserialization Vulnerability (CVE-2015-5254)","level":"3","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"adslr_router_default_password.json","name":"adslr router default password","level":"2","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":false},{"category":"system","pocType":"","fileName":"Alibaba_canal_Leakage_of_sensitive_information.json","name":"Alibaba canal Leakage of sensitive information","level":"2","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"druid_unauthorized.json","name":"Alibaba Druid unauthorized access","level":"2","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":false},{"category":"system","pocType":"","fileName":"Amcrest_Dahua_Audio_Streaming_CVE_2019_3948.json","name":"Amcrest/Dahua Unauthenticated-Audio-Streaming (CVE-2019-3948)","level":"2","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":false},{"category":"system","pocType":"","fileName":"amtt_eFlow_HiBOS_server_ping_CommandInjection.json","name":"AMTT eFlow HiBOS server Ping Command Injection","level":"3","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":true},{"category":"system","pocType":"","fileName":"ANTlabs_IG3100_default_account.json","name":"ANTlabs IG3100 telnet default account","level":"3","gifAddress":"","host_nums":0,"vul_nums":0,"scanTime":"","hasexp":true}],"failed":null,"tags":null}}
II、字段文档
  1. 请求字段

  • taskId:任务 ID,字符串类型,表示需要获取漏洞信息的任务 ID。

  • query:查询条件,字符串类型,表示获取哪些漏洞信息。该字段采用 SQL 语法,可以指定漏洞类型、漏洞等级等信息进行查询。

  • options:选项,JSON 对象类型,包含一些可选的参数,用于控制获取漏洞信息的行为。该字段包含如下子字段:

    • reloadPocs:是否强制重新加载漏洞库。布尔类型,表示是否需要重新从数据库加载漏洞信息,默认为 false。

    • order:排序方式,JSON 对象类型,表示获取漏洞信息的排序方式。该字段包含如下子字段:

      • vul_nums:漏洞数量排序方式,字符串类型,可选值为 "asc" 和 "desc"。

      • level:漏洞等级排序方式,字符串类型,可选值为 "asc" 和 "desc"。

      • host_nums:主机数量排序方式,字符串类型,可选值为 "asc" 和 "desc"。

    • page:分页信息,JSON 对象类型,表示获取漏洞信息的分页信息。该字段包含如下子字段:

      • page:页码,整数类型,表示需要获取哪一页的漏洞信息。

      • size:页大小,整数类型,表示每一页获取多少条漏洞信息。

  1. 返回字段

  • statusCode:响应状态码,值为200表示成功。

  • messages:响应消息,该字段为空字符串。

  • data:包含具体数据的字段。

  • taskId:任务ID。

  • total:扫描结果的总体统计信息。

    • general:普通漏洞总数。

    • bruteforce:暴力破解漏洞总数。

    • search_general:搜索到的普通漏洞数。

    • search_bruteforce:搜索到的暴力破解漏洞数。

  • lists:扫描结果的列表,每个元素代表一个漏洞类型的结果。

    • category:漏洞类型的类别。

    • pocType:漏洞类型的POC类型。

    • fileName:结果存储的文件名。

    • name:漏洞类型的名称。

    • level:漏洞等级。

    • gifAddress:漏洞截图的地址。

    • host_nums:漏洞影响的主机数。

    • vul_nums:该漏洞类型的总漏洞数。

    • scanTime:扫描时间。

    • hasexp:是否存在该漏洞类型的POC。

  • failed:扫描失败的原因。

  • tags:漏洞标签信息。该字段为空。

14、get_failed_pocs 方法
I、调用文档
  1. get_failed_pocs 接受参数:

def get_failed_pocs(self):
  1. 功能:获取加载失败的POC信息

  2. 调用方法:

# 测试第三页获取失败的poc列表 result = sdk.get_failed_pocs() print(result)
  1. HTTP 默认请求

GET /api/v1/getFailedPocs HTTP/1.1 Content-Type: application/json;charset=UTF-8 Authorization: Basic dXNlcjpwYXNz host: 192.168.136.133:8361 content-length: 0 Connection: close HTTP/1.1 200 OK Content-Type: application/json Date: Mon, 10 Apr 2023 08:47:27 GMT Content-Length: 56 Connection: close {"statusCode":200,"messages":"","data":{"faileds":null}}
II、字段文档
  1. 请求字段

GET 请求
  1. 返回字段

  • statusCode:表示请求的处理状态,这里是200,表示请求成功处理。

  • messages:表示响应的消息,这里是一个空字符串。

  • data:包含响应数据的对象。

    • faileds:表示处理失败的数据,这里是null,表示没有处理失败的数据。

15、get_vuln_statistics 方法
I、调用文档
  1. get_vuln_statistics接受参数:

def get_vuln_statistics(self, task_id):
  1. 功能:任务的漏洞统计信息

  2. 调用方法:

# 第三页获取任务的漏洞统计数据 vuln_stats = sdk.get_vuln_statistics(task_id="20230404020131") print(vuln_stats)
  1. HTTP 默认请求

POST /api/v1/vulnerabilityStatisticsData HTTP/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 27 Authorization: Basic dXNlcjpwYXNz host: 192.168.136.133:8361 Connection: close {"taskId":"20230404020131"} HTTP/1.1 200 OK Content-Type: application/json Date: Mon, 10 Apr 2023 09:07:46 GMT Content-Length: 277 Connection: close {"statusCode":200,"messages":"","data":{"ip":{"total":65,"risk":4},"port":{"total":33,"risk":5},"asset":{"total":0,"risk":0},"protocol":{"total":0,"risk":0},"level":[{"name":"Critical","value":4},{"name":"High","value":2},{"name":"Medium","value":1},{"name":"Low","value":0}]}}
II、字段文档
  1. 请求字段

  • taskId:任务 ID,字符串类型,表示需要获取任务的漏洞统计信息。

  1. 返回字段

  • statusCode:响应状态码为 200,表示请求成功。

  • messages:该字段为空字符串,表示没有错误信息。

  • data:统计数据的具体内容。

    • ip:包含总 IP 数和风险 IP 数的对象。

      • total:总 IP 数为 65。

      • risk:风险 IP 数为 4。

    • port:包含总端口数和风险端口数的对象。

      • total:总端口数为 33。

      • risk:风险端口数为 5。

    • asset:包含总资产数和风险资产数的对象。

      • total:总资产数为 0。

      • risk:风险资产数为 0。

    • protocol:包含总协议数和风险协议数的对象。

      • total:总协议数为 0。

      • risk:风险协议数为 0。

    • level:包含各级别漏洞数量的数组。

      • name:级别名称。

      • value:该级别漏洞数量。


相关文章

goby sdk 非官方版本 使用文档(4)

16、get_vulnerability_search 方法 I、调用文档get_vulnerability_search 接受参数:def get_vulnerability_search(self...

goby sdk 非官方版本 使用文档(2)

6、get_tasks 方法 I、调用文档get_tasks 接受参数:def get_tasks(self, page=1, size=10, order_by='created_time&...

goby sdk 非官方版本

goby sdk 非官方版本

非官方版本的 Goby SDK 是由一些技术人员基于官方版本进行开发和改进的,旨在提供更加丰富的功能和更好的性能。它们可能包含一些官方版本不具备的功能或者对官方版本的一些限制进行了解除,可以更好地满足...

goby sdk 非官方版本 使用文档(1)

一、Api类1、get_poc_list 方法I、调用文档get_poc_list 接受参数:get_poc_list(self, query="vultype=2", reloa...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。