Module: Msf::Simple::Post

Includes:
Module
Defined in:
lib/msf/base/simple/post.rb

Overview

A simplified post-exploitation module wrapper.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Module

#_import_extra_options, #init_simplified, #inspect, #load_config, #save_config

Class Method Details

.run_simple(omod, opts = {}) {|mod| ... } ⇒ Object

Wraps the post-exploitation module running process in a simple single method. The options hash can have the following values passed in it:

OptionStr

A string of comma separated option values that should be imported into the datastore.

Options

A hash of values to be imported directly into the datastore.

LocalInput

The local input handle that data can be read in from.

LocalOutput

The local output through which data can be displayed.

RunAsJob

Whether or not the module should be run in the context of a background job.

Yields:

  • (mod)

40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/msf/base/simple/post.rb', line 40

def self.run_simple(omod, opts = {}, &block)

  # Clone the module to prevent changes to the original instance
  mod = omod.replicant
  Msf::Simple::Framework.simplify_module( mod, false )
  yield(mod) if block_given?

  # Import options from the OptionStr or Option hash.
  mod._import_extra_options(opts)

  # Verify the options
  mod.options.validate(mod.datastore)

  # Initialize user interaction
  if ! opts['Quiet']
    mod.init_ui(opts['LocalInput'] || mod.user_input, opts['LocalOutput'] || mod.user_output)
  else
    mod.init_ui(nil, nil)
  end

  #
  # Disable this until we can test background stuff a little better
  #
  if(mod.passive? or opts['RunAsJob'])
    ctx = [ mod.replicant ]
    mod.job_id = mod.framework.jobs.start_bg_job(
      "Post: #{mod.refname}",
      ctx,
      Proc.new { |ctx_| self.job_run_proc(ctx_) },
      Proc.new { |ctx_| self.job_cleanup_proc(ctx_) }
    )
    # Propagate this back to the caller for console mgmt
    omod.job_id = mod.job_id
  else
    ctx = [ mod ]
    self.job_run_proc(ctx)
    self.job_cleanup_proc(ctx)
  end
end

Instance Method Details

#run_simple(opts = {}, &block) ⇒ Object

Calls the class method.


83
84
85
# File 'lib/msf/base/simple/post.rb', line 83

def run_simple(opts = {}, &block)
  Msf::Simple::Post.run_simple(self, opts, &block)
end