Basic shell of the MSF Powershell extension functionality
parent
df0ff30468
commit
f8f61e8d83
|
@ -0,0 +1,44 @@
|
|||
# -*- coding: binary -*-
|
||||
|
||||
require 'rex/post/meterpreter/extensions/powershell/tlv'
|
||||
|
||||
module Rex
|
||||
module Post
|
||||
module Meterpreter
|
||||
module Extensions
|
||||
module Powershell
|
||||
|
||||
###
|
||||
#
|
||||
# This meterpreter extensions a privilege escalation interface that is capable
|
||||
# of doing things like dumping password hashes and performing local
|
||||
# exploitation.
|
||||
#
|
||||
###
|
||||
class Powershell < Extension
|
||||
|
||||
|
||||
def initialize(client)
|
||||
super(client, 'powershell')
|
||||
|
||||
client.register_extension_aliases(
|
||||
[
|
||||
{
|
||||
'name' => 'powershell',
|
||||
'ext' => self
|
||||
},
|
||||
])
|
||||
end
|
||||
|
||||
|
||||
def execute_string(string)
|
||||
request = Packet.create_request('powershell_execute')
|
||||
|
||||
response = client.send_request(request)
|
||||
|
||||
return response
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end; end; end; end; end
|
|
@ -0,0 +1,14 @@
|
|||
# -*- coding: binary -*-
|
||||
module Rex
|
||||
module Post
|
||||
module Meterpreter
|
||||
module Extensions
|
||||
module Powershell
|
||||
|
||||
TLV_TYPE_POWERSHELL_CODE = TLV_META_TYPE_STRING | (TLV_EXTENSIONS + 1)
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,74 @@
|
|||
# -*- coding: binary -*-
|
||||
require 'rex/post/meterpreter'
|
||||
|
||||
module Rex
|
||||
module Post
|
||||
module Meterpreter
|
||||
module Ui
|
||||
|
||||
###
|
||||
#
|
||||
# Powershell extension - interact with a Powershell interpreter
|
||||
#
|
||||
###
|
||||
class Console::CommandDispatcher::Powershell
|
||||
|
||||
Klass = Console::CommandDispatcher::Powershell
|
||||
|
||||
include Console::CommandDispatcher
|
||||
|
||||
#
|
||||
# Name for this dispatcher
|
||||
#
|
||||
def name
|
||||
'Powershell'
|
||||
end
|
||||
|
||||
#
|
||||
# List of supported commands.
|
||||
#
|
||||
def commands
|
||||
{
|
||||
'powershell_execute' => 'Execute a Powershell command string',
|
||||
}
|
||||
end
|
||||
|
||||
@@powershell_execute_opts = Rex::Parser::Arguments.new(
|
||||
'-h' => [false, 'Help banner']
|
||||
)
|
||||
|
||||
def powershell_execute_usage
|
||||
print_line('Usage: powershell_execute <powershell code>')
|
||||
print_line
|
||||
print_line('Runs the given Powershell string on the target.')
|
||||
print_line(@@powershell_execute_opts.usage)
|
||||
end
|
||||
|
||||
#
|
||||
# Execute a simple Powershell command string
|
||||
#
|
||||
def cmd_powershell_execute(*args)
|
||||
if args.length == 0 || args.include?('-h')
|
||||
powershell_execute_usage
|
||||
return false
|
||||
end
|
||||
|
||||
code = args.shift
|
||||
|
||||
@@powershell_execute_opts.parse(args) { |opt, idx, val|
|
||||
#case opt
|
||||
#when '-r'
|
||||
# result_var = val
|
||||
#end
|
||||
}
|
||||
|
||||
client.powershell.execute_string(code)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue