diff --git a/lib/msf/core/post/common.rb b/lib/msf/core/post/common.rb index 47ea697b16..1ba1c663b3 100644 --- a/lib/msf/core/post/common.rb +++ b/lib/msf/core/post/common.rb @@ -235,6 +235,20 @@ module Msf::Post::Common nil end - private + # + # Checks if the `cmd` is installed on the system + # @return [Boolean] + # + def command_exists?(cmd) + if session.platform == 'windows' + # https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/where_1 + # https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/if + cmd_exec("cmd /c where /q #{cmd} & if not errorlevel 1 echo true").to_s.include? 'true' + else + cmd_exec("command -v #{cmd} && echo true").to_s.include? 'true' + end + rescue + raise "Unable to check if command `#{cmd}' exists" + end end diff --git a/lib/msf/core/post/linux/system.rb b/lib/msf/core/post/linux/system.rb index ba70d75944..4a5b0d821b 100644 --- a/lib/msf/core/post/linux/system.rb +++ b/lib/msf/core/post/linux/system.rb @@ -215,16 +215,6 @@ module System raise 'Unable to check for gcc' end - # - # Checks if the `cmd` is installed on the system - # @return [Boolean] - # - def command_exists?(cmd) - cmd_exec("command -v #{cmd} && echo true").to_s.include? 'true' - rescue - raise "Unable to check if command `#{cmd}` exists" - end - # # Gets the process id(s) of `program` # @return [Array] diff --git a/lib/msf/core/post/solaris/system.rb b/lib/msf/core/post/solaris/system.rb index 4e3870c5c9..c6524e776a 100644 --- a/lib/msf/core/post/solaris/system.rb +++ b/lib/msf/core/post/solaris/system.rb @@ -118,16 +118,6 @@ module System raise 'Unable to check for gcc' end - # - # Checks if the `cmd` is installed on the system - # @return [Boolean] - # - def command_exists?(cmd) - cmd_exec("command -v #{cmd} && echo true").to_s.include? 'true' - rescue - raise "Unable to check if command `#{cmd}` exists" - end - # # Gets the process id(s) of `program` # @return [Array]