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密钥的响应:
壳牌
1HTTP / 1.1200好吧2服务器:nginx3.日期:4月7日星期二201521格林尼治时间:二六134内容类型:text / html;字符集=utf - 85传输编码:分块6连接:维生7X-UA-Compatible:即=边缘,铬=18ETag:“7215 ee9c7d9dc229d2921a40e899ec5f”9cache - control:信息=0、私人must-revalidate10X-Request-Id: 2359 d1d5c55e06242220a2465358cac911X-Runtime:0.004253
的200好了
响应代码表明请求成功。如果你收到403
响应时,您需要验证API密钥是否有效。
本指南中的示例使用cURL创建、格式化和发送资源请求。
说过这部分
- 您必须有一个活动的Metasploit Pro许可密钥才能使用REST API。
- 每个请求必须在HTTP“令牌”报头中有一个有效的API令牌。
- 所有有效的请求都会导致
200
响应。
请求数据
每个资源都与一个URI相关联,并以名词形式命名,如“hosts”、“sessions”和“campaigns”。您可以使用已定义的URI创建资源请求。
请求的URI方案是:
旋度
1https:// < 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。