Add check method
parent
31af8ef07b
commit
d0241cf4c1
|
@ -69,6 +69,50 @@ class Metasploit3 < Msf::Exploit::Local
|
||||||
])
|
])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def check
|
||||||
|
unless file_exist?("#{get_env("windir")}\\Microsoft.NET\\Framework\\v4.0.30319\\dfsvc.exe")
|
||||||
|
return Exploit::CheckCode::Unknown
|
||||||
|
end
|
||||||
|
|
||||||
|
net_version = get_net_version
|
||||||
|
|
||||||
|
if net_version.empty?
|
||||||
|
return Exploit::CheckCode::Unknown
|
||||||
|
end
|
||||||
|
|
||||||
|
unless file_exist?("#{get_env("windir")}\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll")
|
||||||
|
return Exploit::CheckCode::Detected
|
||||||
|
end
|
||||||
|
|
||||||
|
mscorlib_version = get_mscorlib_version
|
||||||
|
|
||||||
|
unless mscorlib_version < NET_VERSIONS[net_version]["mscorlib"]
|
||||||
|
return Exploit::CheckCode::Safe
|
||||||
|
end
|
||||||
|
|
||||||
|
Exploit::CheckCode::Vulnerable
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_net_version
|
||||||
|
net_version = ""
|
||||||
|
|
||||||
|
dfsvc_version = file_version("#{get_env("windir")}\\Microsoft.NET\\Framework\\v4.0.30319\\dfsvc.exe")
|
||||||
|
dfsvc_version = dfsvc_version.join(".")
|
||||||
|
|
||||||
|
NET_VERSIONS.each do |k,v|
|
||||||
|
if v["dfsvc"] == dfsvc_version
|
||||||
|
net_version = k
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
net_version
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_mscorlib_version
|
||||||
|
mscorlib_version = file_version("#{get_env("windir")}\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll")
|
||||||
|
mscorlib_version.join(".")
|
||||||
|
end
|
||||||
|
|
||||||
def exploit
|
def exploit
|
||||||
print_status("Running module against #{sysinfo['Computer']}") unless sysinfo.nil?
|
print_status("Running module against #{sysinfo['Computer']}") unless sysinfo.nil?
|
||||||
|
|
||||||
|
@ -87,16 +131,7 @@ class Metasploit3 < Msf::Exploit::Local
|
||||||
fail_with(Failure::NotVulnerable, ".NET Deployment Service (dfsvc.exe) not found")
|
fail_with(Failure::NotVulnerable, ".NET Deployment Service (dfsvc.exe) not found")
|
||||||
end
|
end
|
||||||
|
|
||||||
dfsvc_version = file_version("#{get_env("windir")}\\Microsoft.NET\\Framework\\v4.0.30319\\dfsvc.exe")
|
net_version = get_net_version
|
||||||
dfsvc_version = dfsvc_version.join(".")
|
|
||||||
|
|
||||||
net_version = ""
|
|
||||||
|
|
||||||
NET_VERSIONS.each do |k,v|
|
|
||||||
if v["dfsvc"] == dfsvc_version
|
|
||||||
net_version = k
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if net_version.empty?
|
if net_version.empty?
|
||||||
fail_with(Failure::NotVulnerable, "This module only targets .NET Deployment Service from .NET 4.5 and .NET 4.5.1")
|
fail_with(Failure::NotVulnerable, "This module only targets .NET Deployment Service from .NET 4.5 and .NET 4.5.1")
|
||||||
|
@ -110,8 +145,7 @@ class Metasploit3 < Msf::Exploit::Local
|
||||||
fail_with(Failure::NotVulnerable, ".NET Installation can not be verified (mscorlib.dll not found)")
|
fail_with(Failure::NotVulnerable, ".NET Installation can not be verified (mscorlib.dll not found)")
|
||||||
end
|
end
|
||||||
|
|
||||||
mscorlib_version = file_version("#{get_env("windir")}\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll")
|
mscorlib_version = get_mscorlib_version
|
||||||
mscorlib_version = mscorlib_version.join(".")
|
|
||||||
|
|
||||||
unless mscorlib_version < NET_VERSIONS[net_version]["mscorlib"]
|
unless mscorlib_version < NET_VERSIONS[net_version]["mscorlib"]
|
||||||
fail_with(Failure::NotVulnerable, ".NET Installation not vulnerable")
|
fail_with(Failure::NotVulnerable, ".NET Installation not vulnerable")
|
||||||
|
|
Loading…
Reference in New Issue