move meterpreter on_session functionality into a mixin

git-svn-id: file:///home/svn/framework3/trunk@8586 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
Joshua Drake 2010-02-22 21:05:08 +00:00
parent 29cd1f1b4c
commit f8ca490b98
10 changed files with 83 additions and 283 deletions

View File

@ -0,0 +1,59 @@
##
# $Id$
##
##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
##
module Msf
module Sessions
module MeterpreterOptions
def initialize(info = {})
super(info)
register_advanced_options(
[
OptBool.new('AutoLoadStdapi', [true, "Automatically load the Stdapi extension", true]),
OptString.new('InitialAutoRunScript', [false, "An initial script to run on session created (before AutoRunScript)", '']),
OptString.new('AutoRunScript', [false, "A script to automatically on session creation.", ''])
], self.class)
end
#
# Once a session is created, automatically load the stdapi extension if the
# advanced option is set to true.
#
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['InitialAutoRunScript'].empty? == false)
client = session
args = datastore['InitialAutoRunScript'].split
print_status("Session ID #{session.sid} (#{session.tunnel_to_s}) processing InitialAutoRunScript '#{datastore['InitialAutoRunScript']}'")
session.execute_script(args.shift, binding)
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
print_status("Session ID #{session.sid} (#{session.tunnel_to_s}) processing AutoRunScript '#{datastore['AutoRunScript']}'")
session.execute_script(args.shift, binding)
end
end
end
end
end

View File

@ -3,7 +3,7 @@
##
##
# This file is part of the Metasploit Framework and may be subject to
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
@ -13,11 +13,13 @@
require 'msf/core'
require 'msf/core/handler/bind_tcp'
require 'msf/base/sessions/meterpreter_x86_bsd'
require 'msf/base/sessions/meterpreter_options'
module Metasploit3
include Msf::Payload::Bsd
include Msf::Payload::Single
include Msf::Sessions::MeterpreterOptions
def initialize(info = {})
super(merge_info(info,
@ -36,36 +38,6 @@ module Metasploit3
'Payload' => ""
}
))
# Set advanced options
register_advanced_options(
[
OptBool.new('AutoLoadStdapi',
[
true,
"Automatically load the Stdapi extension",
true
]),
OptString.new('AutoRunScript', [false, "Script to autorun on meterpreter session creation", ''])
], self.class)
end
#
# Once a session is created, automatically load the stdapi extension if the
# advanced option is set to true.
#
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
session.execute_script(args.shift, binding)
end
end
end

View File

@ -13,11 +13,13 @@
require 'msf/core'
require 'msf/core/handler/reverse_tcp'
require 'msf/base/sessions/meterpreter_x86_bsd'
require 'msf/base/sessions/meterpreter_options'
module Metasploit3
include Msf::Payload::Bsd
include Msf::Payload::Single
include Msf::Sessions::MeterpreterOptions
def initialize(info = {})
super(merge_info(info,
@ -36,36 +38,6 @@ module Metasploit3
'Payload' => ""
}
))
# Set advanced options
register_advanced_options(
[
OptBool.new('AutoLoadStdapi',
[
true,
"Automatically load the Stdapi extension",
true
]),
OptString.new('AutoRunScript', [false, "Script to autorun on meterpreter session creation", ''])
], self.class)
end
#
# Once a session is created, automatically load the stdapi extension if the
# advanced option is set to true.
#
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
session.execute_script(args.shift, binding)
end
end
end

View File

@ -3,7 +3,7 @@
##
##
# This file is part of the Metasploit Framework and may be subject to
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
@ -13,11 +13,13 @@
require 'msf/core'
require 'msf/core/handler/bind_tcp'
require 'msf/base/sessions/meterpreter_x86_linux'
require 'msf/base/sessions/meterpreter_options'
module Metasploit3
include Msf::Payload::Linux
include Msf::Payload::Single
include Msf::Sessions::MeterpreterOptions
def initialize(info = {})
super(merge_info(info,
@ -36,36 +38,6 @@ module Metasploit3
'Payload' => ""
}
))
# Set advanced options
register_advanced_options(
[
OptBool.new('AutoLoadStdapi',
[
true,
"Automatically load the Stdapi extension",
true
]),
OptString.new('AutoRunScript', [false, "Script to autorun on meterpreter session creation", ''])
], self.class)
end
#
# Once a session is created, automatically load the stdapi extension if the
# advanced option is set to true.
#
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
session.execute_script(args.shift, binding)
end
end
end

View File

