Merge branch 'master' of https://github.com/beefproject/beef
This commit is contained in:
1
Gemfile
1
Gemfile
@@ -52,6 +52,7 @@ if ENV['BEEF_TEST']
|
|||||||
gem "test-unit"
|
gem "test-unit"
|
||||||
gem "selenium"
|
gem "selenium"
|
||||||
gem "selenium-webdriver"
|
gem "selenium-webdriver"
|
||||||
|
gem "rspec"
|
||||||
# nokogirl is needed by capybara which may require one of the below commands
|
# nokogirl is needed by capybara which may require one of the below commands
|
||||||
# sudo apt-get install libxslt-dev libxml2-dev
|
# sudo apt-get install libxslt-dev libxml2-dev
|
||||||
# sudo port install libxml2 libxslt
|
# sudo port install libxml2 libxslt
|
||||||
|
|||||||
89
Gemfile.lock
Normal file
89
Gemfile.lock
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
GEM
|
||||||
|
remote: http://rubygems.org/
|
||||||
|
specs:
|
||||||
|
addressable (2.3.6)
|
||||||
|
ansi (1.4.3)
|
||||||
|
daemons (1.1.9)
|
||||||
|
data_objects (0.10.14)
|
||||||
|
addressable (~> 2.1)
|
||||||
|
dm-core (1.2.1)
|
||||||
|
addressable (~> 2.3)
|
||||||
|
dm-do-adapter (1.2.0)
|
||||||
|
data_objects (~> 0.10.6)
|
||||||
|
dm-core (~> 1.2.0)
|
||||||
|
dm-migrations (1.2.0)
|
||||||
|
dm-core (~> 1.2.0)
|
||||||
|
dm-sqlite-adapter (1.2.0)
|
||||||
|
dm-do-adapter (~> 1.2.0)
|
||||||
|
do_sqlite3 (~> 0.10.6)
|
||||||
|
do_sqlite3 (0.10.14)
|
||||||
|
data_objects (= 0.10.14)
|
||||||
|
em-websocket (0.3.8)
|
||||||
|
addressable (>= 2.1.1)
|
||||||
|
eventmachine (>= 0.12.9)
|
||||||
|
erubis (2.7.0)
|
||||||
|
eventmachine (1.0.7)
|
||||||
|
execjs (2.0.2)
|
||||||
|
geoip (1.4.0)
|
||||||
|
json (1.8.1)
|
||||||
|
librex (0.0.68)
|
||||||
|
libv8 (3.11.8.17)
|
||||||
|
msfrpc-client (1.0.1)
|
||||||
|
librex (>= 0.0.32)
|
||||||
|
msgpack (>= 0.4.5)
|
||||||
|
msgpack (0.5.8)
|
||||||
|
multi_json (1.9.3)
|
||||||
|
parseconfig (1.0.4)
|
||||||
|
rack (1.5.2)
|
||||||
|
rack-protection (1.5.3)
|
||||||
|
rack
|
||||||
|
rainbow (2.0.0)
|
||||||
|
ref (1.0.5)
|
||||||
|
rexec (1.6.3)
|
||||||
|
rainbow
|
||||||
|
rubydns (0.7.0)
|
||||||
|
eventmachine (~> 1.0.0)
|
||||||
|
rexec (~> 1.6.2)
|
||||||
|
rubyzip (1.1.3)
|
||||||
|
sinatra (1.4.2)
|
||||||
|
rack (~> 1.5, >= 1.5.2)
|
||||||
|
rack-protection (~> 1.4)
|
||||||
|
tilt (~> 1.3, >= 1.3.4)
|
||||||
|
term-ansicolor (1.1.5)
|
||||||
|
therubyracer (0.11.3)
|
||||||
|
libv8 (~> 3.11.8.12)
|
||||||
|
ref
|
||||||
|
thin (1.6.2)
|
||||||
|
daemons (>= 1.0.9)
|
||||||
|
eventmachine (>= 1.0.0)
|
||||||
|
rack (>= 1.0.0)
|
||||||
|
tilt (1.4.1)
|
||||||
|
uglifier (2.2.1)
|
||||||
|
execjs (>= 0.3.0)
|
||||||
|
multi_json (~> 1.0, >= 1.0.2)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
ruby
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
ansi
|
||||||
|
data_objects
|
||||||
|
dm-core
|
||||||
|
dm-migrations
|
||||||
|
dm-sqlite-adapter
|
||||||
|
em-websocket (~> 0.3.6)
|
||||||
|
erubis
|
||||||
|
eventmachine (= 1.0.3)
|
||||||
|
execjs
|
||||||
|
geoip
|
||||||
|
json
|
||||||
|
msfrpc-client
|
||||||
|
parseconfig
|
||||||
|
rack (= 1.5.2)
|
||||||
|
rubydns (= 0.7.0)
|
||||||
|
rubyzip (>= 1.0.0)
|
||||||
|
sinatra (= 1.4.2)
|
||||||
|
term-ansicolor
|
||||||
|
therubyracer (= 0.11.3)
|
||||||
|
thin
|
||||||
|
uglifier (~> 2.2.1)
|
||||||
@@ -180,8 +180,7 @@ module BeEF
|
|||||||
if config.get("beef.extension.network.enable") == true
|
if config.get("beef.extension.network.enable") == true
|
||||||
if proxy_server =~ /^([\d\.]+):([\d]+)$/
|
if proxy_server =~ /^([\d\.]+):([\d]+)$/
|
||||||
print_debug("Hooked browser [id:#{zombie.id}] is using a proxy [ip: #{$1}]")
|
print_debug("Hooked browser [id:#{zombie.id}] is using a proxy [ip: #{$1}]")
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => $1, :type => 'Proxy', :cid => 'init')
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => $1, :type => 'Proxy', :cid => 'init')
|
||||||
r.save
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -354,8 +353,7 @@ module BeEF
|
|||||||
# add localhost as network host
|
# add localhost as network host
|
||||||
if config.get('beef.extension.network.enable')
|
if config.get('beef.extension.network.enable')
|
||||||
print_debug("Hooked browser has network interface 127.0.0.1")
|
print_debug("Hooked browser has network interface 127.0.0.1")
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => '127.0.0.1', :hostname => 'localhost', :os => BeEF::Core::Models::BrowserDetails.get(session_id, 'OsName'), :cid => 'init')
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => '127.0.0.1', :hostname => 'localhost', :os => BeEF::Core::Models::BrowserDetails.get(session_id, 'OsName'), :cid => 'init')
|
||||||
r.save
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Call autorun modules
|
# Call autorun modules
|
||||||
|
|||||||
@@ -24,6 +24,43 @@ module BeEF
|
|||||||
property :mac, String, :lazy => false
|
property :mac, String, :lazy => false
|
||||||
property :cid, String, :lazy => false # command id or 'init'
|
property :cid, String, :lazy => false # command id or 'init'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Stores a network host in the data store
|
||||||
|
#
|
||||||
|
def self.add(host={})
|
||||||
|
(print_error "Invalid hooked browser session"; return) unless BeEF::Filters.is_valid_hook_session_id?(host[:hooked_browser_id])
|
||||||
|
(print_error "Invalid IP address"; return) unless BeEF::Filters.is_valid_ip?(host[:ip])
|
||||||
|
|
||||||
|
# prevent duplicates
|
||||||
|
return unless BeEF::Core::Models::NetworkHost.all(
|
||||||
|
:hooked_browser_id => host[:hooked_browser_id],
|
||||||
|
:ip => host[:ip],
|
||||||
|
:hostname => host[:hostname],
|
||||||
|
:type => host[:type],
|
||||||
|
:os => host[:os],
|
||||||
|
:mac => host[:mac]).empty?
|
||||||
|
|
||||||
|
if host[:hostname].nil? && host[:type].nil? && host[:os].nil? && host[:mac].nil?
|
||||||
|
return unless BeEF::Core::Models::NetworkHost.all(
|
||||||
|
:hooked_browser_id => host[:hooked_browser_id],
|
||||||
|
:ip => host[:ip]).empty?
|
||||||
|
end
|
||||||
|
|
||||||
|
# store the returned network host details
|
||||||
|
network_host = BeEF::Core::Models::NetworkHost.new(
|
||||||
|
:hooked_browser_id => host[:hooked_browser_id],
|
||||||
|
:ip => host[:ip],
|
||||||
|
:hostname => host[:hostname],
|
||||||
|
:type => host[:type],
|
||||||
|
:os => host[:os],
|
||||||
|
:mac => host[:mac],
|
||||||
|
:cid => host[:cid])
|
||||||
|
result = network_host.save
|
||||||
|
(print_error "Failed to save network host"; return) if result.nil?
|
||||||
|
|
||||||
|
network_host
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -23,6 +23,41 @@ module BeEF
|
|||||||
property :type, String, :lazy => false
|
property :type, String, :lazy => false
|
||||||
property :cid, String, :lazy => false # command id or 'init'
|
property :cid, String, :lazy => false # command id or 'init'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Stores a network service in the data store
|
||||||
|
#
|
||||||
|
def self.add(service={})
|
||||||
|
(print_error "Invalid hooked browser session"; return) if not BeEF::Filters.is_valid_hook_session_id?(service[:hooked_browser_id])
|
||||||
|
(print_error "Invalid IP address"; return) if not BeEF::Filters.is_valid_ip?(service[:ip])
|
||||||
|
|
||||||
|
# store the returned network host details
|
||||||
|
BeEF::Core::Models::NetworkHost.add(
|
||||||
|
:hooked_browser_id => service[:hooked_browser_id],
|
||||||
|
:ip => service[:ip],
|
||||||
|
:cid => service[:cid])
|
||||||
|
|
||||||
|
# prevent duplicates
|
||||||
|
return unless BeEF::Core::Models::NetworkService.all(
|
||||||
|
:hooked_browser_id => service[:hooked_browser_id],
|
||||||
|
:proto => service[:proto],
|
||||||
|
:ip => service[:ip],
|
||||||
|
:port => service[:port],
|
||||||
|
:type => service[:type]).empty?
|
||||||
|
|
||||||
|
# store the returned network service details
|
||||||
|
network_service = BeEF::Core::Models::NetworkService.new(
|
||||||
|
:hooked_browser_id => service[:hooked_browser_id],
|
||||||
|
:proto => service[:proto],
|
||||||
|
:ip => service[:ip],
|
||||||
|
:port => service[:port],
|
||||||
|
:type => service[:type],
|
||||||
|
:cid => service[:cid])
|
||||||
|
result = network_service.save
|
||||||
|
(print_error "Failed to save network service"; return) if result.nil?
|
||||||
|
|
||||||
|
network_service
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ module BeEF
|
|||||||
# Returns the entire list of network hosts for all zombies
|
# Returns the entire list of network hosts for all zombies
|
||||||
get '/hosts' do
|
get '/hosts' do
|
||||||
begin
|
begin
|
||||||
hosts = @nh.all
|
hosts = @nh.all(:unique => true, :order => [:id.asc])
|
||||||
count = hosts.length
|
count = hosts.length
|
||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
@@ -45,7 +45,7 @@ module BeEF
|
|||||||
# Returns the entire list of network services for all zombies
|
# Returns the entire list of network services for all zombies
|
||||||
get '/services' do
|
get '/services' do
|
||||||
begin
|
begin
|
||||||
services = @ns.all
|
services = @ns.all(:unique => true, :order => [:id.asc])
|
||||||
count = services.length
|
count = services.length
|
||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
@@ -63,7 +63,7 @@ module BeEF
|
|||||||
begin
|
begin
|
||||||
id = params[:id]
|
id = params[:id]
|
||||||
|
|
||||||
hosts = @nh.all(:hooked_browser_id => id)
|
hosts = @nh.all(:hooked_browser_id => id, :unique => true, :order => [:id.asc])
|
||||||
count = hosts.length
|
count = hosts.length
|
||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
@@ -84,7 +84,7 @@ module BeEF
|
|||||||
begin
|
begin
|
||||||
id = params[:id]
|
id = params[:id]
|
||||||
|
|
||||||
services = @ns.all(:hooked_browser_id => id)
|
services = @ns.all(:hooked_browser_id => id, :unique => true, :order => [:id.asc])
|
||||||
count = services.length
|
count = services.length
|
||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ beef:
|
|||||||
# NOTE: you must have 'wget' in your PATH
|
# NOTE: you must have 'wget' in your PATH
|
||||||
add_beef_hook: true
|
add_beef_hook: true
|
||||||
user_agent: "Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2"
|
user_agent: "Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2"
|
||||||
|
verify_ssl: true
|
||||||
mass_mailer:
|
mass_mailer:
|
||||||
# NOTE: you must have 'file' in your PATH
|
# NOTE: you must have 'file' in your PATH
|
||||||
user_agent: "Microsoft-MacOutlook/12.12.0.111556"
|
user_agent: "Microsoft-MacOutlook/12.12.0.111556"
|
||||||
@@ -20,6 +21,7 @@ beef:
|
|||||||
port: 587
|
port: 587
|
||||||
use_auth: true
|
use_auth: true
|
||||||
use_tls: true
|
use_tls: true
|
||||||
|
verify_ssl: true
|
||||||
helo: "gmail.com" # this is usually the domain name
|
helo: "gmail.com" # this is usually the domain name
|
||||||
auth: "youruser@gmail.com"
|
auth: "youruser@gmail.com"
|
||||||
password: "yourpass"
|
password: "yourpass"
|
||||||
@@ -50,4 +52,4 @@ beef:
|
|||||||
# the default payload being used is windows/meterpreter/reverse_https
|
# the default payload being used is windows/meterpreter/reverse_https
|
||||||
msf_reverse_handler_host: "127.0.0.1"
|
msf_reverse_handler_host: "127.0.0.1"
|
||||||
msf_reverse_handler_port: "443"
|
msf_reverse_handler_port: "443"
|
||||||
powershell_handler_url: "/ps"
|
powershell_handler_url: "/ps"
|
||||||
|
|||||||
@@ -31,7 +31,9 @@ module BeEF
|
|||||||
# create new SSL context and disable CA chain validation
|
# create new SSL context and disable CA chain validation
|
||||||
if @config.get("#{@config_prefix}.use_tls")
|
if @config.get("#{@config_prefix}.use_tls")
|
||||||
@ctx = OpenSSL::SSL::SSLContext.new
|
@ctx = OpenSSL::SSL::SSLContext.new
|
||||||
@ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE # In case the SMTP server uses a self-signed cert, we proceed anyway
|
if not @config.get("#{@config_prefix}.verify_ssl")
|
||||||
|
@ctx.verify_mode = OpenSSL::SSL::VERIFY_NONE # In case the SMTP server uses a self-signed cert, we proceed anyway
|
||||||
|
end
|
||||||
@ctx.ssl_version = "TLSv1"
|
@ctx.ssl_version = "TLSv1"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,11 @@ module BeEF
|
|||||||
#
|
#
|
||||||
if use_existing.nil? || use_existing == false
|
if use_existing.nil? || use_existing == false
|
||||||
begin #,"--background"
|
begin #,"--background"
|
||||||
IO.popen(["wget", "#{url}", "-c", "-k", "-O", "#{@cloned_pages_dir + output}", "-U", "#{user_agent}", "--no-check-certificate"], 'r+') do |wget_io|
|
verify_ssl_arg = nil
|
||||||
|
if not @config.get('beef.extension.social_engineering.web_cloner.verify_ssl')
|
||||||
|
verify_ssl_arg = "--no-check-certificate"
|
||||||
|
end
|
||||||
|
IO.popen(["wget", "#{url}", "-c", "-k", "-O", "#{@cloned_pages_dir + output}", "-U", "#{user_agent}", verify_ssl_arg], 'r+') do |wget_io|
|
||||||
end
|
end
|
||||||
success = true
|
success = true
|
||||||
rescue Errno::ENOENT => e
|
rescue Errno::ENOENT => e
|
||||||
@@ -170,7 +174,9 @@ module BeEF
|
|||||||
http = Net::HTTP.new(uri.host, uri.port)
|
http = Net::HTTP.new(uri.host, uri.port)
|
||||||
if uri.scheme == "https"
|
if uri.scheme == "https"
|
||||||
http.use_ssl = true
|
http.use_ssl = true
|
||||||
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
if not @config.get('beef.extension.social_engineering.web_cloner.verify_ssl')
|
||||||
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
||||||
|
end
|
||||||
end
|
end
|
||||||
request = Net::HTTP::Get.new(uri.request_uri)
|
request = Net::HTTP::Get.new(uri.request_uri)
|
||||||
response = http.request(request)
|
response = http.request(request)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
Copyright (c) 2013 Niklas von Hertzen (@niklasvh)
|
Copyright (c) 2013 Niklas von Hertzen (@niklasvh)
|
||||||
|
|
||||||
Released under MIT License
|
Released under MIT License
|
||||||
|
Modified for BeEF <http://beefproject.com>
|
||||||
*/
|
*/
|
||||||
(function(window, document, undefined){
|
(function(window, document, undefined){
|
||||||
|
|
||||||
@@ -15,7 +16,7 @@ html2canvas;
|
|||||||
|
|
||||||
function h2clog(a) {
|
function h2clog(a) {
|
||||||
if (_html2canvas.logging && window.console && window.console.log) {
|
if (_html2canvas.logging && window.console && window.console.log) {
|
||||||
window.console.log(a);
|
beef.debug(a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2801,7 +2802,7 @@ _html2canvas.Renderer.Canvas = function(options) {
|
|||||||
if (storageContext.clip){
|
if (storageContext.clip){
|
||||||
ctx.save();
|
ctx.save();
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
// console.log(storageContext);
|
// beef.debug(storageContext);
|
||||||
ctx.rect(storageContext.clip.left, storageContext.clip.top, storageContext.clip.width, storageContext.clip.height);
|
ctx.rect(storageContext.clip.left, storageContext.clip.top, storageContext.clip.width, storageContext.clip.height);
|
||||||
ctx.clip();
|
ctx.clip();
|
||||||
}
|
}
|
||||||
@@ -2838,4 +2839,4 @@ _html2canvas.Renderer.Canvas = function(options) {
|
|||||||
return canvas;
|
return canvas;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})(window,document);
|
})(window,document);
|
||||||
|
|||||||
@@ -31,10 +31,8 @@ class Asus_rt_series_get_info < BeEF::Core::Command
|
|||||||
|
|
||||||
if !ip.nil? && BeEF::Filters.is_valid_ip?(ip)
|
if !ip.nil? && BeEF::Filters.is_valid_ip?(ip)
|
||||||
print_debug("Hooked browser found Asus RT series router [ip: #{ip}]")
|
print_debug("Hooked browser found Asus RT series router [ip: #{ip}]")
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :type => 'Asus Router', :cid => cid)
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => ip, :type => 'Asus Router', :cid => cid)
|
||||||
r.save
|
BeEF::Core::Models::NetworkService.add(:hooked_browser_id => session_id, :proto => 'http', :ip => ip, :port => 80, :type => 'HTTP Server', :cid => cid)
|
||||||
r = BeEF::Core::Models::NetworkService.new(:hooked_browser_id => session_id, :proto => 'http', :ip => ip, :port => 80, :type => 'HTTP Server', :cid => cid)
|
|
||||||
r.save
|
|
||||||
end
|
end
|
||||||
clients.scan(/([\d\.]+,[:\dA-F]{17})/).flatten.each do |client|
|
clients.scan(/([\d\.]+,[:\dA-F]{17})/).flatten.each do |client|
|
||||||
next if client.nil?
|
next if client.nil?
|
||||||
@@ -43,22 +41,19 @@ class Asus_rt_series_get_info < BeEF::Core::Command
|
|||||||
mac = $2
|
mac = $2
|
||||||
if BeEF::Filters.is_valid_ip?(ip)
|
if BeEF::Filters.is_valid_ip?(ip)
|
||||||
print_debug("Hooked browser found router client [ip: #{ip}, mac: #{mac}]")
|
print_debug("Hooked browser found router client [ip: #{ip}, mac: #{mac}]")
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :mac => mac, :cid => cid)
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => ip, :mac => mac, :cid => cid)
|
||||||
r.save
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if !gateway.nil? && BeEF::Filters.is_valid_ip?(gateway)
|
if !gateway.nil? && BeEF::Filters.is_valid_ip?(gateway)
|
||||||
print_debug("Hooked browser found WAN gateway server [ip: #{gateway}]")
|
print_debug("Hooked browser found WAN gateway server [ip: #{gateway}]")
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => gateway, :type => 'WAN Gateway', :cid => cid)
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => gateway, :type => 'WAN Gateway', :cid => cid)
|
||||||
r.save
|
|
||||||
end
|
end
|
||||||
if !dns_servers.nil? && dns_servers =~ /^([\d\. ]+)$/
|
if !dns_servers.nil? && dns_servers =~ /^([\d\. ]+)$/
|
||||||
dns_servers.split(/ /).uniq.each do |dns|
|
dns_servers.split(/ /).uniq.each do |dns|
|
||||||
if BeEF::Filters.is_valid_ip?(dns)
|
if BeEF::Filters.is_valid_ip?(dns)
|
||||||
print_debug("Hooked browser found DNS server [ip: #{dns}]")
|
print_debug("Hooked browser found DNS server [ip: #{dns}]")
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => dns, :type => 'DNS Server', :cid => cid)
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => dns, :type => 'DNS Server', :cid => cid)
|
||||||
r.save
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -25,14 +25,9 @@ class Detect_cups < BeEF::Core::Command
|
|||||||
session_id = @datastore['beefhook']
|
session_id = @datastore['beefhook']
|
||||||
type = 'CUPS'
|
type = 'CUPS'
|
||||||
cid = @datastore['cid'].to_i
|
cid = @datastore['cid'].to_i
|
||||||
if BeEF::Filters.is_valid_ip?(ip) && BeEF::Core::Models::NetworkService.all(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => type).empty?
|
if BeEF::Filters.is_valid_ip?(ip)
|
||||||
print_debug("Hooked browser found 'CUPS' [proto: #{proto}, ip: #{ip}, port: #{port}]")
|
print_debug("Hooked browser found 'CUPS' [proto: #{proto}, ip: #{ip}, port: #{port}]")
|
||||||
r = BeEF::Core::Models::NetworkService.new(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => type, :cid => cid)
|
BeEF::Core::Models::NetworkService.add(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => type, :cid => cid)
|
||||||
r.save
|
|
||||||
if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip).empty?
|
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
|
||||||
r.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -30,10 +30,9 @@ class Get_internal_ip < BeEF::Core::Command
|
|||||||
# save the network host
|
# save the network host
|
||||||
if @datastore['results'] =~ /^([\d\.]+)$/
|
if @datastore['results'] =~ /^([\d\.]+)$/
|
||||||
ip = $1
|
ip = $1
|
||||||
if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip).empty? # prevent duplicates
|
if BeEF::Filters.is_valid_ip?(ip)
|
||||||
print_debug("Hooked browser has network interface #{ip}")
|
print_debug("Hooked browser has network interface #{ip}")
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
||||||
r.save
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -12,10 +12,8 @@ class Get_internal_ip_webrtc < BeEF::Core::Command
|
|||||||
|
|
||||||
configuration = BeEF::Core::Configuration.instance
|
configuration = BeEF::Core::Configuration.instance
|
||||||
if configuration.get("beef.extension.network.enable") == true
|
if configuration.get("beef.extension.network.enable") == true
|
||||||
|
|
||||||
session_id = @datastore['beefhook']
|
session_id = @datastore['beefhook']
|
||||||
cid = @datastore['cid'].to_i
|
cid = @datastore['cid'].to_i
|
||||||
|
|
||||||
# save the network host
|
# save the network host
|
||||||
if @datastore['results'] =~ /IP is ([\d\.,]+)/
|
if @datastore['results'] =~ /IP is ([\d\.,]+)/
|
||||||
ips = $1.to_s.split(/,/)
|
ips = $1.to_s.split(/,/)
|
||||||
@@ -25,16 +23,12 @@ class Get_internal_ip_webrtc < BeEF::Core::Command
|
|||||||
next unless ip =~ /^[\d\.]+$/
|
next unless ip =~ /^[\d\.]+$/
|
||||||
next if ip =~ /^0\.0\.0\.0$/
|
next if ip =~ /^0\.0\.0\.0$/
|
||||||
next unless BeEF::Filters.is_valid_ip?(ip)
|
next unless BeEF::Filters.is_valid_ip?(ip)
|
||||||
if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip).empty? # prevent duplicates
|
print_debug("Hooked browser has network interface #{ip}")
|
||||||
print_debug("Hooked browser has network interface #{ip}")
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => ip, :os => os, :cid => cid)
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :os => os, :cid => cid)
|
|
||||||
r.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -22,14 +22,9 @@ class Cross_origin_scanner < BeEF::Core::Command
|
|||||||
port = $2
|
port = $2
|
||||||
proto = 'http'
|
proto = 'http'
|
||||||
type = 'HTTP Server (CORS)'
|
type = 'HTTP Server (CORS)'
|
||||||
print_debug("Hooked browser found HTTP server #{ip}:#{port}")
|
if BeEF::Filters.is_valid_ip?(ip)
|
||||||
if !ip.nil? && !port.nil? && BeEF::Filters.is_valid_ip?(ip) && BeEF::Core::Models::NetworkService.all(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => type).empty?
|
print_debug("Hooked browser found HTTP server #{ip}:#{port}")
|
||||||
r = BeEF::Core::Models::NetworkService.new(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => type, :cid => cid)
|
BeEF::Core::Models::NetworkService.add(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => type, :cid => cid)
|
||||||
r.save
|
|
||||||
if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip).empty?
|
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
|
||||||
r.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -35,12 +35,7 @@ class Get_http_servers < BeEF::Core::Command
|
|||||||
cid = @datastore['cid'].to_i
|
cid = @datastore['cid'].to_i
|
||||||
if !ip.nil? && BeEF::Filters.is_valid_ip?(ip)
|
if !ip.nil? && BeEF::Filters.is_valid_ip?(ip)
|
||||||
print_debug("Hooked browser found HTTP Server [proto: #{proto}, ip: #{ip}, port: #{port}]")
|
print_debug("Hooked browser found HTTP Server [proto: #{proto}, ip: #{ip}, port: #{port}]")
|
||||||
r = BeEF::Core::Models::NetworkService.new(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => "HTTP Server", :cid => cid)
|
BeEF::Core::Models::NetworkService.add(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => "HTTP Server", :cid => cid)
|
||||||
r.save
|
|
||||||
if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip).empty?
|
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
|
||||||
r.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -37,11 +37,8 @@ class Identify_lan_subnets < BeEF::Core::Command
|
|||||||
next if ip.nil?
|
next if ip.nil?
|
||||||
next unless ip.to_s =~ /^([\d\.]+)$/
|
next unless ip.to_s =~ /^([\d\.]+)$/
|
||||||
next unless BeEF::Filters.is_valid_ip?(ip)
|
next unless BeEF::Filters.is_valid_ip?(ip)
|
||||||
if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip).empty? # prevent duplicates
|
print_debug("Hooked browser found host #{ip}")
|
||||||
print_debug("Hooked browser found host #{ip}")
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
|
||||||
r.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -35,14 +35,9 @@ class Internal_network_fingerprinting < BeEF::Core::Command
|
|||||||
url = $5
|
url = $5
|
||||||
session_id = @datastore['beefhook']
|
session_id = @datastore['beefhook']
|
||||||
cid = @datastore['cid'].to_i
|
cid = @datastore['cid'].to_i
|
||||||
if !ip.nil? && BeEF::Filters.is_valid_ip?(ip)
|
if BeEF::Filters.is_valid_ip?(ip)
|
||||||
print_debug("Hooked browser found '#{discovered}' [ip: #{ip}]")
|
print_debug("Hooked browser found '#{discovered}' [ip: #{ip}]")
|
||||||
r = BeEF::Core::Models::NetworkService.new(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => discovered, :cid => cid)
|
BeEF::Core::Models::NetworkService.add(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => discovered, :cid => cid)
|
||||||
r.save
|
|
||||||
if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip).empty?
|
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
|
||||||
r.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -25,20 +25,18 @@ class Fingerprint_routers < BeEF::Core::Command
|
|||||||
service = $4
|
service = $4
|
||||||
session_id = @datastore['beefhook']
|
session_id = @datastore['beefhook']
|
||||||
cid = @datastore['cid'].to_i
|
cid = @datastore['cid'].to_i
|
||||||
if !ip.nil? && BeEF::Filters.is_valid_ip?(ip) && BeEF::Core::Models::NetworkService.all(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => service).empty?
|
if BeEF::Filters.is_valid_ip?(ip)
|
||||||
print_debug("Hooked browser found network service " + service + " [proto: #{proto}, ip: #{ip}, port: #{port}]")
|
print_debug("Hooked browser found network service " + service + " [proto: #{proto}, ip: #{ip}, port: #{port}]")
|
||||||
r = BeEF::Core::Models::NetworkService.new(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => service, :cid => cid)
|
BeEF::Core::Models::NetworkService.add(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => service, :cid => cid)
|
||||||
r.save
|
|
||||||
end
|
end
|
||||||
elsif @datastore['results'] =~ /^ip=(.+)&device=(.+)/
|
elsif @datastore['results'] =~ /^ip=(.+)&device=(.+)/
|
||||||
ip = $1
|
ip = $1
|
||||||
device = $2
|
device = $2
|
||||||
session_id = @datastore['beefhook']
|
session_id = @datastore['beefhook']
|
||||||
cid = @datastore['cid'].to_i
|
cid = @datastore['cid'].to_i
|
||||||
if !ip.nil? && BeEF::Filters.is_valid_ip?(ip) && BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip, :type => device).empty?
|
if BeEF::Filters.is_valid_ip?(ip)
|
||||||
print_debug("Hooked browser found network device " + device + " [ip: #{ip}]")
|
print_debug("Hooked browser found network device " + device + " [ip: #{ip}]")
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :type => device, :cid => cid)
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => ip, :type => device, :cid => cid)
|
||||||
r.save
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -37,11 +37,8 @@ class Ping_sweep < BeEF::Core::Command
|
|||||||
if @datastore['results'] =~ /host=([\d\.]+) is alive/
|
if @datastore['results'] =~ /host=([\d\.]+) is alive/
|
||||||
ip = $1
|
ip = $1
|
||||||
if BeEF::Filters.is_valid_ip?(ip)
|
if BeEF::Filters.is_valid_ip?(ip)
|
||||||
if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip).empty? # prevent duplicates
|
print_debug("Hooked browser has network interface #{ip}")
|
||||||
print_debug("Hooked browser has network interface #{ip}")
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
|
||||||
r.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -39,14 +39,9 @@ class Port_scanner < BeEF::Core::Command
|
|||||||
session_id = @datastore['beefhook']
|
session_id = @datastore['beefhook']
|
||||||
proto = 'http'
|
proto = 'http'
|
||||||
cid = @datastore['cid'].to_i
|
cid = @datastore['cid'].to_i
|
||||||
if !ip.nil? && BeEF::Filters.is_valid_ip?(ip) && BeEF::Core::Models::NetworkService.all(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => service).empty?
|
if BeEF::Filters.is_valid_ip?(ip)
|
||||||
print_debug("Hooked browser found network service [ip: #{ip}, port: #{port}]")
|
print_debug("Hooked browser found network service [ip: #{ip}, port: #{port}]")
|
||||||
r = BeEF::Core::Models::NetworkService.new(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => service, :cid => cid)
|
BeEF::Core::Models::NetworkService.add(:hooked_browser_id => session_id, :proto => proto, :ip => ip, :port => port, :type => service, :cid => cid)
|
||||||
r.save
|
|
||||||
if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => session_id, :ip => ip).empty?
|
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => session_id, :ip => ip, :cid => cid)
|
|
||||||
r.save
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class BeefTest
|
|||||||
session.fill_in 'user', :with => 'beef'
|
session.fill_in 'user', :with => 'beef'
|
||||||
session.fill_in 'pass', :with => 'beef'
|
session.fill_in 'pass', :with => 'beef'
|
||||||
session.click_button('Login')
|
session.click_button('Login')
|
||||||
sleep 20.0
|
sleep 10.0
|
||||||
|
|
||||||
session
|
session
|
||||||
end
|
end
|
||||||
@@ -46,4 +46,4 @@ class BeefTest
|
|||||||
victim
|
victim
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -6,28 +6,30 @@
|
|||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require '../common/test_constants'
|
require '../common/test_constants'
|
||||||
require '../common/beef_test'
|
require '../common/beef_test'
|
||||||
|
require 'rspec/expectations'
|
||||||
|
|
||||||
class TC_Login < Test::Unit::TestCase
|
class TC_Login < Test::Unit::TestCase
|
||||||
|
include RSpec::Matchers
|
||||||
|
|
||||||
def test_log_in
|
def test_log_in
|
||||||
session = Capybara::Session.new(:selenium)
|
session = Capybara::Session.new(:selenium)
|
||||||
session.visit(ATTACK_URL)
|
session.visit(ATTACK_URL)
|
||||||
sleep 2.0
|
sleep 2.0
|
||||||
BeefTest.save_screenshot(session)
|
BeefTest.save_screenshot(session)
|
||||||
session.has_content?('BeEF Authentication')
|
session.should have_title('BeEF Authentication')
|
||||||
session.fill_in 'user', :with => 'beef'
|
session.fill_in 'user', :with => 'beef'
|
||||||
session.fill_in 'pass', :with => 'beef'
|
session.fill_in 'pass', :with => 'beef'
|
||||||
BeefTest.save_screenshot(session)
|
BeefTest.save_screenshot(session)
|
||||||
session.click_button('Login')
|
session.click_button('Login')
|
||||||
sleep 20.0
|
sleep 10.0
|
||||||
session.has_content?('logout')
|
session.should have_content('Logout')
|
||||||
BeefTest.save_screenshot(session)
|
BeefTest.save_screenshot(session)
|
||||||
session.driver.browser.close
|
session.driver.browser.close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_beef_test_login_function
|
def test_beef_test_login_function
|
||||||
session = BeefTest.login
|
session = BeefTest.login
|
||||||
session.has_content?('logout')
|
session.should have_content('Logout')
|
||||||
BeefTest.save_screenshot(session)
|
BeefTest.save_screenshot(session)
|
||||||
session.driver.browser.close
|
session.driver.browser.close
|
||||||
end
|
end
|
||||||
@@ -35,7 +37,8 @@ class TC_Login < Test::Unit::TestCase
|
|||||||
def test_log_out
|
def test_log_out
|
||||||
session = BeefTest.login
|
session = BeefTest.login
|
||||||
session.click_link('Logout')
|
session.click_link('Logout')
|
||||||
session.has_content?('BeEF Authentication')
|
sleep 2.0
|
||||||
|
session.should have_title('BeEF Authentication')
|
||||||
BeefTest.save_screenshot(session)
|
BeefTest.save_screenshot(session)
|
||||||
session.driver.browser.close
|
session.driver.browser.close
|
||||||
end
|
end
|
||||||
@@ -43,7 +46,8 @@ class TC_Login < Test::Unit::TestCase
|
|||||||
def test_beef_test_logout_function
|
def test_beef_test_logout_function
|
||||||
session = BeefTest.login
|
session = BeefTest.login
|
||||||
session = BeefTest.logout(session)
|
session = BeefTest.logout(session)
|
||||||
session.has_content?('BeEF Authentication')
|
sleep 2.0
|
||||||
|
session.should have_title('BeEF Authentication')
|
||||||
BeefTest.save_screenshot(session)
|
BeefTest.save_screenshot(session)
|
||||||
session.driver.browser.close
|
session.driver.browser.close
|
||||||
end
|
end
|
||||||
@@ -51,13 +55,13 @@ class TC_Login < Test::Unit::TestCase
|
|||||||
def test_logs_tab
|
def test_logs_tab
|
||||||
session = BeefTest.login
|
session = BeefTest.login
|
||||||
session.click_on('Logs')
|
session.click_on('Logs')
|
||||||
session.has_content?('logout')
|
session.should have_content('Logout')
|
||||||
session.has_content?('Hooked Browsers')
|
session.should have_content('Hooked Browsers')
|
||||||
session.has_content?('Type')
|
session.should have_content('Type')
|
||||||
session.has_content?('Event')
|
session.should have_content('Event')
|
||||||
session.has_content?('Date')
|
session.should have_content('Date')
|
||||||
session.has_content?('No logs to display')
|
session.should have_content('Page')
|
||||||
session.has_content?('Page')
|
session.should have_content('User with ip 127.0.0.1 has successfuly authenticated in the application')
|
||||||
|
|
||||||
BeefTest.save_screenshot(session)
|
BeefTest.save_screenshot(session)
|
||||||
BeefTest.logout(session)
|
BeefTest.logout(session)
|
||||||
@@ -70,15 +74,15 @@ class TC_Login < Test::Unit::TestCase
|
|||||||
|
|
||||||
sleep 5.0
|
sleep 5.0
|
||||||
|
|
||||||
attacker.has_content?(VICTIM_DOMAIN)
|
attacker.should have_content(VICTIM_DOMAIN)
|
||||||
attacker.has_content?('127.0.0.1')
|
attacker.should have_content('127.0.0.1')
|
||||||
attacker.click_on('127.0.0.1')
|
attacker.click_on('127.0.0.1')
|
||||||
|
|
||||||
sleep 1.0
|
sleep 1.0
|
||||||
|
|
||||||
attacker.has_content?('Details')
|
attacker.should have_content('Details')
|
||||||
attacker.has_content?('Commands')
|
attacker.should have_content('Commands')
|
||||||
attacker.has_content?('Rider')
|
attacker.should have_content('Rider')
|
||||||
|
|
||||||
BeefTest.save_screenshot(attacker)
|
BeefTest.save_screenshot(attacker)
|
||||||
BeefTest.save_screenshot(victim)
|
BeefTest.save_screenshot(victim)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ class TC_SocialEngineeringRest < Test::Unit::TestCase
|
|||||||
|
|
||||||
json = {:url => url, :mount => mount, :dns_spoof => dns_spoof}.to_json
|
json = {:url => url, :mount => mount, :dns_spoof => dns_spoof}.to_json
|
||||||
|
|
||||||
domain = url.gsub(%r{^http://}, '')
|
domain = url.gsub(%r{^https?://}, '')
|
||||||
|
|
||||||
response = RestClient.post("#{RESTAPI_SENG}/clone_page?token=#{@@token}",
|
response = RestClient.post("#{RESTAPI_SENG}/clone_page?token=#{@@token}",
|
||||||
json,
|
json,
|
||||||
|
|||||||
@@ -48,4 +48,14 @@ class TC_Modules < Test::Unit::TestCase
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_safe_client_debug_log
|
||||||
|
Dir['../../modules/**/*.js'].each do |path|
|
||||||
|
File.open(path) do |f|
|
||||||
|
f.grep(/\W*console\.log\W*\(/im) do |line|
|
||||||
|
assert(false, "Function 'console.log' used instead of 'beef.debug' in command module: " + path + ':' + line)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -28,8 +28,7 @@ class TC_Network < Test::Unit::TestCase
|
|||||||
# Tests procedure for properly adding new host
|
# Tests procedure for properly adding new host
|
||||||
def test_02_add_host_good
|
def test_02_add_host_good
|
||||||
assert_nothing_raised do
|
assert_nothing_raised do
|
||||||
r = BeEF::Core::Models::NetworkHost.new(:hooked_browser_id => '1234', :ip => '127.0.0.1')
|
BeEF::Core::Models::NetworkHost.add(:hooked_browser_id => '1234', :ip => '127.0.0.1')
|
||||||
r.save
|
|
||||||
raise "Adding network host failed" if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => '1234', :ip => '127.0.0.1').empty?
|
raise "Adding network host failed" if BeEF::Core::Models::NetworkHost.all(:hooked_browser_id => '1234', :ip => '127.0.0.1').empty?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -37,8 +36,7 @@ class TC_Network < Test::Unit::TestCase
|
|||||||
# Tests procedure for properly adding new service
|
# Tests procedure for properly adding new service
|
||||||
def test_03_add_service_good
|
def test_03_add_service_good
|
||||||
assert_nothing_raised do
|
assert_nothing_raised do
|
||||||
r = BeEF::Core::Models::NetworkService.new(:hooked_browser_id => '1234', :proto => 'http', :ip => '127.0.0.1', :port => 80, :type => 'Apache', :cid => 1)
|
BeEF::Core::Models::NetworkService.add(:hooked_browser_id => '1234', :proto => 'http', :ip => '127.0.0.1', :port => 80, :type => 'Apache', :cid => 1)
|
||||||
r.save
|
|
||||||
raise "Adding network service failed" if BeEF::Core::Models::NetworkService.all(:hooked_browser_id => '1234', :ip => '127.0.0.1').empty?
|
raise "Adding network service failed" if BeEF::Core::Models::NetworkService.all(:hooked_browser_id => '1234', :ip => '127.0.0.1').empty?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user