Skip to content

Commit e4ea618

Browse files
committed
Land rapid7#8419, ETERNALBLUE fixes (round two)
Hope I resolved the conflicts correctly.
2 parents 46eb6bd + 036f063 commit e4ea618

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

modules/exploits/windows/smb/ms17_010_eternalblue.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,9 @@ def smb_eternalblue(process_name, grooms)
195195
code, raw = smb1_get_response(sock)
196196

197197
code_str = "0x" + code.to_i.to_s(16).upcase
198-
if code == 0xc000000d # STATUS_INVALID_PARAMETER (0xC000000D)
198+
if code.nil?
199+
print_error("Did not receive a response from exploit packet")
200+
elsif code == 0xc000000d # STATUS_INVALID_PARAMETER (0xC000000D)
199201
print_good("ETERNALBLUE overwrite completed successfully (#{code_str})!")
200202
else
201203
print_warning("ETERNALBLUE overwrite returned unexpected status code (#{code_str})!")
@@ -288,6 +290,10 @@ def smb1_anonymous_connect_ipc()
288290

289291
code, raw, response = smb1_get_response(sock)
290292

293+
if code.nil?
294+
raise RubySMB::Error::UnexpectedStatusCode, "No response to login request"
295+
end
296+
291297
unless code == 0 # WindowsError::NTStatus::STATUS_SUCCESS
292298
raise RubySMB::Error::UnexpectedStatusCode, "Error with anonymous login"
293299
end
@@ -366,6 +372,7 @@ def smb1_get_response(sock)
366372
break unless raw.nil? or raw.empty?
367373
end
368374

375+
return nil unless raw
369376
response = RubySMB::SMB1::SMBHeader.read(raw[4..-1])
370377
code = response.nt_status
371378
return code, raw, response

0 commit comments

Comments
 (0)