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。