Post get_envs library methods

bug/bundler_fix
Meatballs 2014-02-08 11:37:25 +00:00
parent 66cb97305c
commit 6e197ce535
No known key found for this signature in database
GPG Key ID: 5380EAF01F2F8B38
2 changed files with 111 additions and 0 deletions

View File

@ -136,4 +136,54 @@ module Msf::Post::Common
report_host(vm_data)
end
#
# Returns the value of the environment variable +env+
#
def get_env(env)
case session.type
when /meterpreter/
return session.sys.config.getenv(env)
when /shell/
if session.platform =~ /win/
if env[0,1] == '%'
unless env[-1,1] == '%'
env << '%'
end
else
env = "%#{env}%"
end
return cmd_exec("echo #{env}")
else
unless env[0,1] == '$'
env = "$#{env}"
end
return cmd_exec("echo \"#{env}\"")
end
end
nil
end
#
# Returns a hash of environment variables +envs+
#
def get_envs(*envs)
case session.type
when /meterpreter/
return session.sys.config.getenvs(*envs)
when /shell/
result = {}
envs.each do |env|
result[env] = get_env(env)
end
return result
end
nil
end
end

View File

@ -0,0 +1,61 @@
$:.push "test/lib" unless $:.include? "test/lib"
require 'module_test'
#load 'test/lib/module_test.rb'
#load 'lib/rex/text.rb'
#load 'lib/msf/core/post/common.rb'
class Metasploit4 < Msf::Post
include Msf::ModuleTest::PostTest
include Msf::Post::Common
def initialize(info={})
super( update_info( info,
'Name' => 'Testing Get Envs',
'Description' => %q{ This module will test Post::Common get envs API methods },
'License' => MSF_LICENSE,
'Author' => [ 'Ben Campbell'],
'Platform' => [ 'windows', 'linux', 'java', 'python' ],
'SessionTypes' => [ 'meterpreter', 'shell' ]
))
end
def test_get_env_windows
if session.platform =~ /win/i
it "should return windows path" do
path = get_env('WINDIR')
path =~ /windows/i
end
it "should handle % signs" do
path = get_env('%WINDIR%')
path =~ /windows/i
end
end
end
def test_get_env_nix
unless session.platform =~ /win/i
it "should return user" do
user = get_env('USER')
!user.blank?
end
it "should handle $ sign" do
user = get_env('$USER')
!user.blank?
end
end
end
def test_get_envs
it "should return multiple envs" do
res = get_envs('PATH','USERNAME')
!res['PATH'].blank? && !res['USERNAME'].blank?
end
end
end