标准API方法参考

下面的API方法可在Metasploit产品的所有版本中获得。所有API功能都使用命名约定<组> <方法>。所有产品版本都共享Metasploit框架中定义的基本API组。Metasploit Pro提供了许多额外的API,用于访问Pro功能。有关Pro API的更多信息,请参阅Pro API方法参考

有关标准API更深入的了解,请查看在线开发人员文档

身份验证

身份验证API提供登录和管理身份验证令牌的方法。可以在没有有效身份验证令牌的情况下访问的唯一API是Auth.Login,反而返回令牌。

所有API用户都被视为管理用户,可以轻松地访问底层操作系统。出于这个原因,您应该始终保护API密钥,就像它们授予Metasploit运行所在系统的根访问权限一样。

Auth.login.

该auth.login方法允许提供的用户名和密码这反过来授予使用临时认证令牌调用者。这个认证令牌过期用它制成的最后一个请求之后五分钟。

句法

Auth.login.(String: Username, String: Password)

请求成功实例

客户:

         
贝壳
1
[“auth.login”“myusername”“我的密码”]

服务器:

         
杰森
1
{“结果”=>“成功”“令牌”=>“a1a1a1a1a1a ......”}

不成功的请求例子

客户:

         
贝壳
1
[“auth.login”“myusername”“BadPassword”]

服务器:

         
杰森
1
{
2
“错误”=>真的
3.
“error_class”=>“MSF :: RPC :: Expression”
4.
“错误信息”=>“无效的用户名或密码”
5.
}

auth.logout.

auth.logout方法将从身份验证令牌列表中删除指定的令牌。请注意,此方法可用于禁用任何临时令牌,而不仅仅是当前用户使用的令牌。当指定了永久令牌时,此方法仍将返回“成功”,但不会删除永久标记。

成功要求

客户:

         
贝壳
1
[“auth.logout”“<令牌>”]

服务器:

         
杰森
1
{“结果”=>“成功”}

不成功的要求

客户:

         
贝壳
1
[“auth.logout”“<令牌>”“badtoken”]

服务器:

         
杰森
1
{
2
“错误”=>真的
3.
“error_class”=>“MSF :: RPC :: Expression”
4.
“错误信息”=>“无效的认证令牌”
5.
}

auth.token_add.

auth.token_add将一个任意字符串添加为有效的永久认证令牌。此令牌可用于所有未来的身份验证目的。此方法永远不会返回错误,因为将忽略与现有名称的现有令牌的冲突。

客户:

         
贝壳
1
[“auth.token_add”“<令牌>”]

服务器:

         
杰森
1
{“结果”=>“成功”}

auth.token_generate.

该auth.token_generate方法将创建一个随机的32字节的认证令牌,添加此令牌经过认证的列表,并返回该令牌给调用者。如果使用有效的身份验证令牌,此方法将永远不会返回错误。

客户:

         
贝壳
1
[“auth.token_generate”“<令牌>”]

服务器:

         
杰森
1
{“结果”=>“成功”“令牌”=>“a1a1a1a1a1a ......”}

auth.token_list.

auth.Token_List方法将返回所有令牌的数组,包括存储在内存和永久令牌中的临时令牌,存储在内存中或后端数据库中。如果使用有效的身份验证令牌,此方法将永远不会返回错误。

客户:

         
贝壳
1
[“auth.token_list”“<令牌>”]

服务器:

         
杰森
1
{“令牌”=>[“令牌1”“令牌2”“令牌3”]}

auth.token_remove

auth.token_remove方法将删除指定的令牌。这将适用于临时和永久令牌,包括存储在数据库后端的那些。如果使用有效的身份验证令牌,此方法将永远不会返回错误。

客户:

         
贝壳
1
[“auth.token_remove”“<令牌>”]

服务器:

         
杰森
1
{“结果”=>“成功”}

Core API提供了用于管理框架对象中的全局变量的方法,将当前配置保存到磁盘,操作模块加载路径,重新加载所有模块,管理背景线程和检索服务器版本。

core.add_module_path.

