module PWN::Plugins::Metasploit
def self.authors
def self.authors st.pentest@0dayinc.com>
def self.connect(opts = {})
def self.connect(opts = {}) ] && File.exist?(opts[:yaml_conf]) .load_file(opts[:yaml_conf].to_s.strip.chomp.scrub) etch('PWN_ROOT') if ENV.fetch('PWN_ROOT') NV.fetch('PWN_PROVIDER') if ENV.fetch('PWN_PROVIDER') .load_file("#{pwn_root}/etc/userland/#{pwn_provider}/metasploit/vagrant.yaml") l_conf['msfrpcd_host'].to_s port'].to_i nf['username'].to_s nf['password'].to_s ::RPC::Client.new :host] = msfrpcd_host :port] = port (username, password) cd_conn] = msfrpcd_conn rpcd_conn.call('console.create') se(msfrpcd_resp.to_json, symbolize_names: true) on] = session => e e msfrpcd daemon running on #{msfrpcd_host}?"
def self.console_exec(opts = {})
cmd: 'required - msfconsole command string or array of strings'
console_obj: 'required - console_obj object returned from #connect method',
console_obj = PWN::Plugins::Metasploit.console_exec(
Supported Method Parameters::
def self.console_exec(opts = {}) [:console_obj] eue_console_cmd(console_obj: console_obj, cmd: cmd) _cmd| console_obj = queue_console_cmd(console_obj: console_obj, cmd: this_cmd) } d parameter must be a String or Array object - object is currently #{cmd.class}" => e
def self.disconnect(opts = {})
console_obj: 'required - console_obj returned from #console_exec method to terminate'
console_obj = PWN::Plugins::Metasploit.disconnect(
Supported Method Parameters::
def self.disconnect(opts = {}) [:console_obj] sole_obj[:msfrpcd_conn] le_obj[:session][:id] 'console.destroy', console_id) 'auth.logout', msfrpcd_conn.token) => e
def self.help
def self.help self}.connect( tional - path to userland yaml (defaults to $PWN_ROOT/etc/userland/$PWN_PROVIDER/metasploit/vagrant.yaml)' self}.console_exec( required - msfrpcd_conn object returned from #connect method', - msfconsole command string or array of strings' self}.disconnect( required - msfrpcd_conn object returned from #connect method'
def self.queue_console_cmd(opts = {})
cmd: 'required - msfconsole command string or array of strings'
console_obj: 'required - console_obj object returned from #connect method',
console_obj = PWN::Plugins::Metasploit.queue_console_cmd(
Supported Method Parameters::
def self.queue_console_cmd(opts = {}) :console_obj] _s.strip.chomp.scrub ole_obj[:msfrpcd_conn] md] = cmd e_obj[:session][:id] console.read', console_id) console.write', console_id, "#{cmd}\n") frpcd_conn.call('console.read', console_id) cd_resp.instance_of?(Hash) JSON.parse(msfrpcd_resp.to_json, symbolize_names: true) _cmd_result] = last_cmd_result ast_cmd_result][:busy] == true _obj[:last_cmd_result][:data]}" unless console_obj[:last_cmd_result][:data].nil? => e