“payload.encoded”中的“payload”来自于metasploit的漏洞利用?

时间:2014-02-16 10:36:36

标签: ruby exploit metasploit

我正在分析一个metasploit漏洞here,我试图找出payloadpayload.encoded来自第358行的位置。我是开发但基本编程的新手规则说在调用任何函数之前应该初始化payload。我没有看到payload被初始化为任何值。第56行有一个Payload,但它的第一个字母表是大写字母,因此它有所不同(Ruby区分大小写)。这意味着payload可能是从某个类继承而来的。但如果它继承自某些类为什么编码呢?为什么不填写新的价值呢?特别是,我正在寻找payload进行编码的价值。如果有人能帮助我理解这一点,那将是一个很大的帮助。万分感谢!

2 个答案:

答案 0 :(得分:2)

所以,它是Ruby,而漏洞类派生自Msf::Exploit::Remote,而来自msf/core。在代码中导航一下lib/msf/core.rb,然后从core/payload看到它需要。打开该文件:

https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/payload.rb

第179行,定义了一个函数payload,您可以看到它从return module_info['Payload'] ? module_info['Payload']['Payload'] : nil拉出有效负载

回到最初的漏洞,我们看到用module_info函数初始化了这个值:

      'Payload'        =>
        {
          'Space'    => 4096,
          # NOTE: \xff are avoided here so we can control the number of them being sent.
          'BadChars' => "\x09\x0a\x0b\x0c\x0d\x20\xff",
          'DisableNops' =>  'True',
        },

更多的讨论在lib/msf/base/simple/payload.rb

中提供了这一点
 payload._import_extra_options(opts)
 framework = payload.framework

 # Generate the payload
 e = EncodedPayload.create(payload,

我们在EncodedPayload中找到了lib/msf/core/encoded_payload.rb,并看到它调用了generate方法,这就是设置encoded方法的方法。在该文件中稍微查看一下,我们找到了用于生成该文件的encode方法。编码器是从“兼容编码器”列表中提取的,这些编码器显然是从平台上拉出来的(见https://github.com/rapid7/metasploit-framework/blob/f0fd2f05983083d84d635d8689237151663902e5/lib/msf/core/payload.rb#L413

长话短说,有效载荷来自上面的BadChars,并且它使用与平台相关的编码器进行编码。

答案 1 :(得分:0)

我没有像A. Wilson那样详细地查看代码。但是当我在MetaSploit中运行exploit而不使用选择任何有效负载(可以使用show payloads命令看到可用的有效负载)时,它会在利用之前显示正在选择的有效负载是reverse handler(我猜这是默认值)有效载荷)。查看metasploit的文件夹向我展示了此处理程序的代码可以在/opt/metasplot/apps/pro/msf3/lib/msf/core/handler

中找到