此方法提供了将新的本地文件系统目录(本地到服务器)添加为模块路径的方法。这可以用来通过API动态加载单独的模块树。运行Metasploit服务的用户ID必须可以访问该路径,并包含每个模块类型(exploit、nop、encoder、payload、auxiliary、post)的顶级目录。模块路径将立即扫描新模块,加载成功的模块将立即可用。注意,这将不会卸载从文件系统中删除的模块,因为以前加载过(要删除所有已删除的模块,核心。应该使用Reload_modules方法)。如果指定的路径不存在,此模块可能会引发错误响应。

客户:

         
贝壳
1
[“core.add_module_path”“<令牌>”]

服务器:

         
杰森
1
{
2
'漏洞'=>800
3.
'辅助'=>300
4.
'后'=>200.
5.
'编码器'=>30.
6.
'的NOP'=>25.
7.
'有效载荷'=>250.
8.
}

core.module_stats.

此方法返回加载的模块数,按类型分解。

客户:

         
贝壳
1
[“core.module_stats”“<令牌>”]

服务器:

         
杰森
1
{
2
'漏洞'=>800
3.
'辅助'=>300
4.
'后'=>200.
5.
'编码器'=>30.
6.
'的NOP'=>25.
7.
'有效载荷'=>250.
8.
}

core.reload_modules.

此方法提供了一种从所有已配置的模块路径转储和重新加载所有模块的方法。这是清除先前加载的模块的唯一方法,即呼叫者想要删除。此方法可能需要很长时间才能在慢速服务器上返回一分钟。

客户:

         
贝壳
1
[“core.reload_modules”“<令牌>”]

服务器:

         
杰森
1
{
2
'漏洞'=>800
3.
'辅助'=>300
4.
'后'=>200.
5.
'编码器'=>30.
6.
'的NOP'=>25.
7.
'有效载荷'=>250.
8.
}

Core.Save.

此方法导致框架实例的当前全局数据存储存储到服务器的磁盘,通常在〜/ .msf3 / config中。默认情况下,将加载此配置,下一个时间由该服务器上的该用户启动MetasPloit。

客户:

         
贝壳
1
[“core.save”“<令牌>”]

服务器:

         
杰森
1
{“结果”=>“成功”}

core.setg

此方法提供了一种在服务器的框架实例中设置全局数据存储值的方法。可以设置的事物的示例包括Loglevel等常规全局,也包括从这一点开始推出的任何模块的后备。例如,可以设置代理全局选项,这表明从该点启动的所有模块都应该通过特定的代理链,除非专门为该模块覆盖了代理选项。

客户:

         
贝壳
1
[“core.setg”“<令牌>”]

服务器:

         
杰森
1
{“结果”=>“成功”}

core.unsetg

此方法是Core.Setg的对应物,因为它提供了一种解开(删除)先前已配置的全局选项的方法。

客户:

         
贝壳
1
[“core.unsetg”“<令牌>”]

服务器:

         
杰森
1
{“结果”=>“成功”}

core.thread_list.

此方法将返回列表所有背景线程的状态以及可用于关闭线程的ID号。

客户:

         
贝壳
1
[“core.thread_list”“<令牌>”]

服务器:

         
杰森
1
{
2
0.=>
3.
{
4.
“地位”=>“睡觉”
5.
“危急”=>真的
6.
“姓名”=>“SessionScheduler-1”
7.
“开始”=>“2011-05-29 15:36:03 -0500”
8.
}
9.
1=>
10.
{
11.
“地位”=>“睡觉”
12.
“危急”=>真的
13.
“姓名”=>“SessionScheduler-2”
14.
“开始”=>“2011-05-29 15:36:03 -0500”
15.
}
16.
}

core.thread_kill.

此方法可用于杀死错误的背景线程。ThreotID应匹配Core.Thread_List方法返回的内容。即使不存在指定的线程,此方法仍将返回成功。

客户:

         
贝壳
1
[“core.thread_kill”“<令牌>”]

服务器:

         
杰森
1
{“结果”=>“成功”}

核心.version.

此方法返回有关运行框架实例,Ruby解释器和正在使用的RPC协议版本的基本版本信息。

