RPC API.据span title="Copy link to clipboard">
RPC API使您可以使用基于HTTP的远程过程调用(RPC)服务以编程方式驱动Metasploit框架和商业产品。RPC服务是一系列消息类型和远程方法,为外部应用程序提供了与Web应用程序交互的结构化方式。您可以使用RPC接口在本地或远程执行Metasploit命令以执行类似运行模块的基本任务,与数据库通信,与会话相互作用,导出数据和生成报告。据/p>
Metasploit产品主要是在Ruby中编写的,这是使用远程API的最简单方法。但是,除了Ruby之外,还可以使用具有支持HTTPS和MessagePack的任何语言,例如Python,Java和C,利用RPC API。据/p>
启动RPC服务器据span title="Copy link to clipboard">
在使用RPC接口之前,必须启动RPC服务器。您可以使用几种方法来取决于您正在使用的Metasploit产品。选择以下合适的方法。据/p>
为Metasploit Pro启动RPC服务器据span title="Copy link to clipboard">
使用标准Metasploit Pro安装,该服务用SSL聆听0.0.0.0:3790。SSL证书是自签名的,但是您可以根据需要将其交换为根签名证书。据/p>
如果您正在运行一个开发环境,则服务正在侦听127.0.0.1:50505,并且禁用了SSL。据/p>
使用MSGRPC启动RPC服务器的Metasploit框架据span title="Copy link to clipboard">
如果您使用的是Metasploit框架,则可以加载MSGRPC插件以启动服务器。MSGRPC插件提供了一个MessagePack接口,它在定义的端口上生成侦听器,允许您发出远程命令,以便您可以促进与Metasploit的交互。据/p>
要使用msgrpc插件,您需要启动msfconsole并运行据code class="prism-code language-text">MSF> LOAD MSGRPC据/span>命令。据/p>
如果一切顺利,您将看到以下响应,它告诉您可以用于连接到msgrpc服务器的IP地址、用户名和密码:据/p>
1据/div>
[据/span>*据/span>]据/span>MSGRPC服务据/span>:据/span>127.0据/span>.0.据/span>.1据/span>:据/span>55552据/span>
2据/div>
[据/span>*据/span>]据/span>msgrpc用户名据/span>:据/span>MSF.据/span>
3.据/div>
[据/span>*据/span>]据/span>msgrpc密码据/span>:据/span>abc123据/span>
4.据/div>
[据/span>*据/span>]据/span>成功加载插件据/span>:据/span>MSGRPC.据/span>
因为没有指定选项,所以使用默认地址(127.0.0.1)、默认端口(55552)和随机凭据。默认禁用SSL。如果您想要自定义这些设置,您可以使用load命令提供以下选项来定义地址、端口、用户名和密码,可以用于连接到服务器:据/p>
- serverhost.据/strong>—服务器监听的本地主机名。据/li>
- 服务器端口据/strong>—服务器监听的本地端口。据/li>
- 用户据/strong>—访问服务器的用户名。据/li>
- 经过据/strong>—访问服务器的密码。密码必须用单引号括起来。据/li>
- SSL据/strong>- 启用或禁用RPC套接字上的SSL。将此值设置为true或false。据/li>
例如,如果要使用User / Pass123连接到服务器,则可以输入以下命令:据code class="prism-code language-text">MSF> Load MSGRPC ServerHost = 192.168.1.0 serverport = 55553用户=用户通过='pass123'据/span>
它返回以下响应:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
[据/span>*据/span>]据/span>MSGRPC服务据/span>:据/span>192.168据/span>.1据/span>.0.据/span>:据/span>55553据/span>
2据/div>
[据/span>*据/span>]据/span>msgrpc用户名据/span>:据/span>用户据/span>
3.据/div>
[据/span>*据/span>]据/span>msgrpc密码据/span>:据/span>Pass123据/span>
4.据/div>
[据/span>*据/span>]据/span>成功加载插件据/span>:据/span>MSGRPC.据/span>
使用MSFRPCD启动Metasploit框架的RPC服务器据span title="Copy link to clipboard">
启动服务器的另一种方法是使用MSFRPCD工具,该工具使服务器能够在特定端口上侦听,并提供与Metasploit框架的RPC接口连接到它的客户端。据/p>
你需要据code class="prism-code language-text">光盘据/span>如果您是一个框架用户,或者据code class="prism-code language-text">Metasploit / apps / pro / msf3据/span>目录如果您是Pro用户,并运行以下命令:据code class="prism-code language-text"># ruby msfrpcd -U -P -f据/span>
您可以提供以下参数:据/p>
-a 据/span>
—服务器监听的本地主机名。据/li>
- p <选择>据/span>
—服务器监听的本地端口。据/li>
- u <选择>据/span>
—访问服务器的用户名。据/li>
- p <选择>据/span>
—访问服务器的密码。据/li>
- s据/span>
- 启用或禁用RPC套接字上的SSL。将此值设置为true或false。默认情况下,SSL是开启的。据/li>
- f据/span>
- 在前台运行守护程序。据/li>
例如,如果要使用“User / Pass123”连接到本地服务器,则可以输入以下命令:据code class="prism-code language-text"># ruby msfrpcd -U user -P pass123据/span>
它返回以下响应:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
[据/span>*据/span>]据/span>MSGRPC开始据/span>0.0据/span>.0.据/span>.0.据/span>:据/span>55553据/span>(据/span>SSL据/span>)据/span>:据/span>味精据/span>.据/span>.据/span>.据/span>
2据/div>
[据/span>*据/span>]据/span>MSGRPC准备就绪据/span>2015据/span>-据/span>06据/span>-据/span>04据/span>10据/span>:据/span>32.据/span>:据/span>08据/span>-据/span>0700。据/span>
连接到RPC服务器据span title="Copy link to clipboard">
现在RPC服务器已启动并运行,您可以使用MSFRPC-Client GEM或MSFRPC实用程序连接到它,具体取决于您设置服务器的方式。据/p>
连接到MSFRPC登录实用程序据span title="Copy link to clipboard">
msfrpc登录实用工具使您能够通过msfrpcd连接到RPC服务器。如果您使用msfrpcd工具启动服务器,据code class="prism-code language-text">光盘据/span>如果您是一个框架用户,或者据code class="prism-code language-text">Metasploit / apps / pro / msf3据/span>目录如果您是Pro用户,并运行以下命令以连接到服务器:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
#ruby msfrpc.据/span>-据/span>你据/span>据据/span>用户名据/span>>据/span>-据/span>P.据/span>据据/span>经过据/span>>据/span>-据/span>一种据/span>据据/span>IP地址据/span>>据/span>
您可以提供以下选项:据/p>
- p <选择>据/span>
- 访问MSFRPCD的密码。据/li>
- s据/span>
- 启用或禁用RPC套接字上的SSL。将此值设置为true或false。默认情况下,SSL是开启的。据/li>
- u <选择>据/span>
- 要访问MSFRPCD的用户名。据/li>
-a 据/span>
- 地址MSFRPCD运行。据/li>
- p <选择>据/span>
—msfrpc监听的端口。默认端口为55553。据/li>
例如,如果要连接到本地服务器,则可以输入以下命令:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
#ruby msfrpc.据/span>-据/span>你是用户据/span>-据/span>p pass123据/span>-据/span>一种据/span>0.0据/span>.0.据/span>.0.据/span>
它返回以下响应:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
[据/span>*据/span>]据/span>执行据/span>:据/span>Ruby MSFRPC.据/span>-据/span>你是用户据/span>-据/span>p pass123据/span>-据/span>一种据/span>0.0据/span>.0.据/span>.0.据/span>
2据/div>
3.据/div>
[据/span>*据/span>]据/span>这据/span>“rpc”据/span>对象保存RPC客户端界面据/span>
4.据/div>
[据/span>*据/span>]据/span>使用rpc据/span>.据/span>称呼据/span>(据/span>'group.command'据/span>)据/span>进行RPC调用据/span>
连接到Metasploit RPC Client Gem据span title="Copy link to clipboard">
如果您的客户端计算机上安装了Metasploit Pro或Metasploit框架,则可以使用Metasploit RPC客户端GEM连接到RPC服务器。GEM提供客户端访问Metasploit Pro RPC服务,并取决于Liblex和MessagePack。据/p>
要安装MSFRPC-Client GEM,客户端必须运行Ruby 2.0+。据/p>
您需要做的第一件事是安装Liblex。由于Librex文档的大小,建议您首先在没有内置文档的情况下单独安装Liblex:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
#gem安装librex据/span>--据/span>没有据/span>-据/span>rdoc.据/span>--据/span>没有据/span>-据/span>ri.据/span>
如果gem安装成功,您将看到以下内容:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
成功安装librex.据/span>-据/span>0.0据/span>.999据/span>
2据/div>
1据/span>安装了宝石据/span>
安装Liblex后,您就可以安装MSFRPC-Client GEM。要安装GEM,请执行以下命令:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
#Grem安装MSFRPC据/span>-据/span>客户端据/span>
如果gem安装成功,您将看到以下内容:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
成功安装了MSFRPC.据/span>-据/span>客户端据/span>-据/span>1.0据/span>.3.据/span>
2据/div>
解析文档据/span>为据/span>MSFRPC.据/span>-据/span>客户端据/span>-据/span>1.0据/span>.3.据/span>
3.据/div>
完成安装文档据/span>为据/span>MSFRPC.据/span>-据/span>客户之后据/span>5.据/span>秒据/span>
4.据/div>
1据/span>安装了宝石据/span>
安装gem之后,msfrpc-client库就可用了。两个示例文件msfrpc_irb。rb和msfrpc_pro_report。rb.那一种re installed along with the gem. The following commands can be used view the examples:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
#cd`Gem Env Gemdir`据/span>/据/span>宝石据/span>/据/span>MSFRPC.据/span>-据/span>客户端据/span>-据/span>*据/span>/据/span>例子据/span>
2据/div>
#ls.据/span>
3.据/div>
msfrpc_irb.据/span>.据/span>rb msfrpc_pro_report.据/span>.据/span>rb.据/span>
msfrpc_irb.rb脚本是使用API的一个很好的起点。此脚本以及msfrpc_pro_report.rb使用ruby gem公开的标准选项解析机制,允许您连接到RPC服务。据/p>
对于标准Metasploit Pro安装,所需的唯一选项是主机以及用户名和密码或身份验证令牌。下面的示例使用您为RPC服务器设置的用户帐户进行身份验证到本地Metasploit Pro实例:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
#红宝石据/span>.据/span>/据/span>msfrpc_irb.据/span>.据/span>rb.据/span>--据/span>rpc据/span>-据/span>用户用户据/span>--据/span>rpc据/span>-据/span>通过Pass123.据/span>
2据/div>
[据/span>*据/span>]据/span>RPC客户端可用据/span>在据/span>多变的据/span>“rpc”据/span>
3.据/div>
[据/span>*据/span>]据/span>成功对服务器进行身份验证据/span>
4.据/div>
[据/span>*据/span>]据/span>开始IRB壳据/span>.据/span>.据/span>.据/span>
5.据/div>
>据/span>>据/span>
您可以提供以下命令行选项来配置RPC目标。要查看选项,请运行命令据code class="prism-code language-text">msfrpc_irb.rb据/span>与据code class="prism-code language-text">- RPC-HELP.据/span>选项,如下图:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
#据/span>.据/span>/据/span>msfrpc_irb.据/span>.据/span>rb.据/span>--据/span>rpc据/span>-据/span>帮助据/span>
2据/div>
3.据/div>
使用据/span>:据/span>.据/span>/据/span>msfrpc_irb.据/span>.据/span>rb.据/span>[据/span>选项据/span>]据/span>
4.据/div>
5.据/div>
RPC选项据/span>:据/span>
6.据/div>
--据/span>rpc据/span>-据/span>主机主人据/span>
7.据/div>
--据/span>rpc据/span>-据/span>港口港口据/span>
8.据/div>
--据/span>rpc据/span>-据/span>ssl据/span>据据/span>真正的据/span>|据/span>假据/span>>据/span>
9.据/div>
--据/span>rpc据/span>-据/span>uri uri据/span>
10据/div>
--据/span>rpc据/span>-据/span>用户的用户名据/span>
11据/div>
--据/span>rpc据/span>-据/span>密码密码据/span>
12据/div>
--据/span>rpc据/span>-据/span>令牌令牌据/span>
13据/div>
--据/span>rpc据/span>-据/span>配置配置据/span>-据/span>文件据/span>
14据/div>
--据/span>rpc据/span>-据/span>帮助据/span>
用户名和密码选项可以对应于您通过msgrpc插件或Metasploit Pro用户帐户为服务器设置的凭据。作为Metasploit Pro帐户的替代方案,您可以使用身份验证令牌。据/p>
生成API令牌据span title="Copy link to clipboard">
您可以登录Metasploit Pro的web界面(https://localhost:3790),选择生成API密钥据strong>管理>全局设置据/strong>.当据em>全局设置据/em>出现页面,单击据strong>API键据/strong>标签然后单击据strong>创建API密钥据/strong>按钮。表单将要求您为API令牌提供密钥名称。提供名称后,单击据strong>创建据/strong>按钮生成令牌。据/p>
与MSFRPC-Client库的重要考虑是,身份验证令牌会自动传递给每个方法调用,因此在调用API函数(如“Core.version”)时,您无需将令牌指定为第一个参数.例如,以下代码按预期工作:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
>据/span>>据/span>rpc据/span>.据/span>称呼据/span>(据/span>“core.version”据/span>)据/span>
2据/div>
=据/span>>据/span>{据/span>“版本”据/span>=据/span>>据/span>“4.0.0-release”据/span>那据/span>“红宝石”据/span>=据/span>>据/span>“1.9.2 x86_64-linux 2010-04-28”据/span>那据/span>“API”据/span>=据/span>>据/span>“1.0”据/span>}据/span>
连接yaml文件据span title="Copy link to clipboard">
与每次连接到RPC服务时手动输入配置设置不同,您可以将配置设置存储在一个YAML文件中。YAML文件将命令行选项映射到适当的值,并允许您使用据code class="prism-code language-text">——rpc-config据/span>选项。据/p>
配置文件必须包含以下内容:据/p>
yaml.据div class="code-copy" title="Copy to clipboard">
1据/div>
选项据/span>:据/span>
2据/div>
宿主据/span>:据/span>服务器据/span>
3.据/div>
港口据/span>:据/span>3790.据/span>
4.据/div>
用户据/span>:据/span>用户名据/span>
5.据/div>
经过据/span>:据/span>密码据/span>
6.据/div>
令牌据/span>:据/span>令牌据/span>
7.据/div>
ssl据/span>:据/span>真正的据/span>
8.据/div>
uri据/span>:据/span>/api/1.0.据/span>
YAML文件示例如下:据/p>
yaml.据div class="code-copy" title="Copy to clipboard">
1据/div>
选项据/span>:据/span>
2据/div>
宿主据/span>:据/span>0.0.0.0.据/span>
3.据/div>
港口据/span>:据/span>3790.据/span>
4.据/div>
用户据/span>:据/span>用户据/span>
5.据/div>
经过据/span>:据/span>Pass123据/span>
6.据/div>
令牌据/span>:据/span>1234567890据/span>
7.据/div>
ssl据/span>:据/span>真正的据/span>
8.据/div>
uri据/span>:据/span>/api/1.0.据/span>
例如,要指向Yaml文件,您可以输入以下内容:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
#红宝石据/span>.据/span>/据/span>msfrpc_irb.据/span>.据/span>rb.据/span>--据/span>rpc据/span>-据/span>配置据/span>.据/span>/据/span>样本据/span>.据/span>yml.据/span>
与过程环境连接据span title="Copy link to clipboard">
您还可以使用进程环境来设置这些选项。只有未指定命令行选项,仅考虑环境。据/p>
相应的环境变量名称是:据/p>
- MSFRPC_HOST.据/li>
- msfrpc_port.据/li>
- msfrpc_user.据/li>
- MSFRPC_PASS据/li>
- MSFRPC_TOKEN据/li>
- MSFRPC_SSL据/li>
- MSFRPC_URI据/li>
- MSFRPC_CONFIG据/li>
调用一个API据span title="Copy link to clipboard">
要调用API,请运行:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
rpc据/span>.据/span>称呼据/span>(据/span>“pro.about”据/span>)据/span>
在该示例中,据code class="prism-code language-text">pro据/span>是处理程序的名称和据code class="prism-code language-text">关于据/span>是方法名称。据/p>
框架处理程序据span title="Copy link to clipboard">
处理程序包括“核心”,'auth','控制台','模块','session','plugin','作业'和'db'。据/p>
要查看Metasploit框架中可用的api,请执行据一种href="https://github.com/rapid7/metasploit-framework/tree/master/lib/msf/core/rpc/v10">这里据/一种>.据/p>
要查看框架处理程序在哪里注册,请访问据一种href="https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/rpc/v10/service.rb">这里据/一种>.据/p>
Pro处理程序据span title="Copy link to clipboard">
处理程序包括“职业”。据/p>
要查看Metasploit Pro中可用的API,请转到以下目录:据code class="prism-code language-text">/ path / to / metasploit / pro /发动机/ rpc据/span>.据/p>
要查看Pro处理程序的位置,请转到以下文件,据code class="prism-code language-text">/道路/ / metasploit /应用程序/ pro /供应商/包/ ruby / tripwire /珠宝/ metasploit framework——<版本> / lib / msf /核心/ services.rb据/span>,找到第50行。据/p>
设置客户端进行API调用据span title="Copy link to clipboard">
下面的例子展示了如何设置一个客户端来进行API调用:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
#设置客户端据/span>
2据/div>
3.据/div>
Request_relative.据/span>“metasploit_rpc_client”据/span>
4.据/div>
客户端据/span>=据/span>MetasploitRPCClient据/span>.据/span>新据/span>(据/span>宿主据/span>:据/span>宿主据/span>那据/span>令牌据/span>:据/span>api_token.据/span>那据/span>ssl据/span>:据/span>假据/span>那据/span>港口据/span>:据/span>50505据/span>)据/span>
验证据span title="Copy link to clipboard">
通过身份验证令牌控制对Metasploit API的访问。身份验证通常是随机生成的32字节字符串,但也可以创建ad-hoc。这些令牌有两种形式;临时和永久性。据/p>
一个临时令牌由API调用验证返回。登录,查询有效用户名和密码的内部列表。如果提供了正确的用户名和密码,则返回一个有效5分钟的令牌。每次使用这个令牌访问API方法时,都会自动扩展它。如果令牌在5分钟内未使用,则进行另一个验证调用。必须进行登录以获得新令牌。据/p>
永久令牌充当一个不会过期的API密钥。当数据库可用时,永久标记存储在数据库后端(api_keys表)中,否则存储在内存中。有两种方法可以通过API创建新的永久令牌。第一种方法是使用有效的登录进行身份验证,然后使用临时令牌调用身份验证。token_generate方法。这将在数据库后端或内存中创建一个永久令牌,具体取决于数据库是否存在。据/p>
Metasploit框架RPC服务器需要指定用户名和密码。此用户名和密码组合可以与auth.login API一起使用,以获取将授予对API其余部分的访问权限的临时令牌。据/p>
相比之下,Metasploit Pro在启动时生成永久认证令牌,并在命名的文件中存储此令牌据在stall>
/应用程序/ pro /发动机/ tmp / service.key。Metasploit Pro界面提供了通过web界面管理永久身份验证令牌的能力。据/在stall>
下面的序列演示了auth.login api以获得令牌和随后使用该令牌来调用core.version API的令牌。据/p>
客户:据/p>
贝壳据div class="code-copy" title="Copy to clipboard">
1据/div>
[据/span>“auth.login”据/span>那据/span>“用户名”据/span>那据/span>“密码”据/span>]据/span>
服务器:据/p>
json据div class="code-copy" title="Copy to clipboard">
1据/div>
{据/span>“结果”据/span>=>据/span>“成功”据/span>那据/span>“令牌”据/span>=>据/span>“a1a1a1a1a1a1a1a1”据/span>}据/span>
客户:据/p>
贝壳据div class="code-copy" title="Copy to clipboard">
1据/div>
[据/span>“core.version”据/span>那据/span>“a1a1a1a1a1a1a1a1”据/span>]据/span>
服务器:据/p>
json据div class="code-copy" title="Copy to clipboard">
1据/div>
{据/span>
2据/div>
“版本”据/span>=>据/span>“4.0.0-release”据/span>那据/span>
3.据/div>
“红宝石”据/span>=>据/span>“1.9.1 x86_64-linux 2010-01-10”据/span>
4.据/div>
}据/span>
发出请求据span title="Copy link to clipboard">
客户端请求将在标准HTTP POST中封装到特定URI,通常是“/ api”或“/ api/1.0”。此帖子请求必须具有指定为“二进制/消息包”的内容类型标题,其中包含实际RPC消息的请求主体。据/p>
请求示例如下:据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
邮政据/span>/据/span>api据/span>/据/span>1.0据/span>http.据/span>/据/span>1.1据/span>
2据/div>
宿主据/span>:据/span>RPC服务器据/span>
3.据/div>
内容据/span>-据/span>长度据/span>:据/span>128.据/span>
4.据/div>
内容据/span>-据/span>类型据/span>:据/span>二进制据/span>/据/span>消息据/span>-据/span>盒据/span>
5.据/div>
据据/span>128.据/span>编码数据的字节据/span>>据/span>
了解服务器响应据span title="Copy link to clipboard">
服务器响应是标准的HTTP响应。HTTP状态代码表示特定请求的总体结果。每个状态码的含义如下:据/p>
- 200据/strong>- 该请求已成功处理据/li>
- 500据/strong>—请求导致错误据/li>
- 401据/strong>- 提供的身份验证凭据无效据/li>
- 403据/strong>- 提供的身份验证凭据未授予对资源的访问权限据/li>
- 404据/strong>- 请求已发送到无效的URI据/li>
在所有情况下,除了404结果,详细的响应都将包含在消息体中。据/p>
除了404响应格式之外,响应内容类型将始终是“二进制/消息包”,在这种情况下,主体可以包含HTML文档。据/p>
样品响应如下所示据/p>
http据div class="code-copy" title="Copy to clipboard">
1据/div>
http / 1.1 200确定据/span>
2据/div>
内容长度:1024据/span>
3.据/div>
内容类型:二进制/消息包据/span>
4.据/div>
<1024字节的编码数据>据/span>
编码请求和响应据span title="Copy link to clipboard">
所有请求和响应使用MessagePack编码(据一种href="http://www.msgpack.org/">http://www.msgpack.org/据/一种>)。此编码提供了一种有效,二进制安全的方法来传输嵌套数据类型。MessagePack提供了许多不同语言的实现,所有这些都在Apache开源许可证下。据/p>
MessagePack规范仅限于一小组数据类型。因此,非本机类型(例如日期)表示为整数或字符串。由于MessagePack将字符串视为二进制字符阵列,因此使用此编码使用Unicode友好语言时需要进行特别小心。例如,在Java中,请求和从响应中解码的字符串应始终使用字节数组类型。据/p>
MessagePack编码数组的示例如下:据/p>
贝壳据div class="code-copy" title="Copy to clipboard">
1据/div>
[据/span>“abc”据/span>那据/span>1据/span>那据/span>2据/span>那据/span>3.据/span>]据/span>.to_msgpack.据/span>(据/span>)据/span>
2据/div>
据/span>“据/span>\ x94据/span>\ xa3.据/span>\ x41据/span>\ x42据/span>\ x43据/span>\ x01.据/span>\ x02据/span>\ x03据/span>“据/span>
编码请求据span title="Copy link to clipboard">
请求被格式化为MessagePack编码的数组。具体形式是据code class="prism-code language-text">["MethodName", "Parameter1", "Parameter2",…]据/span>.据/p>
除了身份验证API之外,所有方法都希望身份验证令牌作为请求数组的第二个元素,其余参数由特定方法定义。虽然大多数方法使用字符串和整数作为参数,但也可以提供嵌套数组和散列。接受条目列表作为输入的方法通常希望将其作为由元素数组组成的单个参数,而不是每个元素的单独参数。有些方法可能接受由包含特定选项的散列组成的参数。据/p>
对身份验证方法的调用可以采用以下形式:据/p>
贝壳据div class="code-copy" title="Copy to clipboard">
1据/div>
[据/span>“auth.login”据/span>那据/span>“用户名”据/span>那据/span>“密码”据/span>]据/span>
对版本方法的调用可以采用以下形式:据/p>
贝壳据div class="code-copy" title="Copy to clipboard">
1据/div>
[据/span>“core.version”据/span>那据/span>“<令牌>”据/span>]据/span>
对更复杂的方法的调用可以采用以下形式:据/p>
贝壳据div class="code-copy" title="Copy to clipboard">
1据/div>
[据/span>“modules.search”据/span>那据/span>“<令牌>”据/span>那据/span>{据/span>
2据/div>
“包括”据/span>=据/span>>据/span>[据/span>“剥削”据/span>那据/span>“有效载荷”据/span>]据/span>那据/span>
3.据/div>
“关键词”据/span>=据/span>>据/span>[据/span>“视窗”据/span>]据/span>那据/span>
4.据/div>
“最大”据/span>=据/span>>据/span>200据/span>
5.据/div>
}据/span>]据/span>
编码答案据span title="Copy link to clipboard">
响应使用与请求的相同的MessagePack编码,并且始终以哈希的形式返回,也称为字典。如果此哈希包含具有true的值的“错误”元素,则有关错误的其他信息将存在于散列字段中,否则,散列将包含API调用的结果。据/p>
成功的回应样本如下:据/p>
json据div class="code-copy" title="Copy to clipboard">
1据/div>
{据/span>
2据/div>
“版本”据/span>=>据/span>“4.0.0-release”据/span>那据/span>
3.据/div>
“红宝石”据/span>=>据/span>“1.9.1 x86_64-linux 2010-01-10”据/span>
4.据/div>
}据/span>
示例误差响应如下所示:据/p>
json据div class="code-copy" title="Copy to clipboard">
1据/div>
{据/span>
2据/div>
“错误”据/span>=>据/span>真正的据/span>那据/span>
3.据/div>
“error_class”据/span>=>据/span>“ArgumentError”据/span>那据/span>
4.据/div>
“error_message”据/span>=>据/span>“未知的API调用”据/span>
5.据/div>
}据/span>
嵌套数据的成功响应示例如下所示:据/p>
json据div class="code-copy" title="Copy to clipboard">
1据/div>
{据/span>
2据/div>
“姓名”据/span>=>据/span>“Microsoft服务器服务栈损坏”据/span>那据/span>
3.据/div>
“描述”据/span>=>据/span>“此模块利用了解析缺陷……”据/span>那据/span>
4.据/div>
“执照”据/span>=>据/span>Metasploit Framework License (BSD)据/span>那据/span>
5.据/div>
“文件路径”据/span>=>据/span>“/modules/exploits/windows/smb/ms08_067_netapi.rb”据/span>那据/span>
6.据/div>
“版本”据/span>=>据/span>“12540”据/span>那据/span>
7.据/div>
“秩”据/span>=>据/span>500据/span>那据/span>
8.据/div>
“引用”据/span>=>据/span>
9.据/div>
[据/span>
10据/div>
[据/span>“cve”据/span>那据/span>“2008-4250”据/span>]据/span>那据/span>
11据/div>
[据/span>“osvdb”据/span>那据/span>“49243”据/span>]据/span>那据/span>
12据/div>
[据/span>“最高有效位”据/span>那据/span>“MS08-067”据/span>]据/span>
13据/div>
]据/span>那据/span>
14据/div>
“作者”据/span>=>据/span>
15据/div>
[据/span>
16据/div>
“hdm ”据/span>那据/span>
17.据/div>
“布雷特摩尔< brett.moore@insomniasec.com > "据/span>那据/span>
18.据/div>
]据/span>那据/span>
19.据/div>
“目标”据/span>=>据/span>
20.据/div>
{据/span>
21.据/div>
0.据/span>=>据/span>“自动瞄准”据/span>那据/span>
22.据/div>
1据/span>=>据/span>“Windows 2000 Universal”据/span>那据/span>
23.据/div>
2据/span>=>据/span>“Windows XP SP0 / SP1通用”据/span>那据/span>
24.据/div>
3.据/span>=>据/span>“Windows XP SP2英语(NX)”据/span>那据/span>
25.据/div>
4.据/span>=>据/span>"Windows XP SP3 English (NX)"据/span>
26.据/div>
}据/span>
27.据/div>
“default_target”据/span>=>据/span>0.据/span>
版本控制API端点据span title="Copy link to clipboard">
API URL中的最后一个参数是请求的版本号。为了为将来的版本准备代码,建议您添加据code class="prism-code language-text">/1.0据/span>或者任何你测试过的API版本。对不带版本号的裸API URL的请求将导致用于处理该请求的API的最新版本。例如,下面的请求将请求应该使用API的1.1版本。据/p>
ruby据div class="code-copy" title="Copy to clipboard">
1据/div>
邮政据/span>/据/span>api据/span>/据/span>1.1据/span>http.据/span>/据/span>1.1据/span>
2据/div>
宿主据/span>:据/span>RPC服务器据/span>
3.据/div>
内容据/span>-据/span>长度据/span>:据/span>128.据/span>
4.据/div>
内容据/span>-据/span>类型据/span>:据/span>二进制据/span>/据/span>消息据/span>-据/span>盒据/span>
5.据/div>
据据/span>128.据/span>编码数据的字节据/span>>据/span>