Class: Msf::Ui::Console::CommandDispatcher::Post

Inherits:
Object
  • Object
show all
Includes:
ModuleCommandDispatcher
Defined in:
lib/msf/ui/console/command_dispatcher/post.rb

Overview

Recon module command dispatcher.

Constant Summary collapse

@@post_opts =
Rex::Parser::Arguments.new(
  "-h" => [ false, "Help banner."                                          ],
  "-j" => [ false, "Run in the context of a job."                          ],
  "-o" => [ true,  "A comma separated list of options in VAR=VAL format."  ],
  "-q" => [ false, "Run the module in quiet mode with no output"           ]
)

Instance Attribute Summary

Attributes included from Msf::Ui::Console::CommandDispatcher

#driver

Attributes included from Rex::Ui::Text::DispatcherShell::CommandDispatcher

#shell, #tab_complete_items

Instance Method Summary collapse

Methods included from ModuleCommandDispatcher

#check_multiple, #check_progress, #check_show_progress, #check_simple, #cmd_check, #cmd_pry, #cmd_pry_help, #cmd_reload, #cmd_reload_help, #mod, #mod=, #reload

Methods included from Msf::Ui::Console::CommandDispatcher

#active_module, #active_module=, #active_session, #active_session=, #defanged?, #framework, #initialize, #log_error

Methods included from Rex::Ui::Text::DispatcherShell::CommandDispatcher

#cmd_help, #cmd_help_help, #cmd_help_tabs, #deprecated_cmd, #deprecated_commands, #deprecated_help, #help_to_s, #initialize, #print, #print_error, #print_good, #print_line, #print_status, #print_warning, #tab_complete_filenames, #update_prompt

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args) ⇒ Object

Allow modules to define their own commands


39
40
41
42
43
44
45
46
47
48
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 39

def method_missing(meth, *args)
  if (mod and mod.respond_to?(meth.to_s))

    # Initialize user interaction
    mod.init_ui(driver.input, driver.output)

    return mod.send(meth.to_s, *args)
  end
  return
end

Instance Method Details

#cmd_rerun(*args) ⇒ Object Also known as: cmd_rexploit

Reloads an auxiliary module and executes it


68
69
70
71
72
73
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 68

def cmd_rerun(*args)
  # Stop existing job and reload the module
  if reload(true)
    cmd_run(*args)
  end
end

#cmd_run(*args) ⇒ Object Also known as: cmd_exploit

Executes an auxiliary module


80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 80

def cmd_run(*args)
  defanged?

  opt_str = nil
  jobify  = false
  quiet   = false

  @@post_opts.parse(args) { |opt, idx, val|
    case opt
      when '-j'
        jobify = true
      when '-o'
        opt_str = val
      when '-a'
        action = val
      when '-q'
        quiet  = true
      when '-h'
        print(
          "Usage: run [options]\n\n" +
          "Launches a post module.\n" +
          @@post_opts.usage)
        return false
    end
  }

  # Always run passive modules in the background
  if (mod.passive)
    jobify = true
  end

  begin
    mod.run_simple(
      'OptionStr'      => opt_str,
      'LocalInput'     => driver.input,
      'LocalOutput'    => driver.output,
      'RunAsJob'       => jobify,
      'Quiet'          => quiet
    )
  rescue ::Timeout::Error
    print_error("Post triggered a timeout exception")
  rescue ::Interrupt
    print_error("Post interrupted by the console user")
  rescue ::Exception => e
    print_error("Post failed: #{e.class} #{e}")
    if (e.class.to_s != 'Msf::OptionValidateError')
      print_error("Call stack:")
      e.backtrace.each do |line|
        break if line =~ /lib.msf.base.simple/
        print_error("  #{line}")
      end
    end

    return false
  end

  if (jobify)
    print_status("Post module running as background job")
  else
    print_status("Post module execution completed")
  end
end

#cmd_run_helpObject Also known as: cmd_exploit_help


145
146
147
148
149
150
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 145

def cmd_run_help
  print_line "Usage: run [options]"
  print_line
  print_line "Launches a post module."
  print @@auxiliary_opts.usage
end

#commandsObject

Returns the hash of commands specific to post modules.


27
28
29
30
31
32
33
34
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 27

def commands
  super.update({
    "run"   => "Launches the post exploitation module",
    "rerun" => "Reloads and launches the module",
    "exploit"  => "This is an alias for the run command",
    "rexploit" => "This is an alias for the rerun command",
  }).merge( (mod ? mod.post_commands : {}) )
end

#nameObject

Returns the command dispatcher name.


54
55
56
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 54

def name
  "Post"
end