客户:

         
贝壳
1
[“core.version”“<令牌>”]

服务器:

         
杰森
1
{
2
“版本”=>“4.0.0-释放”
3.
“红宝石”=>“1.9.1 x86_64-linux 2010-01-10”
4.
“API”=>“1.0”
5.
}

核心

此方法将导致Metasploit服务器的立即关闭。这只应该在更好的控制机制不可用的极端情况下使用。请注意,调用者甚至可能甚至没有接收响应,具体取决于服务器被杀死的速度。

客户:

         
贝壳
1
[“core.stop”“<令牌>”]

服务器:

         
杰森
1
{“结果”=>“成功”}

安慰

控制台API提供了与Metasploit框架控制台分配和工作的功能。除了能够发送命令和读取输出之外,这些方法还会暴露标签完成后端,也能够分离和杀死交互式会话。请注意,控制台提供了执行本地Metasploit框架控制台用户可能执行的任何操作的能力,包括运行系统命令。

控制台。创建

console.create方法用于分配新的控制台实例。服务器将返回读取,写入和否则与新控制台互动所需的控制台ID(“ID”)。返回值中的“提示”元素表示控制台的当前提示,其可以包括终端序列。最后,返回值的“忙”元素确定控制台是否仍在处理最后一个命令(在这种情况下,它始终是假的)。请注意,虽然控制台ID当前整数作为字符串存储,但这些可能会在将来变为字母数字字符串。呼叫者应该将控制台ID视为唯一字符串,而不是整数,无论​​可能。

客户:

         
贝壳
1
[“console.create”“<令牌>”]

服务器:

         
杰森
1
{
2
“id”=>“0”
3.
“迅速的”=>“无国界医生>”
4.
“忙碌的”=>错误的
5.
}

console.destroy

console.destroy方法通过控制台ID删除运行的控制台实例。在呼叫者完成以防止服务器端泄漏后,应始终销毁游戏机。如果指定了无效的控制台ID,则“excult”元素将设置为与“成功”相反的字符串“故障”。

客户:

         
贝壳
1
[“console.destroy”“<令牌>”“ConsoleID”]

服务器:

         
杰森
1
{“结果”=>“成功”}

console.list.

控制台。list方法将返回所有现有Console id、它们的状态和它们的提示的散列。

客户:

         
贝壳
1
[“console.list”“<令牌>”]

服务器:

         
杰森
1
{
2
“0”=>{
3.
“id”=>“0”
4.
“迅速的”=>“MSF Exploit(\ x01 \ x02 \ x01 \ x02handler \ x01 \ x02)>”
5.
“忙碌的”=>错误的
6.
}
7.
“1”=>{
8.
“id”=>“1”
9.
“迅速的”=>“无国界医生>”
10.
“忙碌的”=>真的
11.
}
12.
}

console.write

Console.Write方法将数据发送到特定控制台,就像它已被普通用户键入一样。这意味着大多数命令都需要在结束时包含的换行符,以便正确处理它们。

客户:

         
贝壳
1
[“console.write”“<令牌>”“0”“版本\ n]

服务器:

         
杰森
1
{“写道”=>8.}

console.read.

console.read方法将返回当前尚未读取的控制台的任何输出。数据以实际控制台打印的原始表单返回。请注意,新分配的控制台将具有可用于读取的初始横幅。

客户:

         
贝壳
1
[“console.read”“<令牌>”“0”]

服务器:

         
杰森
1
{
2
“数据”=>“框架:4.0.0-refory.14644 [..] \ n”
3.
“迅速的”=>“无国界医生>”
4.
“忙碌的”=>错误的
5.
}

console.session_detach.

控制台。方法模拟用户使用控制+Z.快捷方式的背景中使用Metasploit框架控制台的交互式会话。此方法可用于通过一个输入的交互式会话之后返回到主Metasploit的提示会话 - 我控制台命令或通过利用。

客户:

         
贝壳
1
[“console.session_detach”“<令牌>”“ConsoleID”]

服务器:

         
杰森
1
{“结果”=>“成功”}

console.session_kill.

