diff --git a/.travis.yml b/.travis.yml
index b6894b2597d0..28f0b510f754 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,8 +16,6 @@ rvm:
- '2.4.1'
env:
-# TODO: restore these tests when the code passes them!
-# - CMD='bundle exec rake cucumber cucumber:boot CREATE_BINSTUBS=true'
- CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag content"'
- CMD='bundle exec rake rspec-rerun:spec SPEC_OPTS="--tag ~content"'
diff --git a/Gemfile b/Gemfile
index 09fe9ccc852e..4dbdbacb6dfe 100755
--- a/Gemfile
+++ b/Gemfile
@@ -37,14 +37,6 @@ group :development, :test do
end
group :test do
- # cucumber extension for testing command line applications, like msfconsole
- gem 'aruba'
- # cucumber + automatic database cleaning with database_cleaner
- gem 'cucumber-rails', :require => false
- gem 'shoulda-matchers'
# Manipulate Time.now in specs
gem 'timecop'
- # Needed to work around a regression between capybara 2.7.1 and xpath 2.1
- # XXX remove when capybara is updated to work with xpath 2.1
- gem 'xpath', '2.0'
end
diff --git a/Gemfile.lock b/Gemfile.lock
index 7ae575d04900..6da285dbd249 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -102,46 +102,12 @@ GEM
arel (6.0.4)
arel-helpers (2.4.0)
activerecord (>= 3.1.0, < 6)
- aruba (0.14.2)
- childprocess (~> 0.5.6)
- contracts (~> 0.9)
- cucumber (>= 1.3.19)
- ffi (~> 1.9.10)
- rspec-expectations (>= 2.99)
- thor (~> 0.19)
backports (3.8.0)
bcrypt (3.1.11)
bindata (2.4.0)
bit-struct (0.16)
builder (3.2.3)
- capybara (2.14.4)
- addressable
- mime-types (>= 1.16)
- nokogiri (>= 1.3.3)
- rack (>= 1.0.0)
- rack-test (>= 0.5.4)
- xpath (~> 2.0)
- childprocess (0.5.9)
- ffi (~> 1.0, >= 1.0.11)
coderay (1.1.1)
- contracts (0.16.0)
- cucumber (2.4.0)
- builder (>= 2.1.2)
- cucumber-core (~> 1.5.0)
- cucumber-wire (~> 0.0.1)
- diff-lcs (>= 1.1.3)
- gherkin (~> 4.0)
- multi_json (>= 1.7.5, < 2.0)
- multi_test (>= 0.1.2)
- cucumber-core (1.5.0)
- gherkin (~> 4.0)
- cucumber-rails (1.5.0)
- capybara (>= 1.1.2, < 3)
- cucumber (>= 1.3.8, < 4)
- mime-types (>= 1.17, < 4)
- nokogiri (~> 1.5)
- railties (>= 4, < 5.2)
- cucumber-wire (0.0.1)
diff-lcs (1.3)
dnsruby (1.60.1)
docile (1.1.5)
@@ -153,10 +119,8 @@ GEM
railties (>= 3.0.0)
faraday (0.12.1)
multipart-post (>= 1.2, < 3)
- ffi (1.9.18)
filesize (0.1.1)
fivemat (1.3.5)
- gherkin (4.1.3)
google-protobuf (3.3.0)
googleauth (0.5.1)
faraday (~> 0.9)
@@ -216,14 +180,10 @@ GEM
recog (~> 2.0)
metasploit_payloads-mettle (0.1.10)
method_source (0.8.2)
- mime-types (3.1)
- mime-types-data (~> 3.2015)
- mime-types-data (3.2016.0521)
mini_portile2 (2.2.0)
minitest (5.10.2)
msgpack (1.1.0)
multi_json (1.12.1)
- multi_test (0.1.2)
multipart-post (2.0.0)
nessus_rest (0.1.6)
net-ssh (4.1.0)
@@ -358,8 +318,6 @@ GEM
sawyer (0.8.1)
addressable (>= 2.3.5, < 2.6)
faraday (~> 0.8, < 1.0)
- shoulda-matchers (3.1.1)
- activesupport (>= 4.0.0)
signet (0.7.3)
addressable (~> 2.3)
faraday (~> 0.9)
@@ -386,16 +344,12 @@ GEM
activemodel (>= 4.2.7)
activesupport (>= 4.2.7)
xmlrpc (0.3.0)
- xpath (2.0.0)
- nokogiri (~> 1.3)
yard (0.9.9)
PLATFORMS
ruby
DEPENDENCIES
- aruba
- cucumber-rails
factory_girl_rails
fivemat
metasploit-aggregator
@@ -406,10 +360,8 @@ DEPENDENCIES
redcarpet
rspec-rails
rspec-rerun
- shoulda-matchers
simplecov
timecop
- xpath (= 2.0)
yard
BUNDLED WITH
diff --git a/LICENSE_GEMS b/LICENSE_GEMS
index a4e325a2cfe4..2fe90885c515 100644
--- a/LICENSE_GEMS
+++ b/LICENSE_GEMS
@@ -1,71 +1,62 @@
This file is auto-generated by tools/dev/update_gem_licenses.sh
-actionpack, 4.2.8, MIT
-actionview, 4.2.8, MIT
-activemodel, 4.2.8, MIT
-activerecord, 4.2.8, MIT
-activesupport, 4.2.8, MIT
+Ascii85, 1.0.2, MIT
+actionpack, 4.2.9, MIT
+actionview, 4.2.9, MIT
+activemodel, 4.2.9, MIT
+activerecord, 4.2.9, MIT
+activesupport, 4.2.9, MIT
addressable, 2.5.1, "Apache 2.0"
+afm, 0.2.2, MIT
arel, 6.0.4, MIT
arel-helpers, 2.4.0, unknown
-aruba, 0.14.2, MIT
backports, 3.8.0, MIT
bcrypt, 3.1.11, MIT
bindata, 2.4.0, ruby
bit-struct, 0.16, ruby
builder, 3.2.3, MIT
-bundler, 1.15.0, MIT
-capybara, 2.14.0, MIT
-childprocess, 0.5.9, MIT
+bundler, 1.15.1, MIT
coderay, 1.1.1, MIT
-contracts, 0.16.0, "Simplified BSD"
-cucumber, 2.4.0, MIT
-cucumber-core, 1.5.0, MIT
-cucumber-rails, 1.5.0, MIT
-cucumber-wire, 0.0.1, MIT
diff-lcs, 1.3, "MIT, Artistic-2.0, GPL-2.0+"
+dnsruby, 1.60.1, "Apache 2.0"
docile, 1.1.5, MIT
erubis, 2.7.0, MIT
factory_girl, 4.8.0, MIT
factory_girl_rails, 4.8.0, MIT
faraday, 0.12.1, MIT
-ffi, 1.9.18, "New BSD"
filesize, 0.1.1, MIT
-fivemat, 1.3.3, MIT
-gherkin, 4.1.3, MIT
+fivemat, 1.3.5, MIT
google-protobuf, 3.3.0, "New BSD"
googleauth, 0.5.1, "Apache 2.0"
-grpc, 1.3.4, "New BSD"
-i18n, 0.8.1, MIT
+grpc, 1.4.1, "New BSD"
+hashery, 2.1.2, "Simplified BSD"
+i18n, 0.8.6, MIT
jsobfu, 0.4.2, "New BSD"
json, 2.1.0, ruby
jwt, 1.5.6, MIT
little-plugger, 1.1.4, MIT
logging, 2.2.2, MIT
loofah, 2.0.3, MIT
-memoist, 0.15.0, MIT
+memoist, 0.16.0, MIT
metasm, 1.0.3, LGPL
metasploit-aggregator, 0.2.1, "New BSD"
-metasploit-concern, 2.0.4, "New BSD"
-metasploit-credential, 2.0.9, "New BSD"
-metasploit-framework, 4.14.23, "New BSD"
+metasploit-concern, 2.0.5, "New BSD"
+metasploit-credential, 2.0.10, "New BSD"
+metasploit-framework, 4.15.0, "New BSD"
metasploit-model, 2.0.4, "New BSD"
-metasploit-payloads, 1.2.29, "3-clause (or ""modified"") BSD"
-metasploit_data_models, 2.0.14, "New BSD"
-metasploit_payloads-mettle, 0.1.9, "3-clause (or ""modified"") BSD"
+metasploit-payloads, 1.2.37, "3-clause (or ""modified"") BSD"
+metasploit_data_models, 2.0.15, "New BSD"
+metasploit_payloads-mettle, 0.1.10, "3-clause (or ""modified"") BSD"
method_source, 0.8.2, MIT
-mime-types, 3.1, MIT
-mime-types-data, 3.2016.0521, MIT
-mini_portile2, 2.1.0, MIT
+mini_portile2, 2.2.0, MIT
minitest, 5.10.2, MIT
msgpack, 1.1.0, "Apache 2.0"
multi_json, 1.12.1, MIT
-multi_test, 0.1.2, MIT
multipart-post, 2.0.0, MIT
nessus_rest, 0.1.6, MIT
net-ssh, 4.1.0, MIT
network_interface, 0.0.1, MIT
-nexpose, 6.0.0, BSD
-nokogiri, 1.7.2, MIT
+nexpose, 6.1.0, BSD
+nokogiri, 1.8.0, MIT
octokit, 4.7.0, MIT
openssl-ccm, 1.2.1, MIT
openvas-omp, 0.0.4, MIT
@@ -73,6 +64,7 @@ os, 0.9.6, MIT
packetfu, 1.1.13, BSD
patch_finder, 1.0.2, "New BSD"
pcaprub, 0.12.4, LGPL-2.1
+pdf-reader, 2.0.0, MIT
pg, 0.20.0, "New BSD"
pg_array_parser, 0.0.9, unknown
postgres_ext, 3.0.0, MIT
@@ -83,14 +75,14 @@ rack-test, 0.6.3, MIT
rails-deprecated_sanitizer, 1.0.3, MIT
rails-dom-testing, 1.0.8, MIT
rails-html-sanitizer, 1.0.3, MIT
-railties, 4.2.8, MIT
+railties, 4.2.9, MIT
rake, 12.0.0, MIT
rb-readline, 0.5.4, BSD
-recog, 2.1.8, unknown
+recog, 2.1.11, unknown
redcarpet, 3.4.0, MIT
-rex-arch, 0.1.4, "New BSD"
-rex-bin_tools, 0.1.3, "New BSD"
-rex-core, 0.1.10, "New BSD"
+rex-arch, 0.1.9, "New BSD"
+rex-bin_tools, 0.1.4, "New BSD"
+rex-core, 0.1.11, "New BSD"
rex-encoder, 0.1.4, "New BSD"
rex-exploitation, 0.1.14, "New BSD"
rex-java, 0.1.5, "New BSD"
@@ -101,23 +93,25 @@ rex-powershell, 0.1.72, "New BSD"
rex-random_identifier, 0.1.2, "New BSD"
rex-registry, 0.1.3, "New BSD"
rex-rop_builder, 0.1.3, "New BSD"
-rex-socket, 0.1.6, "New BSD"
+rex-socket, 0.1.8, "New BSD"
rex-sslscan, 0.1.4, "New BSD"
rex-struct2, 0.1.2, "New BSD"
rex-text, 0.2.15, "New BSD"
rex-zip, 0.1.3, "New BSD"
rkelly-remix, 0.0.7, MIT
robots, 0.10.1, MIT
+rspec, 3.6.0, MIT
rspec-core, 3.6.0, MIT
rspec-expectations, 3.6.0, MIT
rspec-mocks, 3.6.0, MIT
rspec-rails, 3.6.0, MIT
+rspec-rerun, 1.1.0, MIT
rspec-support, 3.6.0, MIT
-ruby_smb, 0.0.17, "New BSD"
+ruby-rc4, 0.1.5, MIT
+ruby_smb, 0.0.18, "New BSD"
rubyntlm, 0.6.2, MIT
rubyzip, 1.2.1, "Simplified BSD"
sawyer, 0.8.1, MIT
-shoulda-matchers, 3.1.1, MIT
signet, 0.7.3, "Apache 2.0"
simplecov, 0.14.1, MIT
simplecov-html, 0.10.1, MIT
@@ -126,10 +120,11 @@ sqlite3, 1.3.13, "New BSD"
sshkey, 1.9.0, MIT
thor, 0.19.4, MIT
thread_safe, 0.3.6, "Apache 2.0"
-timecop, 0.8.1, MIT
+timecop, 0.9.1, MIT
+ttfunk, 1.5.1, "Nonstandard, GPL-2.0, GPL-3.0"
tzinfo, 1.2.3, MIT
tzinfo-data, 1.2017.2, MIT
windows_error, 0.1.2, BSD
+xdr, 2.0.0, "Apache 2.0"
xmlrpc, 0.3.0, ruby
-xpath, 2.1.0, MIT
yard, 0.9.9, MIT
diff --git a/features/commands/help.feature b/features/commands/help.feature
deleted file mode 100644
index f73763436b91..000000000000
--- a/features/commands/help.feature
+++ /dev/null
@@ -1,111 +0,0 @@
-Feature: Help command
-
- Background:
- Given I run `msfconsole --defer-module-loads -q -x help -x exit`
-
- Scenario: The 'help' command's output
- Then the output should contain:
- """
- Core Commands
- =============
-
- Command Description
- ------- -----------
- ? Help menu
- banner Display an awesome metasploit banner
- cd Change the current working directory
- color Toggle color
- connect Communicate with a host
- exit Exit the console
- get Gets the value of a context-specific variable
- getg Gets the value of a global variable
- grep Grep the output of another command
- help Help menu
- history Show command history
- irb Drop into irb scripting mode
- load Load a framework plugin
- quit Exit the console
- route Route traffic through a session
- save Saves the active datastores
- sessions Dump session listings and display information about sessions
- set Sets a context-specific variable to a value
- setg Sets a global variable to a value
- sleep Do nothing for the specified number of seconds
- spool Write console output into a file as well the screen
- threads View and manipulate background threads
- unload Unload a framework plugin
- unset Unsets one or more context-specific variables
- unsetg Unsets one or more global variables
- version Show the framework and console library version numbers
-
-
- Module Commands
- ===============
-
- Command Description
- ------- -----------
- advanced Displays advanced options for one or more modules
- back Move back from the current context
- edit Edit the current module with the preferred editor
- info Displays information about one or more modules
- loadpath Searches for and loads modules from a path
- options Displays global options or for one or more modules
- popm Pops the latest module off the stack and makes it active
- previous Sets the previously loaded module as the current module
- pushm Pushes the active or list of modules onto the module stack
- reload_all Reloads all modules from all defined module paths
- search Searches module names and descriptions
- show Displays modules of a given type, or all modules
- use Selects a module by name
-
-
- Job Commands
- ============
-
- Command Description
- ------- -----------
- handler Start a payload handler as job
- jobs Displays and manages jobs
- kill Kill a job
- rename_job Rename a job
-
-
- Resource Script Commands
- ========================
-
- Command Description
- ------- -----------
- makerc Save commands entered since start to a file
- resource Run the commands stored in a file
-
-
- Database Backend Commands
- =========================
-
- Command Description
- ------- -----------
- db_connect Connect to an existing database
- db_disconnect Disconnect from the current database instance
- db_export Export a file containing the contents of the database
- db_import Import a scan result file (filetype will be auto-detected)
- db_nmap Executes nmap and records the output automatically
- db_rebuild_cache Rebuilds the database-stored module cache
- db_status Show the current database status
- hosts List all hosts in the database
- loot List all loot in the database
- notes List all notes in the database
- services List all services in the database
- vulns List all vulnerabilities in the database
- workspace Switch between database workspaces
-
-
- Credentials Backend Commands
- ============================
-
- Command Description
- ------- -----------
- creds List all credentials in the database
-
-
- """
-
diff --git a/features/modules/exploit/smb/ms08_067_netapi.feature b/features/modules/exploit/smb/ms08_067_netapi.feature
deleted file mode 100644
index 940ff2a4e6ae..000000000000
--- a/features/modules/exploit/smb/ms08_067_netapi.feature
+++ /dev/null
@@ -1,48 +0,0 @@
-@targets @db
-Feature: MS08-067 netapi
-
- Background:
- Given a directory named "home"
- And I cd to "home"
- And a mocked home directory
-
- Scenario: The MS08-067 should get a session with bind_tcp
- Given I ready the windows targets
- Given a file named "ms08-067-bind.rc" with:
- """
-
- self.run_single("spool #{Rails.root.join('tmp', 'console.log')}")
- hosts = YAML.load File.open Rails.root.join('features', 'support', 'targets.yml')
- payload_name = 'windows/meterpreter/bind_tcp'
- exploited_hosts = []
- failed_hosts = []
-
- hosts.each do |host|
- print_status("Trying MS08-067 against #{host['ipAddress']}")
- mod = framework.exploits.create('windows/smb/ms08_067_netapi')
- mod.datastore['PAYLOAD'] = payload_name
- mod.datastore['RHOST'] = host['ipAddress']
- m = mod.exploit_simple(
- 'LocalInput' => nil,
- 'LocalOutput' => nil,
- 'Payload' => payload_name,
- 'RunAsJob' => false
- )
-
- sleep(1)
-
- if m
- exploited_hosts << host['ipAddress']
- else
- failed_hosts << host['ipAddress']
- end
- end
-
- print_status("Exploited hosts: #{exploited_hosts.inspect}")
- print_status("Failed hosts: #{failed_hosts.inspect}")
- self.run_single('sessions -K')
-
- """
- When I successfully run `msfconsole --environment test -q -r ms08-067-bind.rc -x exit` for up to 100 seconds
- Then the 'Mdm::Host' table contains the expected targets
-
\ No newline at end of file
diff --git a/features/msfconsole/database_yml.feature b/features/msfconsole/database_yml.feature
deleted file mode 100644
index f2b40c213baf..000000000000
--- a/features/msfconsole/database_yml.feature
+++ /dev/null
@@ -1,153 +0,0 @@
-@boot
-Feature: `msfconsole` `database.yml`
-
- In order to connect to the database in `msfconsole`
- As a user calling `msfconsole` from a terminal
- I want to be able to set the path of the `database.yml` in one of 4 locations (in order of precedence):
-
- 1. An explicit argument to the `-y` flag to `msfconsole`
- 2. The MSF_DATABASE_CONFIG environment variable
- 3. The user's `~/.msf4/database.yml`
- 4. `config/database.yml` in the metasploit-framework checkout location.
-
- Scenario: With all 4 locations, --yaml wins
- Given a file named "command_line.yml" with:
- """
- test:
- adapter: postgresql
- database: command_line_metasploit_framework_test
- username: command_line_metasploit_framework_test
- """
- And a file named "msf_database_config.yml" with:
- """
- test:
- adapter: postgresql
- database: environment_metasploit_framework_test
- username: environment_metasploit_framework_test
- """
- And I set the environment variables to:
- | variable | value |
- | MSF_DATABASE_CONFIG | msf_database_config.yml |
- And a directory named "home"
- And I cd to "home"
- And a mocked home directory
- And a directory named ".msf4"
- And I cd to ".msf4"
- And a file named "database.yml" with:
- """
- test:
- adapter: postgresql
- database: user_metasploit_framework_test
- username: user_metasploit_framework_test
- """
- And I cd to "../.."
- And the project "database.yml" exists with:
- """
- test:
- adapter: postgresql
- database: project_metasploit_framework_test
- username: project_metasploit_framework_test
- """
- When I run `msfconsole -q --defer-module-loads --environment test --execute-command exit --yaml command_line.yml`
- Then the output should contain "command_line_metasploit_framework_test"
-
- Scenario: Without --yaml, MSF_DATABASE_CONFIG wins
- Given a file named "msf_database_config.yml" with:
- """
- test:
- adapter: postgresql
- database: environment_metasploit_framework_test
- username: environment_metasploit_framework_test
- """
- And I set the environment variables to:
- | variable | value |
- | MSF_DATABASE_CONFIG | msf_database_config.yml |
- And a directory named "home"
- And I cd to "home"
- And a mocked home directory
- And a directory named ".msf4"
- And I cd to ".msf4"
- And a file named "database.yml" with:
- """
- test:
- adapter: postgresql
- database: user_metasploit_framework_test
- username: user_metasploit_framework_test
- """
- And I cd to "../.."
- And the project "database.yml" exists with:
- """
- test:
- adapter: postgresql
- database: project_metasploit_framework_test
- username: project_metasploit_framework_test
- """
- When I run `msfconsole -q --defer-module-loads --environment test --execute-command exit`
- Then the output should contain "environment_metasploit_framework_test"
-
- Scenario: Without --yaml or MSF_DATABASE_CONFIG, ~/.msf4/database.yml wins
- Given I unset the environment variables:
- | variable |
- | MSF_DATABASE_CONFIG |
- And a directory named "home"
- And I cd to "home"
- And a mocked home directory
- And a directory named ".msf4"
- And I cd to ".msf4"
- And a file named "database.yml" with:
- """
- test:
- adapter: postgresql
- database: user_metasploit_framework_test
- username: user_metasploit_framework_test
- """
- And I cd to "../.."
- And the project "database.yml" exists with:
- """
- test:
- adapter: postgresql
- database: project_metasploit_framework_test
- username: project_metasploit_framework_test
- """
- When I run `msfconsole -q --defer-module-loads --environment test --execute-command exit`
- Then the output should contain "user_metasploit_framework_test"
-
- Scenario: Without --yaml, MSF_DATABASE_CONFIG or ~/.msf4/database.yml, project "database.yml" wins
- Given I unset the environment variables:
- | variable |
- | MSF_DATABASE_CONFIG |
- And a directory named "home"
- And I cd to "home"
- And a mocked home directory
- And I cd to "../.."
- And the project "database.yml" exists with:
- """
- test:
- adapter: postgresql
- database: project_metasploit_framework_test
- username: project_metasploit_framework_test
- """
- When I run `msfconsole -q --defer-module-loads --environment test --execute-command db_status --execute-command exit`
- Then the output should contain "project_metasploit_framework_test"
-
-
- Scenario: Without --yaml, MSF_DATABASE_CONFIG, ~/.msf4/database.yml, or project "database.yml", no database connection
- Given I unset the environment variables:
- | variable |
- | MSF_DATABASE_CONFIG |
- And a directory named "home"
- And I cd to "home"
- And a mocked home directory
- And I cd to "../.."
- And the project "database.yml" does not exist
- When I run `msfconsole -q --defer-module-loads --environment test --execute-command db_status --execute-command exit`
- Then the output should not contain "command_line_metasploit_framework_test"
- And the output should not contain "environment_metasploit_framework_test"
- And the output should not contain "user_metasploit_framework_test"
- And the output should not contain "project_metasploit_framework_test"
- And the output should contain "[*] postgresql selected, no connection"
-
- Scenario: Starting `msfconsole` with a valid database.yml
- When I run `msfconsole -q --defer-module-loads --execute-command db_status --execute-command exit`
- Then the output should contain "[*] postgresql connected to metasploit_framework_test"
-
diff --git a/features/step_definitions/environment_variables.rb b/features/step_definitions/environment_variables.rb
deleted file mode 100644
index c554ca02642b..000000000000
--- a/features/step_definitions/environment_variables.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-Given /^I unset the environment variables:$/ do |table|
- table.hashes.each do |row|
- variable = row['variable'].to_s.upcase
-
- # @todo add extension to Announcer
- announcer.instance_eval do
- if @options[:env]
- print "$ unset #{variable}"
- end
- end
-
- current_value = ENV.delete(variable)
-
- # if original_env already has the key, then the true original was already recorded from a previous unset or set,
- # so don't record the current value as it will cause ENV not to be restored after the Scenario.
- unless original_env.key? variable
- original_env[variable] = current_value
- end
- end
-end
\ No newline at end of file
diff --git a/features/step_definitions/project.rb b/features/step_definitions/project.rb
deleted file mode 100644
index 1c24f07254d5..000000000000
--- a/features/step_definitions/project.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-require 'metasploit/framework/database/cucumber'
-
-Given /^the project "database.yml" does not exist$/ do
- Metasploit::Framework::Database::Cucumber.backup_project_configurations
-end
-
-Given /^the project "database.yml" exists with:$/ do |file_content|
- Metasploit::Framework::Database::Cucumber.backup_project_configurations
- File.open(Metasploit::Framework::Database::Cucumber.project_configurations_path, 'wb') { |file| file.write(file_content) }
-end
-
-After do
- Metasploit::Framework::Database::Cucumber.restore_project_configurations
-end
\ No newline at end of file
diff --git a/features/support/bin/stty b/features/support/bin/stty
deleted file mode 100755
index 8ff68bb1c571..000000000000
--- a/features/support/bin/stty
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env ruby
-
-case ARGV[0]
- when 'size'
- puts "30 134"
- when '-a'
- puts <;
- eol2 = ; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
- min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
- stop = ^S; susp = ^Z; time = 0; werase = ^W;
-EOS
- when '-g'
- puts "gfmt1:cflag=4b00:iflag=6b02:lflag=200005cf:oflag=3:discard=f:dsusp=19:eof=4:eol=ff:eol2=ff:erase=7f:intr=3:kill=15:lnext=16:min=1:quit=1c:reprint=12:start=11:status=14:stop=13:susp=1a:time=0:werase=17:ispeed=38400:ospeed=38400"
-end
-
-exit 0
diff --git a/features/support/env.rb b/features/support/env.rb
deleted file mode 100644
index 6d186f405ff6..000000000000
--- a/features/support/env.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-# @note `require 'simplecov'` is not used here because all features currently use external `msfconsole` process, so only
-# that child process needs to load 'simplecov'.
-
-# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
-# It is recommended to regenerate this file in the future when you upgrade to a
-# newer version of cucumber-rails. Consider adding your own code to a new file
-# instead of editing this one. Cucumber will automatically load all features/**/*.rb
-# files.
-
-require 'cucumber/rails'
-require 'aruba/cucumber'
-
-# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
-# order to ease the transition to Capybara we set the default here. If you'd
-# prefer to use XPath just remove this line and adjust any selectors in your
-# steps to use the XPath syntax.
-Capybara.default_selector = :css
-
-# By default, any exception happening in your Rails application will bubble up
-# to Cucumber so that your scenario will fail. This is a different from how
-# your application behaves in the production environment, where an error page will
-# be rendered instead.
-#
-# Sometimes we want to override this default behaviour and allow Rails to rescue
-# exceptions and display an error page (just like when the app is running in production).
-# Typical scenarios where you want to do this is when you test your error pages.
-# There are two ways to allow Rails to rescue exceptions:
-#
-# 1) Tag your scenario (or feature) with @allow-rescue
-#
-# 2) Set the value below to true. Beware that doing this globally is not
-# recommended as it will mask a lot of errors for you!
-#
-ActionController::Base.allow_rescue = false
diff --git a/features/support/hooks.rb b/features/support/hooks.rb
deleted file mode 100644
index 16c5973ef2cb..000000000000
--- a/features/support/hooks.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-Before do
- set_env('MSF_DATBASE_CONFIG', Rails.configuration.paths['config/database'].existent.first)
- set_env('RAILS_ENV', 'test')
- @aruba_timeout_seconds = 8.minutes
-end
-
-Before('@db') do |scenario|
- dbconfig = YAML::load(File.open(Metasploit::Framework::Database.configurations_pathname))
- ActiveRecord::Base.establish_connection(dbconfig["test"])
-end
-
-# don't setup child processes to load simplecov_setup.rb if simplecov isn't installed
-# unless Bundler.settings.without.include?(:coverage)
-# Before do |scenario|
-# command_name = case scenario
-# when Cucumber::Ast::Scenario, Cucumber::Ast::ScenarioOutline
-# "#{scenario.feature.title} #{scenario.name}"
-# when Cucumber::Ast::OutlineTable::ExampleRow
-# scenario_outline = scenario.scenario_outline
-#
-# "#{scenario_outline.feature.title} #{scenario_outline.name} #{scenario.name}"
-# else
-# raise TypeError, "Don't know how to extract command name from #{scenario.class}"
-# end
-#
-# # Used in simplecov_setup so that each scenario has a different name and their coverage results are merged instead
-# # of overwriting each other as 'Cucumber Features'
-# set_env('SIMPLECOV_COMMAND_NAME', command_name)
-#
-# simplecov_setup_pathname = Pathname.new(__FILE__).expand_path.parent.join('simplecov_setup')
-# # set environment variable so child processes will merge their coverage data with parent process's coverage data.
-# set_env('RUBYOPT', "#{ENV['RUBYOPT']} -r#{simplecov_setup_pathname}")
-# end
-#
-# Before('@db') do |scenario|
-# dbconfig = YAML::load(File.open(Metasploit::Framework::Database.configurations_pathname))
-# ActiveRecord::Base.establish_connection(dbconfig["test"])
-# end
-# end
diff --git a/features/support/simplecov_setup.rb b/features/support/simplecov_setup.rb
deleted file mode 100644
index 78cc264fc334..000000000000
--- a/features/support/simplecov_setup.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# @note this file is loaded in env.rb to setup simplecov using RUBYOPTs for child processes
-
-simplecov_command_name = ENV['SIMPLECOV_COMMAND_NAME']
-
-# will not be set if hook does not run because `bundle install --without coverage`
-if simplecov_command_name
- require 'simplecov'
-
- require 'pathname'
-
- root = Pathname(__FILE__).expand_path.parent.parent.parent
-
- SimpleCov.command_name(simplecov_command_name)
- SimpleCov.root(root)
- load root.join('.simplecov')
-end
diff --git a/features/support/stty.rb b/features/support/stty.rb
deleted file mode 100644
index a8afb704c46f..000000000000
--- a/features/support/stty.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require 'pathname'
-
-support = Pathname.new(__FILE__).realpath.parent
-
-paths = [
- # adds support/bin at the front of the path so that the support/bin/stty script will be used to fake system stty
- # output.
- support.join('bin').to_path,
- ENV['PATH']
-]
-ENV['PATH'] = paths.join(File::PATH_SEPARATOR)
diff --git a/features/support/targets.yml.example b/features/support/targets.yml.example
deleted file mode 100644
index 0752a6cc7ea7..000000000000
--- a/features/support/targets.yml.example
+++ /dev/null
@@ -1,7 +0,0 @@
-windows:
- -
- hostname: wxpsp0
- ip: 127.0.0.100
- -
- hostname: wxpsp2
- ip: 127.0.0.101
diff --git a/lib/metasploit/framework/database/cucumber.rb b/lib/metasploit/framework/database/cucumber.rb
deleted file mode 100644
index 562504c88b92..000000000000
--- a/lib/metasploit/framework/database/cucumber.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-require 'metasploit/framework/database'
-
-module Metasploit::Framework::Database::Cucumber
- def self.project_configurations_path
- Rails.root.join('config', 'database.yml').to_path
- end
-
- def self.backup_project_configurations
- if File.exist?(project_configurations_path)
- # assume that the backup file is from a previously aborted run and it contains the real database.yml data, so
- # just delete the fake database.yml and the After hook will restore the real database.yml from the backup location
- if File.exist?(backup_project_configurations_path)
- File.delete(project_configurations_path)
- else
- # project contains the real database.yml and there was no previous, aborted run.
- File.rename(project_configurations_path, backup_project_configurations_path)
- end
- end
- end
-
- def self.backup_project_configurations_path
- "#{project_configurations_path}.cucumber.bak"
- end
-
- def self.restore_project_configurations
- if File.exist?(backup_project_configurations_path)
- if File.exist?(project_configurations_path)
- # Remove fake, leftover database.yml
- File.delete(project_configurations_path)
- end
-
- File.rename(backup_project_configurations_path, project_configurations_path)
- end
- end
-end
-
diff --git a/lib/tasks/cucumber.rake b/lib/tasks/cucumber.rake
deleted file mode 100644
index ff424fa7b080..000000000000
--- a/lib/tasks/cucumber.rake
+++ /dev/null
@@ -1,74 +0,0 @@
-# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
-# It is recommended to regenerate this file in the future when you upgrade to a
-# newer version of cucumber-rails. Consider adding your own code to a new file
-# instead of editing this one. Cucumber will automatically load all features/**/*.rb
-# files.
-
-
-unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
-
-vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
-$LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
-
-begin
- require 'cucumber/rake/task'
-
- namespace :cucumber do
- Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
- t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
- t.fork = true # You may get faster startup if you set this to false
- t.profile = 'default'
- end
-
- Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
- t.binary = vendored_cucumber_bin
- t.fork = true # You may get faster startup if you set this to false
- t.profile = 'wip'
- end
-
- Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
- t.binary = vendored_cucumber_bin
- t.fork = true # You may get faster startup if you set this to false
- t.profile = 'rerun'
- end
-
- desc 'Run all features'
- task :all => [:ok, :wip]
-
- task :statsetup do
- require 'rails/code_statistics'
- ::STATS_DIRECTORIES << %w(Cucumber\ features features) if File.exist?('features')
- ::CodeStatistics::TEST_TYPES << "Cucumber features" if File.exist?('features')
- end
- end
- desc 'Alias for cucumber:ok'
- task :cucumber => 'cucumber:ok'
-
- task :default => :cucumber
-
- task :features => :cucumber do
- STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
- end
-
- # In case we don't have ActiveRecord, append a no-op task that we can depend upon.
- task 'db:test:prepare' do
- end
-
- task 'db:config:restore' do
- require 'metasploit/framework/database/cucumber'
- Metasploit::Framework::Database::Cucumber.restore_project_configurations
- end
-
- # Restore the config/database.yml from config/database.cucumber.yml before attempting to copy development to test
- # database in order to recover from interrupted cucumber runs
- task 'environment' => 'db:config:restore'
-
- task :stats => 'cucumber:statsetup'
-rescue LoadError
- desc 'cucumber rake task not available (cucumber not installed)'
- task :cucumber do
- abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
- end
-end
-
-end
diff --git a/lib/tasks/custom_cucumber.rake b/lib/tasks/custom_cucumber.rake
deleted file mode 100644
index 9b8c3fb8ae7d..000000000000
--- a/lib/tasks/custom_cucumber.rake
+++ /dev/null
@@ -1,30 +0,0 @@
-unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
-
-vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
-$LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
-
-begin
- require 'cucumber/rake/task'
-
- namespace :cucumber do
- Cucumber::Rake::Task.new({:boot => 'db:test:prepare'}, 'Run features that should pass') do |t|
- t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
- t.fork = true # You may get faster startup if you set this to false
- t.profile = 'boot'
- end
- Cucumber::Rake::Task.new({:exploit => 'db:test:prepare'}, 'Run features that should pass') do |t|
- t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
- t.fork = true # You may get faster startup if you set this to false
- t.profile = 'exploit'
- end
-
- end
-
-rescue LoadError
- desc 'cucumber rake task not available (cucumber not installed)'
- task :cucumber do
- abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
- end
-end
-
-end
\ No newline at end of file
diff --git a/script/cucumber b/script/cucumber
deleted file mode 100755
index 7fa5c9208675..000000000000
--- a/script/cucumber
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env ruby
-
-vendored_cucumber_bin = Dir["#{File.dirname(__FILE__)}/../vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
-if vendored_cucumber_bin
- load File.expand_path(vendored_cucumber_bin)
-else
- require 'rubygems' unless ENV['NO_RUBYGEMS']
- require 'cucumber'
- load Cucumber::BINARY
-end