Skip to content

Commit a081bea

Browse files
committed
Use Gem::Version for string versions comparison
1 parent 8d111ca commit a081bea

File tree

1 file changed

+4
-26
lines changed

1 file changed

+4
-26
lines changed

modules/exploits/windows/local/ms14_009_ie_dfsvc.rb

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,11 @@ def check
8383

8484
mscorlib_version = get_mscorlib_version
8585

86-
if valid_mscorlib_version?(net_version, mscorlib_version)
87-
return Exploit::CheckCode::Vulnerable
86+
if Gem::Version.new(mscorlib_version) >= Gem::Version.new(NET_VERSIONS[net_version]["mscorlib"])
87+
return Exploit::CheckCode::Safe
8888
end
8989

90-
Exploit::CheckCode::Safe
90+
Exploit::CheckCode::Vulnerable
9191
end
9292

9393
def get_net_version
@@ -144,7 +144,7 @@ def exploit
144144

145145
mscorlib_version = get_mscorlib_version
146146

147-
unless valid_mscorlib_version?(net_version, mscorlib_version)
147+
if Gem::Version.new(mscorlib_version) >= Gem::Version.new(NET_VERSIONS[net_version]["mscorlib"])
148148
fail_with(Failure::NotVulnerable, ".NET Installation not vulnerable")
149149
end
150150

@@ -166,28 +166,6 @@ def exploit
166166
)
167167
end
168168

169-
def valid_mscorlib_version?(net_version, mscorlib_version)
170-
valid = false
171-
172-
mscorlib = mscorlib_version.split(".")
173-
mscorlib.reverse!
174-
175-
max_version = NET_VERSIONS[net_version]["mscorlib"].split(".")
176-
max_version.reverse!
177-
178-
i = 0
179-
mscorlib.each do |v|
180-
if v.to_i < max_version[i].to_i
181-
valid = true
182-
elsif v.to_i > max_version[i].to_i
183-
valid = false
184-
end
185-
i = i + 1
186-
end
187-
188-
valid
189-
end
190-
191169
def cleanup
192170
session.railgun.kernel32.SetEnvironmentVariableA("PSHCMD", nil)
193171
super

0 commit comments

Comments
 (0)