@ -3,7 +3,7 @@
##
##
# This file is part of the Metasploit Framework and may be subject to
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
@ -13,11 +13,13 @@
require 'msf/core'
require 'msf/core/handler/reverse_tcp'
require 'msf/base/sessions/meterpreter_x86_linux'
require 'msf/base/sessions/meterpreter_options'
module Metasploit3
include Msf::Payload::Linux
include Msf::Payload::Single
include Msf::Sessions::MeterpreterOptions
def initialize(info = {})
super(merge_info(info,
@ -36,36 +38,6 @@ module Metasploit3
'Payload' => ""
}
))
# Set advanced options
register_advanced_options(
[
OptBool.new('AutoLoadStdapi',
[
true,
"Automatically load the Stdapi extension",
true
]),
OptString.new('AutoRunScript', [false, "Script to autorun on meterpreter session creation", ''])
], self.class)
end
#
# Once a session is created, automatically load the stdapi extension if the
# advanced option is set to true.
#
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
session.execute_script(args.shift, binding)
end
end
end

View File

@ -3,7 +3,7 @@
##
##
# This file is part of the Metasploit Framework and may be subject to
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
@ -13,11 +13,13 @@
require 'msf/core'
require 'msf/core/handler/bind_tcp'
require 'msf/base/sessions/meterpreter_x86_win'
require 'msf/base/sessions/meterpreter_options'
module Metasploit3
include Msf::Payload::Windows
include Msf::Payload::Single
include Msf::Sessions::MeterpreterOptions
def initialize(info = {})
super(merge_info(info,
@ -36,36 +38,6 @@ module Metasploit3
'Payload' => ""
}
))
# Set advanced options
register_advanced_options(
[
OptBool.new('AutoLoadStdapi',
[
true,
"Automatically load the Stdapi extension",
true
]),
OptString.new('AutoRunScript', [false, "Script to autorun on meterpreter session creation", ''])
], self.class)
end
#
# Once a session is created, automatically load the stdapi extension if the
# advanced option is set to true.
#
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
session.execute_script(args.shift, binding)
end
end
end

View File

@ -3,7 +3,7 @@
##
##
# This file is part of the Metasploit Framework and may be subject to
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
@ -13,11 +13,13 @@
require 'msf/core'
require 'msf/core/handler/reverse_tcp'
require 'msf/base/sessions/meterpreter_x86_win'
require 'msf/base/sessions/meterpreter_options'
module Metasploit3
include Msf::Payload::Windows
include Msf::Payload::Single
include Msf::Sessions::MeterpreterOptions
def initialize(info = {})
super(merge_info(info,
@ -36,36 +38,6 @@ module Metasploit3
'Payload' => ""
}
))
# Set advanced options
register_advanced_options(
[
OptBool.new('AutoLoadStdapi',
[
true,
"Automatically load the Stdapi extension",
true
]),
OptString.new('AutoRunScript', [false, "Script to autorun on meterpreter session creation", ''])
], self.class)
end
#
# Once a session is created, automatically load the stdapi extension if the
# advanced option is set to true.
#
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
session.execute_script(args.shift, binding)
end
end
end

View File

@ -13,6 +13,7 @@
require 'msf/core'
require 'msf/core/payload/windows/reflectivedllinject'
require 'msf/base/sessions/meterpreter_x86_win'
require 'msf/base/sessions/meterpreter_options'
###
#
@ -22,6 +23,7 @@ require 'msf/base/sessions/meterpreter_x86_win'
module Metasploit3
include Msf::Payload::Windows::ReflectiveDllInject
include Msf::Sessions::MeterpreterOptions
def initialize(info = {})
super(update_info(info,
@ -32,13 +34,6 @@ module Metasploit3
'License' => MSF_LICENSE,
'Session' => Msf::Sessions::Meterpreter_x86_Win))
register_advanced_options(
[
OptBool.new('AutoLoadStdapi', [true, "Automatically load the Stdapi extension", true]),
OptString.new('InitialAutoRunScript', [false, "An initial script to run on session created (before AutoRunScript)", '']),
OptString.new('AutoRunScript', [false, "A script to automatically on session creation.", ''])
], self.class)
# Don't let people set the library name option
options.remove_option('LibraryName')
options.remove_option('DLL')
@ -48,31 +43,4 @@ module Metasploit3
File.join(Msf::Config.install_root, "data", "meterpreter", "metsrv.dll")
end
#
# Once a session is created, automatically load the stdapi extension if the
# advanced option is set to true.
#
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['InitialAutoRunScript'].empty? == false)
client = session
args = datastore['InitialAutoRunScript'].split
print_status("Session ID #{session.sid} (#{session.tunnel_to_s}) processing InitialAutoRunScript '#{datastore['InitialAutoRunScript']}'")
session.execute_script(args.shift, binding)
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
print_status("Session ID #{session.sid} (#{session.tunnel_to_s}) processing AutoRunScript '#{datastore['AutoRunScript']}'")
session.execute_script(args.shift, binding)
end
end
end

