c547e84fa7
According to the Ruby style guide, %w{} collections for arrays of single
words are preferred. They're easier to type, and if you want a quick
grep, they're easier to search.
This change converts all Payloads to this format if there is more than
one payload to choose from.
It also alphabetizes the payloads, so the order can be more predictable,
and for long sets, easier to scan with eyeballs.
See:
https://github.com/bbatsov/ruby-style-guide#collections
65 lines
2.0 KiB
Ruby
65 lines
2.0 KiB
Ruby
##
|
|
# This file is part of the Metasploit Framework and may be subject to
|
|
# redistribution and commercial restrictions. Please see the Metasploit
|
|
# web site for more information on licensing and terms of use.
|
|
# http://metasploit.com/
|
|
##
|
|
|
|
require 'msf/core'
|
|
|
|
class Metasploit3 < Msf::Exploit::Remote
|
|
Rank = ManualRanking
|
|
|
|
#
|
|
# This module does basically nothing
|
|
# NOTE: Because of this it's missing a disclosure date that makes msftidy angry.
|
|
#
|
|
|
|
def initialize(info = {})
|
|
super(update_info(info,
|
|
'Name' => 'Generic Payload Handler',
|
|
'Description' => %q{
|
|
This module is a stub that provides all of the
|
|
features of the Metasploit payload system to exploits
|
|
that have been launched outside of the framework.
|
|
},
|
|
'License' => MSF_LICENSE,
|
|
'Author' => ['hdm'],
|
|
'References' => [ ],
|
|
'Payload' =>
|
|
{
|
|
'Space' => 10000000,
|
|
'BadChars' => '',
|
|
'DisableNops' => true,
|
|
},
|
|
'Platform' => %w{ android bsd java js linux osx php python ruby solaris unix win },
|
|
'Arch' => ARCH_ALL,
|
|
'Targets' => [ [ 'Wildcard Target', { } ] ],
|
|
'DefaultTarget' => 0
|
|
))
|
|
|
|
register_advanced_options(
|
|
[
|
|
OptBool.new("ExitOnSession", [ false, "Return from the exploit after a session has been created", true ]),
|
|
OptInt.new("ListenerTimeout", [ false, "The maximum number of seconds to wait for new sessions", 0])
|
|
], self.class)
|
|
end
|
|
|
|
def exploit
|
|
if not datastore['ExitOnSession'] and not job_id
|
|
fail_with(Failure::Unknown, "Setting ExitOnSession to false requires running as a job (exploit -j)")
|
|
end
|
|
|
|
stime = Time.now.to_f
|
|
print_status "Starting the payload handler..."
|
|
while(true)
|
|
break if session_created? and datastore['ExitOnSession']
|
|
break if ( datastore['ListenerTimeout'].to_i > 0 and (stime + datastore['ListenerTimeout'].to_i < Time.now.to_f) )
|
|
|
|
select(nil,nil,nil,1)
|
|
end
|
|
end
|
|
|
|
|
|
end
|