Add REST example to remove all offline browsers
This commit is contained in:
@@ -55,6 +55,20 @@ def online_browsers
|
||||
end
|
||||
end
|
||||
|
||||
# get offline hooked browsers
|
||||
def offline_browsers
|
||||
begin
|
||||
print_verbose "Retrieving offline browsers"
|
||||
response = RestClient.get "#{@url}hooks", {:params => {:token => @token}}
|
||||
result = JSON.parse(response.body)
|
||||
browsers = result["hooked-browsers"]["offline"]
|
||||
print_good "Retrieved offline browser list [#{browsers.size} offline]"
|
||||
browsers
|
||||
rescue => e
|
||||
print_error "Could not retrieve browser details: #{e.message}"
|
||||
end
|
||||
end
|
||||
|
||||
# get hooked browser details by session
|
||||
def browser_details session
|
||||
begin
|
||||
@@ -68,6 +82,18 @@ def browser_details session
|
||||
end
|
||||
end
|
||||
|
||||
# delete a browser by session
|
||||
def delete_browser session
|
||||
begin
|
||||
print_verbose "Removing hooked browser [session: #{session}]"
|
||||
response = RestClient.get "#{@url}hooks/#{session}/delete", {:params => {:token => @token}}
|
||||
print_good "Removed browser [session: #{session}]" if response.code == 200
|
||||
response
|
||||
rescue => e
|
||||
print_error "Could not delete hooked browser: #{e.message}"
|
||||
end
|
||||
end
|
||||
|
||||
# get BeEF logs
|
||||
def logs
|
||||
begin
|
||||
|
||||
81
tools/rest_api_examples/remove-offline-browsers
Normal file
81
tools/rest_api_examples/remove-offline-browsers
Normal file
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env ruby
|
||||
# remove-offline-browsers - Example BeEF RESTful API script
|
||||
# Removes offline browsers from the database
|
||||
# Refer to the wiki for info: https://github.com/beefproject/beef/wiki/BeEF-RESTful-API
|
||||
##
|
||||
require 'rest-client'
|
||||
require 'json'
|
||||
require 'optparse'
|
||||
require 'pp'
|
||||
require './lib/string' # colored strings
|
||||
require './lib/print' # print wrappers
|
||||
require './lib/beef_rest_api'
|
||||
|
||||
if ARGV.length == 0
|
||||
puts "#{$0}:"
|
||||
puts "| Example BeEF RESTful API script"
|
||||
puts "| Use --help for help"
|
||||
puts "|_ Use verbose mode (-v) and debug mode (-d) for more output"
|
||||
exit 1
|
||||
end
|
||||
|
||||
# API config
|
||||
proto = 'http'
|
||||
host = '127.0.0.1'
|
||||
port = '3000'
|
||||
user = 'beef'
|
||||
pass = 'beef'
|
||||
|
||||
# Command line options
|
||||
@debug = false
|
||||
@verbose = false
|
||||
OptionParser.new do |opts|
|
||||
opts.on('-h', '--help', 'Shows this help screen') do
|
||||
puts opts
|
||||
exit 1
|
||||
end
|
||||
opts.on('--host HOST', "Set BeEF host (default: #{host})") do |h|
|
||||
host = h
|
||||
end
|
||||
opts.on('--port PORT', "Set BeEF port (default: #{port})") do |p|
|
||||
port = p
|
||||
end
|
||||
opts.on('--user USERNAME', "Set BeEF username (default: #{user})") do |u|
|
||||
user = u
|
||||
end
|
||||
opts.on('--pass PASSWORD', "Set BeEF password (default: #{pass})") do |p|
|
||||
pass = p
|
||||
end
|
||||
opts.on('--ssl', 'Use HTTPS') do
|
||||
proto = 'https'
|
||||
end
|
||||
opts.on('-v', '--verbose', 'Enable verbose output') do
|
||||
@verbose = true
|
||||
end
|
||||
opts.on('-d', '--debug', 'Enable debug output') do
|
||||
@debug = true
|
||||
end
|
||||
end.parse!
|
||||
|
||||
@api = BeefRestAPI.new proto, host, port, user, pass
|
||||
|
||||
# Retrieve the RESTful API token
|
||||
print_status "Authenticating to: #{proto}://#{host}:#{port}"
|
||||
@api.auth
|
||||
|
||||
# Retrieve BeEF version
|
||||
@api.version
|
||||
|
||||
# Retrieve online hooked browser list
|
||||
hooks = @api.offline_browsers.flatten
|
||||
exit 1 if hooks.empty?
|
||||
print_debug hooks
|
||||
|
||||
# Remove each offline browser
|
||||
hooks.each do |hook|
|
||||
next if hook['id'].nil?
|
||||
print_status "Removing hooked browser [id: #{hook['id']}]"
|
||||
details = @api.delete_browser(hook['session'])
|
||||
print_debug details
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user