diff --git a/core/main/rest/handlers/logs.rb b/core/main/rest/handlers/logs.rb index d489cce36..80c3ee736 100644 --- a/core/main/rest/handlers/logs.rb +++ b/core/main/rest/handlers/logs.rb @@ -62,7 +62,8 @@ module BeEF 'id' => log.id.to_i, 'date' => log.date.to_s, 'event' => log.event.to_s, - 'type' => log.type.to_s + 'type' => log.type.to_s, + 'hooked_browser_id' => log.hooked_browser_id.to_s } end diff --git a/extensions/admin_ui/controllers/logs/logs.rb b/extensions/admin_ui/controllers/logs/logs.rb deleted file mode 100644 index 604a94c2f..000000000 --- a/extensions/admin_ui/controllers/logs/logs.rb +++ /dev/null @@ -1,83 +0,0 @@ -# -# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net -# Browser Exploitation Framework (BeEF) - http://beefproject.com -# See the file 'doc/COPYING' for copying permission -# -module BeEF -module Extension -module AdminUI -module Controllers - -class Logs < BeEF::Extension::AdminUI::HttpController - - def initialize - super({ - 'paths' => { - '/all.json' => method(:select_all_logs), - '/zombie.json' => method(:select_zombie_logs) - } - }) - end - - # Selects logs in the database and returns them in a JSON format. - def select_all_logs - - log = BeEF::Core::Models::Log.all() - (print_error "log is nil";return) if log.nil? - - # format log - @body = logs2json(log) - - end - - # Selects the logs for a zombie - def select_zombie_logs - - # get params - session = @params['session'] || nil - (print_error "session is nil";return) if session.nil? - - zombie = BeEF::Core::Models::HookedBrowser.first(:session => session) - (print_error "zombie is nil";return) if zombie.nil? - (print_error "zombie.id is nil";return) if zombie.id.nil? - zombie_id = zombie.id - - # get log - log = BeEF::Core::Models::Log.all(:hooked_browser_id => zombie_id) - (print_error "log is nil";return) if log.nil? - - # format log - @body = logs2json(log) - end - - private - - # Returns a list of logs in JSON format. - def logs2json(logs) - logs_json = [] - count = logs.length - output = '{success: false}' - - logs.each do |log| - print_debug "UI(log/.zombie.json) call: #{log.event.to_s}" - logs_json << { - 'id' => log.id.to_i, - 'date' => log.date.to_s, - 'event' => log.event.to_s, - 'type' => log.type.to_s, - 'hooked_browser_id' => log.hooked_browser_id.to_i - } - end - - # format output - output = {'success' => 'true', 'count' => count, 'logs' => logs_json}.to_json if not logs_json.empty? - - output - end - -end - -end -end -end -end \ No newline at end of file diff --git a/extensions/admin_ui/media/javascript/ui/panel/DataGrid.js b/extensions/admin_ui/media/javascript/ui/panel/DataGrid.js index 4d1353419..ab5868441 100644 --- a/extensions/admin_ui/media/javascript/ui/panel/DataGrid.js +++ b/extensions/admin_ui/media/javascript/ui/panel/DataGrid.js @@ -10,11 +10,18 @@ LogsDataGrid = function(url, page, base) { this.url = url; this.base = typeof(base) != 'undefined' ? base : {}; + // RESTful API token + var token = BeefWUI.get_rest_token(); + this.store = new Ext.ux.data.PagingJsonStore({ root: 'logs', autoDestroy: true, - autoLoad: false, - url: this.url, + autoLoad: false, + proxy: new Ext.data.HttpProxy({ + method: 'GET', + url: url + '?token=' + token + }), + storeId: 'myStore', baseParams: this.base, idProperty: 'id', diff --git a/extensions/admin_ui/media/javascript/ui/panel/MainPanel.js b/extensions/admin_ui/media/javascript/ui/panel/MainPanel.js index 01dcf2426..74f96671a 100644 --- a/extensions/admin_ui/media/javascript/ui/panel/MainPanel.js +++ b/extensions/admin_ui/media/javascript/ui/panel/MainPanel.js @@ -30,7 +30,7 @@ MainPanel = function(){ }); - this.logs_grid = new LogsDataGrid('<%= @base_path %>/logs/all.json',30); + this.logs_grid = new LogsDataGrid('/api/logs',30); this.logs_grid.border = false; this.zombies_grid = new ZombieDataGrid('/api/hooks/all', 30); diff --git a/extensions/admin_ui/media/javascript/ui/panel/tabs/ZombieTabLogs.js b/extensions/admin_ui/media/javascript/ui/panel/tabs/ZombieTabLogs.js index 2d5b15d37..26d750bae 100644 --- a/extensions/admin_ui/media/javascript/ui/panel/tabs/ZombieTabLogs.js +++ b/extensions/admin_ui/media/javascript/ui/panel/tabs/ZombieTabLogs.js @@ -9,7 +9,7 @@ */ ZombieTab_LogTab = function(zombie) { - var zombieLog = new LogsDataGrid('<%= @base_path %>/logs/zombie.json',30,{session:zombie.session}); + var zombieLog = new LogsDataGrid('/api/logs/' + zombie.session ,30); zombieLog.border = false; ZombieTab_LogTab.superclass.constructor.call(this, {