控制台。方法模拟用户使用控制+C快捷方式中止Metasploit框架控制台中的交互式会话。此方法仅在a之后使用会话 - 我已编写命令或通过控制台API调用Exproit。在大多数情况下,会话API方法是对会话终止的更好方法,而Console.Session_Detach方法是更好的方法可以删除主Metasploit控制台。

客户:

         
贝壳
1
[“console.session_kill”“<令牌>”“ConsoleID”]

服务器:

         
杰森
1
{“结果”=>“成功”}

console.tabs.

控制台。tabs命令模拟用户在Metasploit框架控制台中按tab键。此方法将接受当前的输入行,并返回交互式控制台中可用的制表符补全选项。这允许API调用者通过这个接口模拟选项卡完成。例如,将新分配的控制台的InputLine设置为“hel”将返回一个带有该选项的元素数组帮助

客户:

         
贝壳
1
[“console.tabs”“<令牌>”“ConsoleID”“inputline”]

服务器:

         
杰森
1
{“标签”=>[“选项1”“申请2”“申请3”}

工作

Jobs API提供了列出作业、获取关于特定作业的更多信息以及终止特定作业的方法。这些方法等同于工作命令。作业通常用于管理后台模块。

Job.List.

Job.List方法将返回一个哈希,由作业ID键入每个活动作业。工作ID是终止或获取有关特定作业的更多信息。

客户:

         
贝壳
1
[“job.list”“<令牌>”]

服务器:

         
杰森
1
{“0”=>“攻击:窗口/浏览器/ ms03_020_ie_objecttype”}

Job.Info.

Job.Info方法将返回有关特定作业的其他数据。这包括与作业相关联的模块的开始时间和完整数据存储。

客户:

         
贝壳
1
[“Job.Info”“<令牌>”“作业ID”]

服务器:

         
杰森
1
{
2
“JID”=>0.
3.
“姓名”=>“攻击:窗口/浏览器/ ms03_020_ie_objecttype”
4.
“开始时间”=>1306708444
5.
“Uripath”=>“/ ahdzfe1i3v”
6.
“数据存储”=>{
7.
“EnableContextenCoding”=>错误的
8.
“disablepayloadhandler”=>错误的
9.
“ssl”=>错误的
10.
“sslversion”=>“ssl3”
11.
“srvhost”=>“0.0.0.0”
12.
“srvport”=>“8080”
13.
“有效载荷”=>“Windows / MeterPreter / Reverse_tcp”
14.
“lhost”=>“192.168.35.149”
15.
“lport”=>“4444”
16.
}
17.
}

job.stop

Job.Stop方法将终止作业ID指定的作业。

客户:

         
贝壳
1
[“job.stop”“<令牌>”“作业ID”]

服务器:

         
杰森
1
{“结果”=>“成功”}

模块

模块API提供了列出模块的能力,枚举其选项,识别兼容的有效载荷,实际运行它们。所有模块类型共享相同的API组,当请求否则含糊不清时,模块类型将作为参数传递。

module.exploits

该module.exploits方法返回加载的所有名单在开发框架实例模块。请注意开发/前缀不包括在返回模块的路径名。

客户:

         
贝壳
1
[“module.exploits”“<令牌>”]

服务器:

         
杰森
1
{“模块”=>[
2
“Linux / Pop3 / Cyrus_pop3d_popsubfolders”
3.
“linux / ids / snortbopre”
4.
[......]
5.
]
6.
}

module.auxiliary

Module.auxiliary方法返回框架实例中的所有加载辅助模块的列表。请注意辅助的/前缀不包括在返回模块的路径名。

客户:

         
贝壳
1
[“模块.Auxiliary”“<令牌>”]

服务器:

         
杰森
1
{“模块”=>[
2
“pdf / foxit / authbypass”
3.
“管理/摩托罗拉/ wr850g_cred”
4.
“admin / oracle / post_exploitation / win32exec”
5.
[......]
6.
]
7.
}

module.post.post.

module.post方法返回框架实例中所有已加载的后模块的列表。请注意邮政/前缀不包括在返回模块的路径名。

客户:

         
贝壳
1
[“module.post”“<令牌>”]

服务器:

         
杰森
1
{“模块”=>[
2
“多/聚集/ env”
3.
“Windows / Escalate / ByPassuac”
4.
[......]
5.
]
6.
}

module.payloads.

module.payloads方法返回框架实例中所有加载的有效载荷模块的列表。请注意有效载荷/前缀不包括在返回模块的路径名。

客户:

         
贝壳
1
[“module.payloads”“<令牌>”]

服务器:

         
杰森
1
{“模块”=>[
2
“linux / armle / exec”
3.
“linux / armle / shell_reverse_tcp”
4.
[......]
5.
]
6.
}

module.encoders.

module.encoders方法返回框架实例中所有加载的编码器模块的列表。请注意编码器/前缀不包括在返回模块的路径名。

客户:

         
贝壳
1
[“module.encoders”“<令牌>”]

服务器:

         
杰森
1
{“模块”=>[
2
“mipsbe / longxor”
3.
“sparc / longxor_tag”
4.
[......]
5.
]
6.
}

module.nops.

module.nops方法返回框架实例中所有加载的NOP模块的列表。请注意NOP /前缀不包括在返回模块的路径名。

客户:

         
贝壳
1
[“module.nops”“<令牌>”]

服务器:

         
杰森
1
{“模块”=>[
2
“扶手/简单”
3.
“sparc /随机”
4.
[......]
5.
]
6.
}

module.info.

Module.Info方法返回有关指定模块的详细信息的散列。模型应该是一个“漏洞”,“辅助”,“帖子”,“有效载荷”,“编码器”和“NOP”。modulename可以包括模块类型前缀(开发/) 或不。

客户:

         
贝壳
1
[“module.info”“<令牌>”“moduleType”“modulename”]

服务器:

         
杰森
1
{
2
“姓名”=>“SPARC NOP生成器”
3.
“描述”=>“SPARC NOP生成器”
4.
“执照”=>“Metasploit框架许可证(BSD)”
5.
“文件路径”=> /modules/nops/sparc/random.rb”
6.
“版本”=>“10394”
7.
“秩”=>300
8.
“参考”=>[]
9.
“作者”=>[“vlad902 ]
10.
}

module.options

该module.options方法返回的指定模块数据存储区选择的散列。模型应该是一个“漏洞”,“辅助”,“帖子”,“有效载荷”,“编码器”和“NOP”。modulename可以包括模块类型前缀(开发/) 或不。

客户:

         
贝壳
1
[“module.options”“<令牌>”“moduleType”“modulename”]

服务器:

         
杰森
1
{
2
“ssl”=>{
3.
“类型”=>“bool”
4.
“必需的”=>错误的
5.
“先进的”=>真的
6.
“逃避”=>错误的
7.
“desc”=>“谈判出传出连接的SSL”
8.
“默认”=>错误的
9.
}
10.
“sslversion”=>{
11.
“类型”=>“枚举”
12.
“必需的”=>错误的
13.
“先进的”=>真的
14.
“逃避”=>错误的
15.
“desc”=>“指定版本…”
16.
“默认”=>“ssl3”
17.
“枚举”=>[“ssl2”“ssl3”“TLS1”]
18.
}
19.
}

module.compatible_payloads.

Module.compatible_payloads方法返回与指定的exproit模块名称兼容的有效负载列表。

客户:

         
贝壳
1
[“module.compatible_payloads”“<令牌>”“modulename”]

服务器:

         
杰森
1
{
2
“有效载荷”=>[
3.
“generic / debug_trap”
4.
“通用/ shell_bind_tcp”
5.
“generic / shell_reverse_tcp”
6.
]
7.
}

module.target_compatible_payloads

模块。Target_compatible_payloads方法与module.compatible_payloads方法相似,它返回一个匹配的有效载荷列表,但是,它限制那些有效载荷将为特定的利用目标工作。对于可以攻击多个平台和操作系统的exploit模块,这是在选定目标后用于获取可用有效负载列表的方法。

客户:

         
贝壳
1
[“module.target_compatible_payloads”“<令牌>”“modulename”1]

服务器:

         
杰森
1
{
2
“有效载荷”=>[
3.
“generic / debug_trap”
4.
“通用/ shell_bind_tcp”
5.
“generic / shell_reverse_tcp”
6.
]
7.
}

module.compatible_sessions.

Module.compatible_sessions方法返回与指定的帖子模块名称兼容的有效负载列表。

客户:

         
贝壳
1
[“module.compatible_sessions”“<令牌>”“modulename”]

服务器:

         
杰森
1
{“会话”=>[
2
“1”
3.
“2”
4.
]
5.
}

模块。encode(String: Data, String: EncoderModule, Hash: Options)

该module.encode方法提供了一种编码具有特定的编码器和选项集合的任意的有效载荷(被指定为数据)。可用选项包括:

  • 格式- 此选项可用于指定输出格式,例如“EXE”,“VBS”或“RAW”。
  • 糟糕- 此选项可用于指定要避免在编码中的原始字节列表。
  • 平台- 此选项可用于设置编码器的操作系统平台。
  • - 此选项可用于设置编码器的体系结构。
  • ecount.- 此选项指定要完成编码的遍数。

对于“exe”格式,可提供以下其他选项:

  • 阿尔齐- 用于输出文件的特定可执行模板文件的名称。
  • exedir.-用于查询输出文件的模板的备用目录的名称。
  • 注入- 布尔表示是否将有效载荷注入新线程。

客户:

         
贝壳
1
[“module.encode”“<令牌>”“数据”“EncoDermodule”{
2
“选项1”=>“value1”
3.
“申请2”=>“value2”
4.
}
5.
]

服务器:

         
杰森
1
{“编码”=>“<原始输出数据>”}

module.execute.execute.

Module.execute方法提供了一种启动Exproit,运行辅助模块的方法,触发会话上的帖子模块,或生成有效载荷。模型应该是一个“漏洞”,“辅助”,“帖子”和“有效载荷”。modulename可以包括模块类型前缀(开发/) 或不。数据存储是必须在执行之前应用于模块的全套数据存储选项。

在利用,辅助或后模块的情况下,服务器响应将返回运行模块的作业ID:

客户:

         
贝壳
1
[“module.execute”“<令牌>”“moduleType”“modulename”{
2
“rhost”=>“1.2.3.4”
3.
“RPORT”=>“80”
4.
}
5.
]

服务器:

         
杰森
1
{“JOB_ID”=>1}

在有效载荷模块的情况下,解析了许多其他选项,包括有效载荷本身的数据存储。这些选项是:

  • BadChars- 从有效载荷中被编码所需的字节列表
  • 格式- 输出格式净荷应转换为(“EXE”,“红宝石”,“C”)
  • Forcencoding.- 一个布尔表示应该是否应该进行编码,即使字节也正常
  • 模板- exe输出的模板文件的路径
  • 平台- 编码器的操作系统平台
  • 守门员-一个布尔值,表示是否注入新线程
  • 闷蛋- 前缀强制性NOP SLED的大小(默认为0)
  • 迭代- 通过编码圆形的数量

响应由原始有效载荷数据组成:

客户:

         
贝壳
1
[“module.execute”“<令牌>”“moduleType”“modulename”{
2
“lhost”=>“4.3.2.1”
3.
“lport”=>“4444”
4.
}
5.
]

服务器:

         
杰森
1
{“有效载荷”=>“<原始有效载荷数据>”}

插件

插件API提供加载,卸载和列出加载插件的能力。

plugin.load.load.

该plugin.load方法将加载在框架实例指定的插件。该选项参数可用于指定初始化选项的插件。各个选项是为每个插件不同。失败的负​​载将导致此方法返回“失败”的“结果”值。

客户:

         
贝壳
1
[“plugin.load”“<令牌>”“PluginName”{
2
“选项1”=>“value1”
3.
“申请2”=>“value2”
4.
}
5.
]

服务器:

         
杰森
1
{“结果”=>“成功”}

plugin.unload

plugin.unload方法将按名称卸载先前加载的插件。名称与首先要加载插件的字符串并不总是相同的,因此呼叫者应在存在任何混淆时检查插件的输出。失败的负​​载将导致此方法返回“失败”的“结果”值。

客户:

         
贝壳
1
[“plugin.unload”“<令牌>”“PluginName”]

服务器:

         
杰森
1
{“结果”=>“成功”}

plugin.loaded

插件。方法将枚举所有当前加载的插件。

客户:

         
贝壳
1
[“plugin.loaded”“<令牌>”]

服务器:

         
杰森
1
{“插件”=>[“plugin1”“plugin2”“plugin3”]}

会话

会话API用于列出,与之交互,并终止打开会话以损害系统。Session.List返回的会话ID用于唯一标识给定会话。请注意,用于识别Metasploit Pro用户界面中的会话的数据库ID被转换为框架实例 - 本地会话ID以供PROF。

session.list.

此方法将列出框架实例中的所有活动会话。

客户:

         
贝壳
1
[“session.list”“<令牌>”]

服务器:

         
杰森
1
{
2
“1”=>{
3.
'type'=>“贝壳”
4.
“tunnel_local”=>“192.168.35.149:44444”
5.
“tunnel_peer”=>“192.168.35.149:43886”
6.
“via_exploit”=>“利用/多/处理程序”
7.
“via_payload”=>“Payload / Windows / shell_reverse_tcp”
8.
“desc”=>“命令shell”
9.
“信息”=>
10.
“工作区”=>“项目1”
11.
“target_host”=>
12.
“用户名”=>“根”
13.
“uuid”=>“hjahs9kw”
14.
“exploit_uuid”=>“gcprpj2a”
15.
“路线”=>[]
16.
}
17.
}

session.stop.stop.

会话。stop方法将终止SessionID参数中指定的会话。

客户:

         
贝壳
1
[“session.stop”“<令牌>”“sessionid”]

服务器:

         
杰森
1
{“结果”=>“成功”}

session.shell_read.

shell.read方法提供了从shell会话中读取输出的能力。从3.7.0版本中,shell会话还要环冲其输出,允许多个呼叫者从一个会话中读取而不会丢失数据。这是通过可选的ReadPointer参数实现的。如果这个参数没有给出(或设置为0),则服务器将与所有缓冲的数据和一个新的读指针(作为回复的“SEQ”元件)回复。如果呼叫者将此ReadPointer传递到后续调用shell.read的调用中,只有以前读取的返回以来的数据。通过继续跟踪最后一个呼叫返回的ReadPointer并将其传递到下一个呼叫中,多个读者均可在没有冲突的情况下遵循单个会话的输出。

客户:

         
贝壳
1
[“session.shell_read”“<令牌>”“sessionid”,“ReadPointer.]

服务器:

         
杰森
1
{
2
“seq”=>“32”
3.
“数据”=>“UID = 0(root)GID = 0(root)......”
4.
}

session.shell_write

shell.write方法提供将数据写入活动shell会话的功能。

大多数会话需要在处理命令之前终止换行符。

客户:

         
贝壳
1
[“session.shell_write”“<令牌>”“sessionid”“ID\ n]

服务器:

         
杰森
1
{“write_count”=>“3”}

session.meterpreter_write.

session.meterpeter_write方法提供了在MeterPreter控制台中的功能写入命令。这模拟了用户如何从Metasploit框架控制台与仪表级会话交互。请注意,通过此方法写入和读取到相同的仪表会话的多个并发呼叫者可能会导致冲突,其中一个呼叫者获取其他呼叫者输出,反之亦然。通过运行帖子模块或脚本,最好地处理对仪表会话的并发访问。除非控制台当前与交互式频道相关联,否则不需要指定换行符,例如子shell。

客户:

         
贝壳
1
[“session.meterpreter_write”“<令牌>”“sessionid”“PS”]

服务器:

         
杰森
1
{“结果”=>“成功”}

session.meterpreter_read.

会话。meterpreter_read方法提供从Meterpreter会话控制台中读取挂起输出的能力。如会议所述。meterpreter_write文档中,当涉及到由多个调用者并发访问时,这个方法是有问题的,应该使用Post模块或脚本。

客户:

         
贝壳
1
[“session.meterpreter_read”“<令牌>”“sessionid”]

服务器:

         
杰森
1
{“数据”=>“原始控制台输出> <”}

session.meterpreter_run_single.

该session.meterpreter_run_single方法提供运行单个Meterpreter就会控制台命令的能力。这种方法不需要以换行符终止。到session.meterpreter_run_single超过session.meterpreter_write的优点是,此方法将总是运行在与Meterpreter命令,即使绑这个会议控制台与渠道互动。

客户:

         
贝壳
1
[“session.meterpreter_run_single”“<令牌>”“sessionid”“PS”]

服务器:

         
杰森
1
{“结果”=>“成功”}

session.meterpretter_script.

会话。meterpreter_script方法提供在指定会话上运行Meterpreter脚本的能力。此方法不提供为脚本指定参数的方法,而是提供会话指定参数的方法。Metepreter_run_single方法可以处理这种情况。

客户:

         
贝壳
1
[“session.meterpreter_script”“<令牌>”“sessionid”“scriptname”]

服务器:

         
杰森
1
{“结果”=>“成功”}服务器{“结果”=>“成功”}

session.meterpreter_session_detach

session.meterpreter_session_detach方法通过与指定的meterPreter会话相关联的控制台停止使用的当前通道或子外壳交互。这模拟控制台用户按下控制+Z.热键。

客户:

         
贝壳
1
[“session.meterpretter_session_detach”“<令牌>”“sessionid”]

服务器:

         
杰森
1
{“结果”=>“成功”}

session.meterpreter_session_kill.

会话。meterpreter_session_kill方法终止与指定Meterpreter会话关联的控制台正在与之交互的当前通道或子shell。这模拟控制台用户按下控制+C热键。

客户:

         
贝壳
1
[“session.meterpretter_session_detach”“<令牌>”“sessionid”]

服务器:

         
杰森
1
{“结果”=>“成功”}

session.meterpretter_tabs.

所述session.meterpreter_tabs命令模拟用户击中Meterpreter就会控制台内的标签键。此方法将接受当前的输入行,并返回交互式控制台中可用的制表符补全选项。这允许API调用者通过这个接口模拟选项卡完成。例如,将新分配的控制台的InputLine设置为“hel”将返回一个带有该选项的元素数组帮助

客户:

         
贝壳
1
[“session.meterpreter_tabs”“<令牌>”“sessionid”“inputline”]

服务器:

         
杰森
1
{“标签”=>[“选项1”“申请2”“申请3”}

session.compatible_modules.

session.compatible_modules方法返回与指定会话兼容的后模块列表。这包括将MeterPreter Post模块匹配为MeterPreter会话和强制平台和架构限制。

客户:

         
贝壳
1
[“session.compatible_modules”“<令牌>”“sessionid”]

服务器:

         
杰森
1
{“模块”=>[“多/聚集/ env”]}

session.shell_upgrade.

session.shell_upgrade方法将尝试通过现有的shell会话生成新的纸币待遇。这要求运行多/处理程序(windows / meterpreter / reverse_tcp)此方法提供此处理程序的主机和端口。

客户:

         
贝壳
1
[“session.shell_upgrade”“<令牌>”“sessionid”“1.2.3.4”4444.]

服务器:

         
杰森
1
{“结果”=>“成功”}

session.ring_clear.

会话。方法将清除与特定shell会话关联的环形缓冲区。这对于回收空闲后台会话的内存可能很有用。

客户:

         
贝壳
1
[“session.ring_clear”“<令牌>”“sessionid”]

服务器:

         
杰森
1
{“结果”=>“成功”}

session.ring_last.

session.ring_last方法将返回指定shell会话的最后发出的ReadPointer(序列号)。

客户:

         
贝壳
1
[“session.ring_last”“<令牌>”“sessionid”]

服务器:

         
杰森
1
{“seq”=>112.}

session.ring_put.

session.ring_put方法提供将数据写入活动shell会话的功能。

大多数会话需要在处理命令之前终止换行符。

客户:

         
贝壳
1
[“session.ring_put”“<令牌>”“sessionid”“ID\ n]

服务器:

         
杰森
1
{“write_count”=>“3”}