Skip to content

Commit d63b087

Browse files
committed
Fix bug with creating session_events
1 parent ffcec52 commit d63b087

File tree

5 files changed

+6
-39
lines changed

5 files changed

+6
-39
lines changed

lib/metasploit/framework/data_service/proxy/session_event_data_proxy.rb

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,40 +12,6 @@ def session_events
1212
def report_session_event(opts)
1313
begin
1414
data_service = self.get_data_service()
15-
16-
# TODO: This is pretty hacky, but I don't want to change the code in Msf::DBManager::SessionEvent at this time.
17-
# If we decide it's ok to make changes in that code then we need to make it simply store the object and
18-
# do the pre-processing here.
19-
if !data_service.is_a?(Msf::DBManager)
20-
# The Msf::DBManager::SessionEvent.report_session_event does a lot of work for creating the SessionEvent
21-
# Should we move that here?
22-
#opts[:session] = opts[:session].sid
23-
if opts[:session].respond_to? :db_record
24-
session = opts[:session].db_record
25-
if session.nil?
26-
# The session doesn't have a db_record which means
27-
# a) the database wasn't connected at session registration time
28-
# or
29-
# b) something awful happened and the report_session call failed
30-
#
31-
# Either way, we can't do anything with this session as is, so
32-
# log a warning and punt.
33-
wlog("Warning: trying to report a session_event for a session with no db_record (#{opts[:session].sid})")
34-
return
35-
end
36-
event_data = { :created_at => Time.now }
37-
else
38-
session = opts[:session]
39-
event_data = { :created_at => opts[:created_at] }
40-
end
41-
42-
event_data[:session_id] = session.id
43-
[:remote_path, :local_path, :output, :command, :etype].each do |attr|
44-
event_data[attr] = opts[attr] if opts[attr]
45-
end
46-
opts = event_data
47-
end
48-
4915
data_service.report_session_event(opts)
5016
rescue Exception => e
5117
puts "Call to #{data_service.class}#report_session_event threw exception: #{e.message}"

lib/metasploit/framework/data_service/remote/http/remote_session_data_service.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ def report_session(opts)
1717
session.db_record = sess_db
1818
end
1919

20-
# def get_session(opts = {})
21-
# json_to_open_struct_object(self.get_data(SESSION_API_PATH, opts), [])
22-
# end
23-
2420
#######
2521
private
2622
#######

lib/metasploit/framework/data_service/remote/http/remote_session_event_data_service.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ def session_events(opts = {})
1010
end
1111

1212
def report_session_event(opts)
13+
opts[:session] = opts[:session].db_record
1314
self.post_data_async(SESSION_EVENT_PATH, opts)
1415
end
1516
end

lib/msf/core/db_manager/http/servlet/session_event_servlet.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ def self.get_session_event
2727

2828
def self.report_session_event
2929
lambda {
30-
job = lambda { |opts| get_db().report_session_event(opts) }
30+
job = lambda { |opts|
31+
opts[:session] = open_struct(opts[:session][:table])
32+
get_db().report_session_event(opts) }
3133
exec_report_job(request, &job)
3234
}
3335
end

lib/msf/core/db_manager/http/servlet_helper.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
require 'json'
22
require 'msf/core/db_manager/http/db_manager_proxy'
33
require 'msf/core/db_manager/http/job_processor'
4+
require 'metasploit/framework/data_service/remote/http/response_data_helper'
45

56
module ServletHelper
7+
include ResponseDataHelper
68

79
def set_error_on_response(error)
810
puts "Error handling request: #{error.message}"

0 commit comments

Comments
 (0)