View File

@ -13,7 +13,7 @@
require 'msf/core'
require 'msf/core/payload/windows/dllinject'
require 'msf/base/sessions/meterpreter_x86_win'
require 'msf/base/sessions/meterpreter_options'
###
#
@ -23,6 +23,7 @@ require 'msf/base/sessions/meterpreter_x86_win'
module Metasploit3
include Msf::Payload::Windows::DllInject
include Msf::Sessions::MeterpreterOptions
def initialize(info = {})
super(update_info(info,
@ -33,13 +34,6 @@ module Metasploit3
'License' => MSF_LICENSE,
'Session' => Msf::Sessions::Meterpreter_x86_Win))
register_advanced_options(
[
OptBool.new('AutoLoadStdapi', [true, "Automatically load the Stdapi extension", true]),
OptString.new('InitialAutoRunScript', [false, "An initial script to run on session created (before AutoRunScript)", '']),
OptString.new('AutoRunScript', [false, "A script to automatically on session creation.", ''])
], self.class)
# Don't let people set the library name option
options.remove_option('LibraryName')
options.remove_option('DLL')
@ -57,30 +51,4 @@ module Metasploit3
File.join(Msf::Config.install_root, "data", "meterpreter", "metsrv.dll")
end
#
# Once a session is created, automatically load the stdapi extension if the
# advanced option is set to true.
#
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['InitialAutoRunScript'].empty? == false)
client = session
args = datastore['InitialAutoRunScript'].split
print_status("Session ID #{session.sid} (#{session.tunnel_to_s}) processing InitialAutoRunScript '#{datastore['InitialAutoRunScript']}'")
session.execute_script(args.shift, binding)
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
print_status("Session ID #{session.sid} (#{session.tunnel_to_s}) processing AutoRunScript '#{datastore['AutoRunScript']}'")
session.execute_script(args.shift, binding)
end
end
end

View File

@ -3,7 +3,7 @@
##
##
# This file is part of the Metasploit Framework and may be subject to
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
# http://metasploit.com/framework/
@ -13,6 +13,7 @@
require 'msf/core'
require 'msf/core/payload/windows/x64/reflectivedllinject'
require 'msf/base/sessions/meterpreter_x64_win'
require 'msf/base/sessions/meterpreter_options'
###
#
@ -23,6 +24,7 @@ require 'msf/base/sessions/meterpreter_x64_win'
module Metasploit3
include Msf::Payload::Windows::ReflectiveDllInject_x64
include Msf::Sessions::MeterpreterOptions
def initialize(info = {})
super(update_info(info,
@ -34,13 +36,6 @@ module Metasploit3
'Session' => Msf::Sessions::Meterpreter_x64_Win
))
register_advanced_options(
[
OptBool.new('AutoLoadStdapi', [true, "Automatically load the Stdapi extension", true]),
OptString.new('InitialAutoRunScript', [false, "An initial script to run on session created (before AutoRunScript)", '']),
OptString.new('AutoRunScript', [false, "A script to automatically on session creation.", ''])
], self.class)
options.remove_option( 'LibraryName' )
options.remove_option( 'DLL' )
end
@ -49,26 +44,4 @@ module Metasploit3
File.join( Msf::Config.install_root, "data", "meterpreter", "metsrv.x64.dll" )
end
def on_session(session)
super
if (datastore['AutoLoadStdapi'] == true)
session.load_stdapi
if (framework.exploits.create(session.via_exploit).privileged?)
session.load_priv
end
end
if (datastore['InitialAutoRunScript'].empty? == false)
client = session
args = datastore['InitialAutoRunScript'].split
print_status("Session ID #{session.sid} (#{session.tunnel_to_s}) processing InitialAutoRunScript '#{datastore['InitialAutoRunScript']}'")
session.execute_script(args.shift, binding)
end
if (datastore['AutoRunScript'].empty? == false)
client = session
args = datastore['AutoRunScript'].split
print_status("Session ID #{session.sid} (#{session.tunnel_to_s}) processing AutoRunScript '#{datastore['AutoRunScript']}'")
session.execute_script(args.shift, binding)
end
end
end