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

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

Overview

Recon module command dispatcher.

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 ModuleArgumentParsing

#append_datastore_option, #parse_check_opts, #parse_exploit_opts, #parse_opts, #parse_run_opts, #print_module_run_or_check_usage, #quote_whitespaced_value, #resembles_datastore_assignment?, #resembles_rhost_value?

Methods included from ModuleOptionTabCompletion

#option_values_actions, #option_values_dispatch, #option_values_encoders, #option_values_nops, #option_values_payloads, #option_values_sessions, #option_values_target_addrs, #option_values_target_ports, #option_values_targets, #tab_complete_datastore_names, #tab_complete_module_datastore_names, #tab_complete_option, #tab_complete_option_names, #tab_complete_option_values, #tab_complete_source_interface

Methods included from ModuleActionCommands

#action_commands, #cmd_action_help, #cmd_run_tabs, #do_action, #method_missing, #respond_to_missing?

Methods included from ModuleCommandDispatcher

#check_multiple, #check_progress, #check_show_progress, #check_simple, #cmd_check, #cmd_check_help, #cmd_reload, #cmd_reload_help, #mod, #mod=, #reload, #report_vuln

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

#active_module, #active_module=, #active_session, #active_session=, #build_range_array, #docs_dir, #framework, #initialize, #load_config, #log_error, #remove_lines

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

#cmd_help, #cmd_help_help, #cmd_help_tabs, #deprecated_cmd, #deprecated_commands, #deprecated_help, #docs_dir, #help_to_s, included, #initialize, #print, #print_error, #print_good, #print_line, #print_status, #print_warning, #tab_complete_directory, #tab_complete_filenames, #tab_complete_generic, #tab_complete_source_address, #unknown_command, #update_prompt

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Msf::Ui::Console::ModuleActionCommands

Instance Method Details

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

Reloads a post module and executes it



49
50
51
52
53
54
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 49

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

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

Executes a post module



68
69
70
71
72
73
74
75
76
77
78
79
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
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 68

def cmd_run(*args, action: nil)
  return false unless (args = parse_run_opts(args, action: action))
  jobify = args[:jobify]

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

  begin
    mod.run_simple(
      'Action'         => args[:action],
      'OptionStr'      => args[:datastore_options].map { |k,v| "#{k}=#{v}" }.join(','),
      'LocalInput'     => driver.input,
      'LocalOutput'    => driver.output,
      'RunAsJob'       => jobify,
      'Quiet'          => args[: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 && mod.job_id)
    print_status("Post module running as background job #{mod.job_id}.")
  else
    print_status("Post module execution completed")
  end
end

#cmd_run_helpObject Also known as: cmd_exploit_help



58
59
60
61
62
63
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 58

def cmd_run_help
  print_module_run_or_check_usage(
    command: :run,
    description: 'Launches a post exploitation module.'
  )
end

#commandsObject

Returns the hash of commands specific to post modules.



22
23
24
25
26
27
28
29
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 22

def commands
  super.merge({
    "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.



35
36
37
# File 'lib/msf/ui/console/command_dispatcher/post.rb', line 35

def name
  "Post"
end