add support for actions in post modules. fixes #3965~
git-svn-id: file:///home/svn/framework3/trunk@12008 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
parent
382e63e16e
commit
ded3ff9c75
|
@ -14,6 +14,8 @@ class Auxiliary < Msf::Module
|
||||||
|
|
||||||
require 'msf/core/auxiliary/mixins'
|
require 'msf/core/auxiliary/mixins'
|
||||||
|
|
||||||
|
include HasActions
|
||||||
|
|
||||||
#
|
#
|
||||||
# Returns MODULE_AUX to indicate that this is an auxiliary module.
|
# Returns MODULE_AUX to indicate that this is an auxiliary module.
|
||||||
#
|
#
|
||||||
|
@ -37,16 +39,8 @@ class Auxiliary < Msf::Module
|
||||||
# to the information hash.
|
# to the information hash.
|
||||||
super(info)
|
super(info)
|
||||||
|
|
||||||
self.actions = Rex::Transformer.transform(
|
|
||||||
info['Actions'], Array,
|
|
||||||
[ AuxiliaryAction ], 'AuxiliaryAction'
|
|
||||||
)
|
|
||||||
|
|
||||||
self.passive = (info['Passive'] and info['Passive'] == true) || false
|
|
||||||
self.default_action = info['DefaultAction']
|
|
||||||
self.sockets = Array.new
|
self.sockets = Array.new
|
||||||
self.queue = Array.new
|
self.queue = Array.new
|
||||||
self.passive_actions = info['PassiveActions'] || []
|
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -65,36 +59,6 @@ class Auxiliary < Msf::Module
|
||||||
return { }
|
return { }
|
||||||
end
|
end
|
||||||
|
|
||||||
def action
|
|
||||||
sa = datastore['ACTION']
|
|
||||||
return find_action(default_action) if not sa
|
|
||||||
return find_action(sa)
|
|
||||||
end
|
|
||||||
|
|
||||||
def find_action(name)
|
|
||||||
return nil if not name
|
|
||||||
actions.each do |a|
|
|
||||||
return a if a.name == name
|
|
||||||
end
|
|
||||||
return nil
|
|
||||||
end
|
|
||||||
|
|
||||||
#
|
|
||||||
# Returns a boolean indicating whether this module should be run passively
|
|
||||||
#
|
|
||||||
def passive?
|
|
||||||
act = action()
|
|
||||||
return passive_action?(act.name) if act
|
|
||||||
return self.passive
|
|
||||||
end
|
|
||||||
|
|
||||||
#
|
|
||||||
# Returns a boolean indicating whether this specific action should be run passively
|
|
||||||
#
|
|
||||||
def passive_action?(name)
|
|
||||||
passive_actions.include?(name)
|
|
||||||
end
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Performs last-minute sanity checking of auxiliary parameters. This method
|
# Performs last-minute sanity checking of auxiliary parameters. This method
|
||||||
# is called during automated exploitation attempts and allows an
|
# is called during automated exploitation attempts and allows an
|
||||||
|
@ -190,19 +154,12 @@ class Auxiliary < Msf::Module
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
|
||||||
# Allow access to the hash table of actions and the string containing
|
|
||||||
# the default action
|
|
||||||
#
|
|
||||||
attr_reader :actions, :default_action, :passive, :passive_actions
|
|
||||||
attr_accessor :queue
|
attr_accessor :queue
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
attr_writer :actions, :default_action
|
|
||||||
attr_accessor :sockets
|
attr_accessor :sockets
|
||||||
attr_writer :passive, :passive_actions
|
attr_writer :passive
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ class Module
|
||||||
require 'msf/core/module/reference'
|
require 'msf/core/module/reference'
|
||||||
require 'msf/core/module/target'
|
require 'msf/core/module/target'
|
||||||
require 'msf/core/module/auxiliary_action'
|
require 'msf/core/module/auxiliary_action'
|
||||||
|
require 'msf/core/module/has_actions'
|
||||||
|
|
||||||
#
|
#
|
||||||
# Creates an instance of an abstract module using the supplied information
|
# Creates an instance of an abstract module using the supplied information
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
require 'msf/core/module/auxiliary_action'
|
||||||
|
|
||||||
|
module Msf::Module::HasActions
|
||||||
|
def initialize(info={})
|
||||||
|
super
|
||||||
|
self.actions = Rex::Transformer.transform(
|
||||||
|
info['Actions'], Array,
|
||||||
|
[ Msf::Module::AuxiliaryAction ], 'AuxiliaryAction'
|
||||||
|
)
|
||||||
|
|
||||||
|
self.passive = (info['Passive'] and info['Passive'] == true) || false
|
||||||
|
self.default_action = info['DefaultAction']
|
||||||
|
self.passive_actions = info['PassiveActions'] || []
|
||||||
|
end
|
||||||
|
|
||||||
|
def action
|
||||||
|
sa = datastore['ACTION']
|
||||||
|
return find_action(default_action) if not sa
|
||||||
|
return find_action(sa)
|
||||||
|
end
|
||||||
|
|
||||||
|
def find_action(name)
|
||||||
|
return nil if not name
|
||||||
|
actions.each do |a|
|
||||||
|
return a if a.name == name
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Returns a boolean indicating whether this module should be run passively
|
||||||
|
#
|
||||||
|
def passive?
|
||||||
|
act = action()
|
||||||
|
return passive_action?(act.name) if act
|
||||||
|
return self.passive
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Returns a boolean indicating whether this specific action should be run passively
|
||||||
|
#
|
||||||
|
def passive_action?(name)
|
||||||
|
passive_actions.include?(name)
|
||||||
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# Allow access to the hash table of actions and the string containing
|
||||||
|
# the default action
|
||||||
|
#
|
||||||
|
attr_reader :actions, :default_action, :passive, :passive_actions
|
||||||
|
|
||||||
|
protected
|
||||||
|
attr_writer :actions, :default_action, :passive, :passive_actions
|
||||||
|
end
|
|
@ -6,6 +6,8 @@ class Post < Msf::Module
|
||||||
|
|
||||||
include Msf::Auxiliary::Report
|
include Msf::Auxiliary::Report
|
||||||
|
|
||||||
|
include Msf::Module::HasActions
|
||||||
|
|
||||||
def self.type
|
def self.type
|
||||||
MODULE_POST
|
MODULE_POST
|
||||||
end
|
end
|
||||||
|
@ -153,8 +155,13 @@ class Post < Msf::Module
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
#
|
||||||
|
# True when this module is passive, false when active
|
||||||
|
#
|
||||||
attr_reader :passive
|
attr_reader :passive
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
attr_writer :passive
|
attr_writer :passive
|
||||||
|
|
||||||
def session_changed?
|
def session_changed?
|
||||||
|
|
Loading…
Reference in New Issue