From 151fa2f67668dd923d39a24cc6a799d424de5e23 Mon Sep 17 00:00:00 2001 From: Meatballs Date: Wed, 24 Jun 2015 20:50:29 +0100 Subject: [PATCH] Update user info on migrate --- lib/msf/base/sessions/meterpreter.rb | 27 ++++++++++--------- .../ui/console/command_dispatcher/core.rb | 3 +++ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/lib/msf/base/sessions/meterpreter.rb b/lib/msf/base/sessions/meterpreter.rb index 35227de609..a389c66a9f 100644 --- a/lib/msf/base/sessions/meterpreter.rb +++ b/lib/msf/base/sessions/meterpreter.rb @@ -319,25 +319,28 @@ class Meterpreter < Rex::Post::Meterpreter::Client false end + def update_session_info + username = self.sys.config.getuid + sysinfo = self.sys.config.sysinfo + + safe_info = "#{username} @ #{sysinfo['Computer']}" + safe_info.force_encoding("ASCII-8BIT") if safe_info.respond_to?(:force_encoding) + # Should probably be using Rex::Text.ascii_safe_hex but leave + # this as is for now since "\xNN" is arguably uglier than "_" + # showing up in various places in the UI. + safe_info.gsub!(/[\x00-\x08\x0b\x0c\x0e-\x19\x7f-\xff]+/n,"_") + self.info = safe_info + end + # # Populate the session information. # # Also reports a session_fingerprint note for host os normalization. # - def load_session_info() + def load_session_info begin ::Timeout.timeout(60) do - # Gather username/system information - username = self.sys.config.getuid - sysinfo = self.sys.config.sysinfo - - safe_info = "#{username} @ #{sysinfo['Computer']}" - safe_info.force_encoding("ASCII-8BIT") if safe_info.respond_to?(:force_encoding) - # Should probably be using Rex::Text.ascii_safe_hex but leave - # this as is for now since "\xNN" is arguably uglier than "_" - # showing up in various places in the UI. - safe_info.gsub!(/[\x00-\x08\x0b\x0c\x0e-\x19\x7f-\xff]+/n,"_") - self.info = safe_info + update_session_info hobj = nil diff --git a/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb b/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb index 654b44c5ec..00dd2817c9 100644 --- a/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb +++ b/lib/rex/post/meterpreter/ui/console/command_dispatcher/core.rb @@ -818,6 +818,9 @@ class Console::CommandDispatcher::Core print_status("Migration completed successfully.") + # Update session info (we may have a new username) + client.update_session_info + unless existing_relays.empty? print_status("Recreating TCP relay(s)...") existing_relays.each do |r|