Skip to content

Commit fb9724e

Browse files
committed
fix heartbleed cert parsing, fix rapid7#4309
1 parent 738fc78 commit fb9724e

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

modules/auxiliary/scanner/ssl/openssl_heartbleed.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ def establish_connect
418418
vprint_status("#{peer} - Sending Client Hello...")
419419
sock.put(client_hello)
420420

421-
server_hello = sock.get_once(-1, response_timeout)
421+
server_hello = sock.get(-1, response_timeout)
422422
unless server_hello
423423
vprint_error("#{peer} - No Server Hello after #{response_timeout} seconds...")
424424
return nil
@@ -777,19 +777,19 @@ def parse_certificate_data(data)
777777
cert_len_padding = unpacked[0]
778778
cert_len = unpacked[1]
779779
vprint_debug("\t\tCertificates length: #{cert_len}")
780+
vprint_debug("\t\tData length: #{data.length}")
780781
# contains multiple certs
781782
already_read = 3
782783
cert_counter = 0
783784
while already_read < cert_len
784-
start = already_read
785785
cert_counter += 1
786786
# get single certificate length
787-
single_cert_unpacked = data[start, 3].unpack('Cn')
787+
single_cert_unpacked = data[already_read, 3].unpack('Cn')
788788
single_cert_len_padding = single_cert_unpacked[0]
789789
single_cert_len = single_cert_unpacked[1]
790790
vprint_debug("\t\tCertificate ##{cert_counter}:")
791791
vprint_debug("\t\t\tCertificate ##{cert_counter}: Length: #{single_cert_len}")
792-
certificate_data = data[(start + 3), single_cert_len]
792+
certificate_data = data[(already_read + 3), single_cert_len]
793793
cert = OpenSSL::X509::Certificate.new(certificate_data)
794794
# First received certificate is the one from the server
795795
@cert = cert if @cert.nil?

0 commit comments

Comments
 (0)