REST API

REST API提供了一个接口,使您能够轻松地使用Metasploit Pro中可用的资源,例如主机、漏洞和活动数据,这些资源来自任何可以发出HTTP请求的应用程序。您可以使用REST API从Metasploit Pro中提取数据,以在其他工具中进行管理,实现任务自动化,并与其他应用程序集成。

身份验证请求

为了使用REST API,您必须有一个有效的Metasploit Pro许可密钥。要生成API密钥,你需要登入网页界面(https://localhost:3790),并选择管理>全局设置.当全局设置页面出现时,单击API密钥选项卡,单击创建API密钥按钮,如下图:

表单要求您提供API令牌的键名。提供名称后,单击创建按钮来生成令牌。

要查看API密钥,单击API密钥表中的模糊令牌,如下所示:

出现一个弹出窗口并显示完整键。您需要复制此密钥以在调用中使用。

API令牌不会过期。

现在您有了一个API密钥,可以使用它来创建对服务器的请求。所有请求都必须包含一个API键,该键在名为“令牌”的自定义HTTP头中定义,该头由- h选项,如下图:

         
壳牌
1
旋度- h“令牌:6 bde125560088033c618c2app234”https://localhost:3790/rest_api/v2/base

上面的例子是一个基本路由,它执行API检查并使用以下选项:

  • - k—允许连接到SSL站点而无需证书。
  • - v—开启verbose模式。
  • - h-添加一个自定义HTTP头传递给服务器。使用此选项在请求中传递API键。

请求返回以下带有有效API密钥的响应:

         
壳牌
1
HTTP / 1.1200好吧
2
服务器:nginx
3.
日期:4月7日星期二201521格林尼治时间:二六13
4
内容类型:text / html字符集utf - 8
5
传输编码:分块
6
连接:维生
7
X-UA-Compatible:边缘,铬1
8
ETag:“7215 ee9c7d9dc229d2921a40e899ec5f”
9
cache - control:信息0、私人must-revalidate
10
X-Request-Id: 2359 d1d5c55e06242220a2465358cac9
11
X-Runtime:0.004253

200好了响应代码表明请求成功。如果你收到403响应时,您需要验证API密钥是否有效。

本指南中的示例使用cURL创建、格式化和发送资源请求。

说过这部分

  • 您必须有一个活动的Metasploit Pro许可密钥才能使用REST API。
  • 每个请求必须在HTTP“令牌”报头中有一个有效的API令牌。
  • 所有有效的请求都会导致200响应。

请求数据

每个资源都与一个URI相关联,并以名词形式命名,如“hosts”、“sessions”和“campaigns”。您可以使用已定义的URI创建资源请求。

请求的URI方案是:

         
旋度
1
https:// < Metasploit服务器>:3790 / rest_api / v2 /工作区:workspace_id /主机/:host_id

任何用冒号前缀的项,例如workspace_id,表示它是一个变量,需要用适当的值替换。要了解如何查找工作空间或主机的ID,请阅读找到id下面的部分。

例如,如果你想为默认的工作空间请求一个主机列表,请求将类似于这样:

         
旋度
1
$ curl -H "token:6bde125560088033c618c2app234" https://localhost:3790/rest_api/v2/workspaces/1/hosts

该请求返回一个JSON对象,包含默认工作区中的所有主机,如下所示:

         
json
1
2
“id”2
3.
“created_at”“2015 - 04 - 07 - t13:02:26 07:00”
4
“地址”“10.20.33.22”
5
“苹果”""
6
“通讯”
7
“名称”“host2”
8
“状态”“活着”
9
“os_name”""
10
“os_flavor”""
11
“os_sp”""“os_lang”
12
“拱”“workspace_id”1
13
“updated_at”“2015 - 04 - 07 - t13:02:26 07:00”
14
“目的”""“信息”
15
“评论”
16
“范围”
17
“virtual_host”
18
“note_count”0
19
“vuln_count”0
20.
“service_count”0
21
“host_detail_count”0
22
“exploit_attempt_count”0
23
“cred_count”0
24
“nexpose_data_asset_id”
25
“history_count”0
26
“detected_arch”
27

说过这部分

  • URI方案是https:// < Metasploit服务器>:3790 / rest_api / v2 /工作区:workspace_id /
  • REST API的序列化格式是JSON。
  • 变量前面加冒号。
  • 端点对索引请求响应一个对象数组,对显示请求响应一个对象。
  • 对API的所有调用都必须进行版本控制。当前版本是2。

找到id

要生成请求,您可能需要知道要从中提取数据的资源的ID。最常见的情况是,您需要知道工作区和主机ID。

要查看工作空间ID,运行以下命令查看特定Metasploit服务器上的所有工作空间:

         
旋度
1
$ curl -H "token:6bde125560088033c618c2app234" https://localhost:3790/rest_api/v2/workspaces

这将返回所有工作区及其详细信息,如下所示:

         
json
1
2
“id”1
3.
“名称”“默认”
4
“边界”
5
“描述”
6
“owner_id”
7
“limit_to_network”
8
“created_at”“2015 - 04 - 07 - t11:51:23 07:00”
9
“updated_at”“2015 - 04 - 07 - t11:51:23 07:00”
10

找到id字段来标识工作区ID。执行如下命令,查看主机ID。

         
旋度
1
$ curl -H "token:6bde125560088033c618c2app234" https://localhost:3790/rest_api/v2/workspaces/1/hosts

这将从工作区请求主机索引1,这是默认的工作空间。您可以用您想要的任何工作空间替换工作空间ID。该请求返回特定工作区中的所有主机及其详细信息,如下所示:

         
json
1
2
“id”1
3.
“created_at”“2015 - 04 - 07 - t13:02:26 07:00”
4
“地址”“10.20.33.22”
5
“苹果”""
6
“通讯”
7
“名称”“host2”
8
“状态”“活着”
9
“os_name”""
10
“os_flavor”""
11
“os_sp”""“os_lang”
12
“拱”“workspace_id”1
13
“updated_at”“2015 - 04 - 07 - t13:02:26 07:00”
14
“目的”""“信息”
15
“评论”
16
“范围”
17
“virtual_host”
18
“note_count”0
19
“vuln_count”0
20.
“service_count”0
21
“host_detail_count”0
22
“exploit_attempt_count”0
23
“cred_count”0
24
“nexpose_data_asset_id”
25
“history_count”0
26
“detected_arch”
27

id字段表示主机ID。