Add DNS REST examples

This commit is contained in:
Brendan Coles
2017-04-27 11:23:14 +00:00
parent 8b9e8f02d3
commit eb8964f3ca
2 changed files with 68 additions and 5 deletions

View File

@@ -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"

View File

@@ -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
################################################################################