Add DNS REST examples
This commit is contained in:
@@ -66,10 +66,28 @@ print_status "Authenticating to: #{proto}://#{host}:#{port}"
|
||||
# Retrieve BeEF version
|
||||
@api.version
|
||||
|
||||
# Retrieve online hooked browser list
|
||||
hooks = @api.online_browsers.flatten
|
||||
exit 1 if hooks.empty?
|
||||
print_debug hooks
|
||||
# Add a rule
|
||||
print_status "Adding a DNS rule"
|
||||
pattern = 'beefproject.com'
|
||||
resource = 'A'
|
||||
response = ['127.0.0.1', '127.0.0.2']
|
||||
result = @api.dns_add_rule(pattern, resource, response)
|
||||
print_debug result
|
||||
id = result['id']
|
||||
|
||||
# Retrieve ruleset
|
||||
print_status "Retrieving DNS rule set"
|
||||
rules = @api.dns_ruleset
|
||||
print_debug rules
|
||||
|
||||
# Retrieve rule details
|
||||
print_status "Retrieving details for rule [id: #{id}]"
|
||||
rule = @api.dns_get_rule(id)
|
||||
print_debug rule
|
||||
|
||||
print_status "Deleting rule [id: #{id}]"
|
||||
result = @api.dns_delete_rule(id)
|
||||
print_debug result
|
||||
|
||||
# Retrieve ruleset
|
||||
print_status "Retrieving DNS rule set"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class BeefRestAPI
|
||||
|
||||
# initialize
|
||||
def initialize proto = 'http', host = '127.0.0.1', port = '3000', user = 'beef', pass = 'beef'
|
||||
def initialize proto = 'https', host = '127.0.0.1', port = '3000', user = 'beef', pass = 'beef'
|
||||
@user = user
|
||||
@pass = pass
|
||||
@url = "#{proto}://#{host}:#{port}/api/"
|
||||
@@ -327,6 +327,51 @@ def dns_ruleset
|
||||
end
|
||||
end
|
||||
|
||||
# add a rule
|
||||
def dns_add_rule(dns_pattern, dns_resource, dns_response)
|
||||
dns_response = [dns_response] if dns_response.is_a?(String)
|
||||
begin
|
||||
print_verbose "Adding DNS rule [pattern: #{dns_pattern}, resource: #{dns_resource}, response: #{dns_response}]"
|
||||
response = RestClient.post "#{@url}dns/rule?token=#{@token}", {
|
||||
'pattern' => dns_pattern,
|
||||
'resource' => dns_resource,
|
||||
'response' => dns_response }.to_json,
|
||||
:content_type => :json,
|
||||
:accept => :json
|
||||
details = JSON.parse(response.body)
|
||||
print_good "Added rule [id: #{details['id']}]"
|
||||
details
|
||||
rescue => e
|
||||
print_error "Could not add DNS rule: #{e.message}"
|
||||
end
|
||||
end
|
||||
|
||||
# get rule details
|
||||
def dns_get_rule(id)
|
||||
begin
|
||||
print_verbose "Retrieving DNS rule details [id: #{id}]"
|
||||
response = RestClient.get "#{@url}dns/rule/#{id}", {:params => {:token => @token}}
|
||||
details = JSON.parse(response.body)
|
||||
print_good "Retrieved rule [id: #{details['id']}]"
|
||||
details
|
||||
rescue => e
|
||||
print_error "Could not retrieve DNS rule: #{e.message}"
|
||||
end
|
||||
end
|
||||
|
||||
# delete a rule
|
||||
def dns_delete_rule(id)
|
||||
begin
|
||||
response = RestClient.delete "#{@url}dns/rule/#{id}?token=#{@token}"
|
||||
details = JSON.parse(response.body)
|
||||
print_good "Deleted rule [id: #{id}]"
|
||||
details
|
||||
rescue => e
|
||||
print_error "Could not delete DNS rule: #{e.message}"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
################################################################################
|
||||
### WebRTC
|
||||
################################################################################
|
||||
|
||||
Reference in New Issue
Block a user