106 lines
1.8 KiB
Ruby
106 lines
1.8 KiB
Ruby
# -*- coding: binary -*-
|
|
require 'msf/core/post/common'
|
|
|
|
module Msf
|
|
class Post
|
|
module Linux
|
|
module Kernel
|
|
include ::Msf::Post::Common
|
|
|
|
#
|
|
# Returns uname output
|
|
#
|
|
# @return [String]
|
|
#
|
|
def uname(opts='-a')
|
|
cmd_exec("uname #{opts}").to_s
|
|
rescue
|
|
raise "Failed to run uname #{opts}"
|
|
end
|
|
|
|
#
|
|
# Returns the kernel release
|
|
#
|
|
# @return [String]
|
|
#
|
|
def kernel_release
|
|
uname('-r')
|
|
end
|
|
|
|
#
|
|
# Returns the kernel version
|
|
#
|
|
# @return [String]
|
|
#
|
|
def kernel_version
|
|
uname('-v')
|
|
end
|
|
|
|
#
|
|
# Returns the kernel name
|
|
#
|
|
# @return [String]
|
|
#
|
|
def kernel_name
|
|
uname('-s')
|
|
end
|
|
|
|
#
|
|
# Returns the kernel hardware
|
|
#
|
|
# @return [String]
|
|
#
|
|
def kernel_hardware
|
|
uname('-m')
|
|
end
|
|
|
|
#
|
|
# Returns the kernel modules
|
|
#
|
|
# @return [Array]
|
|
#
|
|
def kernel_modules
|
|
cmd_exec('cat /proc/modules').to_s.scan(/^[^ ]+/)
|
|
rescue
|
|
raise 'Could not determine kernel modules'
|
|
end
|
|
|
|
#
|
|
# Returns true if kernel and hardware supports Supervisor Mode Access Prevention (SMAP), false if not.
|
|
#
|
|
# @return [Boolean]
|
|
#
|
|
def smap_enabled?
|
|
cmd_exec('cat /proc/cpuinfo').to_s.include? 'smap'
|
|
rescue
|
|
raise 'Could not determine SMAP status'
|
|
end
|
|
|
|
#
|
|
# Returns true if kernel and hardware supports Supervisor Mode Execution Protection (SMEP), false if not.
|
|
#
|
|
# @return [Boolean]
|
|
#
|
|
def smep_enabled?
|
|
cmd_exec('cat /proc/cpuinfo').to_s.include? 'smep'
|
|
rescue
|
|
raise 'Could not determine SMEP status'
|
|
end
|
|
|
|
#
|
|
# Returns true if user namespaces are enabled, false if not.
|
|
#
|
|
# @return [Boolean]
|
|
#
|
|
def userns_enabled?
|
|
return false if cmd_exec('cat /proc/sys/user/max_user_namespaces').to_s.eql? '0'
|
|
cmd_exec('cat /proc/sys/kernel/unprivileged_userns_clone').to_s.eql? '1'
|
|
rescue
|
|
raise 'Could not determine userns status'
|
|
end
|
|
|
|
end # Kernel
|
|
end # Linux
|
|
end # Post
|
|
end # Msf
|