From 03cd06a014c60ac45f1e88e8b58bf9bc69c2e243 Mon Sep 17 00:00:00 2001 From: antisnatchor Date: Mon, 12 Mar 2012 11:55:26 +0100 Subject: [PATCH] Added stubs and registered classes for the 3 main RESTful API endpoints: hooks, modules, logs --- core/bootstrap.rb | 6 ++-- core/main/rest/api.rb | 21 ++++++++--- .../handlers/{rest.rb => hookedbrowsers.rb} | 11 ++---- core/main/rest/handlers/logs.rb | 35 +++++++++++++++++++ core/main/rest/handlers/modules.rb | 35 +++++++++++++++++++ 5 files changed, 94 insertions(+), 14 deletions(-) rename core/main/rest/handlers/{rest.rb => hookedbrowsers.rb} (80%) create mode 100644 core/main/rest/handlers/logs.rb create mode 100644 core/main/rest/handlers/modules.rb diff --git a/core/bootstrap.rb b/core/bootstrap.rb index c7169eecd..2ce5f8643 100644 --- a/core/bootstrap.rb +++ b/core/bootstrap.rb @@ -42,5 +42,7 @@ require 'core/extensions' require 'core/hbmanager' ## @note Include RESTful API -require 'core/main/rest/handlers/rest' -require 'core/main/rest/api' \ No newline at end of file +require 'core/main/rest/handlers/hookedbrowsers' +require 'core/main/rest/handlers/modules' +require 'core/main/rest/handlers/logs' +require 'core/main/rest/api' diff --git a/core/main/rest/api.rb b/core/main/rest/api.rb index 51b470af9..c6bfafa59 100644 --- a/core/main/rest/api.rb +++ b/core/main/rest/api.rb @@ -17,14 +17,27 @@ module BeEF module Core module Rest - module RegisterHttpHandler - + module RegisterHooksHandler def self.mount_handler(server) - server.mount('/api', BeEF::Core::Rest::Rest.new) + server.mount('/api/hooks', BeEF::Core::Rest::HookedBrowsers.new) end end - BeEF::API::Registrar.instance.register(BeEF::Core::Rest::RegisterHttpHandler, BeEF::API::Server, 'mount_handler') + module RegisterModulesHandler + def self.mount_handler(server) + server.mount('/api/modules', BeEF::Core::Rest::Modules.new) + end + end + + module RegisterLogsHandler + def self.mount_handler(server) + server.mount('/api/logs', BeEF::Core::Rest::Logs.new) + end + end + + BeEF::API::Registrar.instance.register(BeEF::Core::Rest::RegisterHooksHandler, BeEF::API::Server, 'mount_handler') + BeEF::API::Registrar.instance.register(BeEF::Core::Rest::RegisterModulesHandler, BeEF::API::Server, 'mount_handler') + BeEF::API::Registrar.instance.register(BeEF::Core::Rest::RegisterLogsHandler, BeEF::API::Server, 'mount_handler') end end diff --git a/core/main/rest/handlers/rest.rb b/core/main/rest/handlers/hookedbrowsers.rb similarity index 80% rename from core/main/rest/handlers/rest.rb rename to core/main/rest/handlers/hookedbrowsers.rb index 0164ce408..6e5af093a 100644 --- a/core/main/rest/handlers/rest.rb +++ b/core/main/rest/handlers/hookedbrowsers.rb @@ -17,7 +17,7 @@ module BeEF module Core module Rest - class Rest < Sinatra::Base + class HookedBrowsers < Sinatra::Base config = BeEF::Core::Configuration.instance @@ -25,13 +25,8 @@ module BeEF error 401 unless params[:token] == config.get('beef.api_token') end - get '/sinatra' do - "Sinatra! v.#{Sinatra::VERSION}" - end - - get '/modules' do - puts Sinatra::VERSION - "List all modules!" + get '/' do + "return hooked browsers" end end diff --git a/core/main/rest/handlers/logs.rb b/core/main/rest/handlers/logs.rb new file mode 100644 index 000000000..753b4a7fd --- /dev/null +++ b/core/main/rest/handlers/logs.rb @@ -0,0 +1,35 @@ +# +# Copyright 2012 Wade Alcorn wade@bindshell.net +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +module BeEF + module Core + module Rest + class Logs < Sinatra::Base + + config = BeEF::Core::Configuration.instance + + before do + error 401 unless params[:token] == config.get('beef.api_token') + end + + get '/' do + "return global logs or HB logs" + end + + end + end + end +end \ No newline at end of file diff --git a/core/main/rest/handlers/modules.rb b/core/main/rest/handlers/modules.rb new file mode 100644 index 000000000..1ab184191 --- /dev/null +++ b/core/main/rest/handlers/modules.rb @@ -0,0 +1,35 @@ +# +# Copyright 2012 Wade Alcorn wade@bindshell.net +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +module BeEF + module Core + module Rest + class Modules < Sinatra::Base + + config = BeEF::Core::Configuration.instance + + before do + error 401 unless params[:token] == config.get('beef.api_token') + end + + get '/' do + "return available modules" + end + + end + end + end +end \ No newline at end of file