updating how we use cucumber to match lukes changes
parent
5b3800c13a
commit
50e804d9cb
|
@ -1,5 +1,6 @@
|
||||||
env:
|
env:
|
||||||
- RAKE_TASK=cucumber
|
- RAKE_TASK=cucumber
|
||||||
|
- RAKE_TASK=cucumber:boot
|
||||||
- RAKE_TASK=spec
|
- RAKE_TASK=spec
|
||||||
language: ruby
|
language: ruby
|
||||||
before_install:
|
before_install:
|
||||||
|
|
|
@ -2,7 +2,9 @@
|
||||||
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
||||||
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
||||||
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
|
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"
|
||||||
|
ignored_tags = "--tags ~@boot --tags ~@targets"
|
||||||
%>
|
%>
|
||||||
default: <%= std_opts %> features
|
default: <%= std_opts %> <%= ignored_tags %> features
|
||||||
|
boot: <%= std_opts %> --tags @boot features
|
||||||
wip: --tags @wip:3 --wip features
|
wip: --tags @wip:3 --wip features
|
||||||
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
@msfconsole
|
|
||||||
Feature: Help command
|
Feature: Help command
|
||||||
|
|
||||||
|
Background:
|
||||||
|
Given I run `msfconsole` interactively
|
||||||
|
And I wait for stdout to contain "Free Metasploit Pro trial: http://r-7.co/trymsp"
|
||||||
|
|
||||||
Scenario: The 'help' command's output
|
Scenario: The 'help' command's output
|
||||||
When I type "help"
|
When I type "help"
|
||||||
And I type "exit"
|
And I type "exit"
|
||||||
|
|
|
@ -1,160 +1,98 @@
|
||||||
@msfconsole
|
|
||||||
Feature: MS08-067 netapi
|
Feature: MS08-067 netapi
|
||||||
|
|
||||||
|
Background:
|
||||||
|
Given I run `msfconsole` interactively
|
||||||
|
And I wait for stdout to contain "Free Metasploit Pro trial: http://r-7.co/trymsp"
|
||||||
|
|
||||||
Scenario: The MS08-067 Module should have the following options
|
Scenario: The MS08-067 Module should have the following options
|
||||||
When I type "use exploit/windows/smb/ms08_067_netapi"
|
When I type "use exploit/windows/smb/ms08_067_netapi"
|
||||||
And I type "show options"
|
And I type "show options"
|
||||||
And I type "exit"
|
And I type "exit"
|
||||||
Then the output should contain:
|
Then the output should contain the following:
|
||||||
"""
|
| Module options (exploit/windows/smb/ms08_067_netapi) |
|
||||||
Module options (exploit/windows/smb/ms08_067_netapi):
|
| Name Current Setting Required Description |
|
||||||
|
| ---- --------------- -------- ----------- |
|
||||||
Name Current Setting Required Description
|
| RHOST yes The target address |
|
||||||
---- --------------- -------- -----------
|
| RPORT 445 yes Set the SMB service port |
|
||||||
RHOST yes The target address
|
| RPORT 445 yes Set the SMB service port |
|
||||||
RPORT 445 yes Set the SMB service port
|
|
||||||
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)
|
|
||||||
"""
|
|
||||||
|
|
||||||
Scenario: The MS08-067 Module should have the following advanced options
|
Scenario: The MS08-067 Module should have the following advanced options
|
||||||
When I type "use exploit/windows/smb/ms08_067_netapi"
|
When I type "use exploit/windows/smb/ms08_067_netapi"
|
||||||
And I type "show advanced"
|
And I type "show advanced"
|
||||||
And I type "exit"
|
And I type "exit"
|
||||||
Then the output should contain:
|
Then the output should contain the following:
|
||||||
"""
|
| Name : CHOST |
|
||||||
Module advanced options:
|
| Description : The local client address |
|
||||||
|
| Name : CPORT |
|
||||||
|
| Description : The local client port |
|
||||||
|
| Name : ConnectTimeout |
|
||||||
|
| Description : Maximum number of seconds to establish a TCP connection |
|
||||||
|
| Name : ContextInformationFile |
|
||||||
|
| Description : The information file that contains context information |
|
||||||
|
| Name : DCERPC::ReadTimeout |
|
||||||
|
| Description : The number of seconds to wait for DCERPC responses |
|
||||||
|
| Name : DisablePayloadHandler |
|
||||||
|
| Description : Disable the handler code for the selected payload |
|
||||||
|
| Name : EnableContextEncoding |
|
||||||
|
| Description : Use transient context when encoding payloads |
|
||||||
|
| Name : NTLM::SendLM |
|
||||||
|
| Description : Always send the LANMAN response (except when NTLMv2_session is |
|
||||||
|
| specified) |
|
||||||
|
| Name : NTLM::SendNTLM |
|
||||||
|
| Description : Activate the 'Negotiate NTLM key' flag, indicating the use of |
|
||||||
|
| NTLM responses |
|
||||||
|
| Name : NTLM::SendSPN |
|
||||||
|
| Current Setting: true |
|
||||||
|
| Description : Send an avp of type SPN in the ntlmv2 client Blob, this allow |
|
||||||
|
| authentification on windows Seven/2008r2 when SPN is required |
|
||||||
|
| Name : NTLM::UseLMKey |
|
||||||
|
| Description : Activate the 'Negotiate Lan Manager Key' flag, using the LM key |
|
||||||
|
| when the LM response is sent |
|
||||||
|
| Name : NTLM::UseNTLM2_session |
|
||||||
|
| Description : Activate the 'Negotiate NTLM2 key' flag, forcing the use of a |
|
||||||
|
| NTLMv2_session |
|
||||||
|
| Name : NTLM::UseNTLMv2 |
|
||||||
|
| Description : Use NTLMv2 instead of NTLM2_session when 'Negotiate NTLM2' key |
|
||||||
|
| is true |
|
||||||
|
# | Name : Proxies |
|
||||||
|
# | Description : Use a proxy chain |
|
||||||
|
| Name : SMB::ChunkSize |
|
||||||
|
| Current Setting: 500 |
|
||||||
|
| Description : The chunk size for SMB segments, bigger values will increase |
|
||||||
|
| speed but break NT 4.0 and SMB signing |
|
||||||
|
| Name : SMB::Native_LM |
|
||||||
|
| Description : The Native LM to send during authentication |
|
||||||
|
| Name : SMB::Native_OS |
|
||||||
|
| Description : The Native OS to send during authentication |
|
||||||
|
| Name : SMB::VerifySignature |
|
||||||
|
| Description : Enforces client-side verification of server response signatures |
|
||||||
|
| Name : SMBDirect |
|
||||||
|
| Description : The target port is a raw SMB service (not NetBIOS) |
|
||||||
|
| Name : SMBDomain |
|
||||||
|
| Description : The Windows domain to use for authentication |
|
||||||
|
| Name : SMBName |
|
||||||
|
| Description : The NetBIOS hostname (required for port 139 connections) |
|
||||||
|
| Name : SMBPass |
|
||||||
|
| Description : The password for the specified username |
|
||||||
|
| Name : SMBUser |
|
||||||
|
| Description : The username to authenticate as |
|
||||||
|
| Name : SSL |
|
||||||
|
| Description : Negotiate SSL for outgoing connections |
|
||||||
|
| Name : SSLCipher |
|
||||||
|
| Description : String for SSL cipher - "DHE-RSA-AES256-SHA" or "ADH" |
|
||||||
|
| Name : SSLVerifyMode |
|
||||||
|
| Description : SSL verification method (accepted: CLIENT_ONCE, |
|
||||||
|
| FAIL_IF_NO_PEER_CERT, NONE, PEER) |
|
||||||
|
| Name : SSLVersion |
|
||||||
|
| Description : Specify the version of SSL that should be used (accepted: SSL2, |
|
||||||
|
| SSL3, TLS1) |
|
||||||
|
| Name : VERBOSE |
|
||||||
|
| Description : Enable detailed status messages |
|
||||||
|
| Name : WORKSPACE |
|
||||||
|
| Description : Specify the workspace for this module |
|
||||||
|
| Name : WfsDelay |
|
||||||
|
| Description : Additional delay when waiting for a session |
|
||||||
|
|
||||||
Name : CHOST
|
|
||||||
Current Setting:
|
|
||||||
Description : The local client address
|
|
||||||
|
|
||||||
Name : CPORT
|
|
||||||
Current Setting:
|
|
||||||
Description : The local client port
|
|
||||||
|
|
||||||
Name : ConnectTimeout
|
|
||||||
Current Setting: 10
|
|
||||||
Description : Maximum number of seconds to establish a TCP connection
|
|
||||||
|
|
||||||
Name : ContextInformationFile
|
|
||||||
Current Setting:
|
|
||||||
Description : The information file that contains context information
|
|
||||||
|
|
||||||
Name : DCERPC::ReadTimeout
|
|
||||||
Current Setting: 10
|
|
||||||
Description : The number of seconds to wait for DCERPC responses
|
|
||||||
|
|
||||||
Name : DisablePayloadHandler
|
|
||||||
Current Setting: false
|
|
||||||
Description : Disable the handler code for the selected payload
|
|
||||||
|
|
||||||
Name : EnableContextEncoding
|
|
||||||
Current Setting: false
|
|
||||||
Description : Use transient context when encoding payloads
|
|
||||||
|
|
||||||
Name : NTLM::SendLM
|
|
||||||
Current Setting: true
|
|
||||||
Description : Always send the LANMAN response (except when NTLMv2_session is
|
|
||||||
specified)
|
|
||||||
|
|
||||||
Name : NTLM::SendNTLM
|
|
||||||
Current Setting: true
|
|
||||||
Description : Activate the 'Negotiate NTLM key' flag, indicating the use of
|
|
||||||
NTLM responses
|
|
||||||
|
|
||||||
Name : NTLM::SendSPN
|
|
||||||
Current Setting: true
|
|
||||||
Description : Send an avp of type SPN in the ntlmv2 client Blob, this allow
|
|
||||||
authentification on windows Seven/2008r2 when SPN is required
|
|
||||||
|
|
||||||
Name : NTLM::UseLMKey
|
|
||||||
Current Setting: false
|
|
||||||
Description : Activate the 'Negotiate Lan Manager Key' flag, using the LM key
|
|
||||||
when the LM response is sent
|
|
||||||
|
|
||||||
Name : NTLM::UseNTLM2_session
|
|
||||||
Current Setting: true
|
|
||||||
Description : Activate the 'Negotiate NTLM2 key' flag, forcing the use of a
|
|
||||||
NTLMv2_session
|
|
||||||
|
|
||||||
Name : NTLM::UseNTLMv2
|
|
||||||
Current Setting: true
|
|
||||||
Description : Use NTLMv2 instead of NTLM2_session when 'Negotiate NTLM2' key
|
|
||||||
is true
|
|
||||||
|
|
||||||
Name : Proxies
|
|
||||||
Current Setting:
|
|
||||||
Description : Use a proxy chain
|
|
||||||
|
|
||||||
Name : SMB::ChunkSize
|
|
||||||
Current Setting: 500
|
|
||||||
Description : The chunk size for SMB segments, bigger values will increase
|
|
||||||
speed but break NT 4.0 and SMB signing
|
|
||||||
|
|
||||||
Name : SMB::Native_LM
|
|
||||||
Current Setting: Windows 2000 5.0
|
|
||||||
Description : The Native LM to send during authentication
|
|
||||||
|
|
||||||
Name : SMB::Native_OS
|
|
||||||
Current Setting: Windows 2000 2195
|
|
||||||
Description : The Native OS to send during authentication
|
|
||||||
|
|
||||||
Name : SMB::VerifySignature
|
|
||||||
Current Setting: false
|
|
||||||
Description : Enforces client-side verification of server response signatures
|
|
||||||
|
|
||||||
Name : SMBDirect
|
|
||||||
Current Setting: true
|
|
||||||
Description : The target port is a raw SMB service (not NetBIOS)
|
|
||||||
|
|
||||||
Name : SMBDomain
|
|
||||||
Current Setting: .
|
|
||||||
Description : The Windows domain to use for authentication
|
|
||||||
|
|
||||||
Name : SMBName
|
|
||||||
Current Setting: *SMBSERVER
|
|
||||||
Description : The NetBIOS hostname (required for port 139 connections)
|
|
||||||
|
|
||||||
Name : SMBPass
|
|
||||||
Current Setting:
|
|
||||||
Description : The password for the specified username
|
|
||||||
|
|
||||||
Name : SMBUser
|
|
||||||
Current Setting:
|
|
||||||
Description : The username to authenticate as
|
|
||||||
|
|
||||||
Name : SSL
|
|
||||||
Current Setting: false
|
|
||||||
Description : Negotiate SSL for outgoing connections
|
|
||||||
|
|
||||||
Name : SSLCipher
|
|
||||||
Current Setting:
|
|
||||||
Description : String for SSL cipher - "DHE-RSA-AES256-SHA" or "ADH"
|
|
||||||
|
|
||||||
Name : SSLVerifyMode
|
|
||||||
Current Setting: PEER
|
|
||||||
Description : SSL verification method (accepted: CLIENT_ONCE,
|
|
||||||
FAIL_IF_NO_PEER_CERT, NONE, PEER)
|
|
||||||
|
|
||||||
Name : SSLVersion
|
|
||||||
Current Setting: SSL3
|
|
||||||
Description : Specify the version of SSL that should be used (accepted: SSL2,
|
|
||||||
SSL3, TLS1)
|
|
||||||
|
|
||||||
Name : VERBOSE
|
|
||||||
Current Setting: false
|
|
||||||
Description : Enable detailed status messages
|
|
||||||
|
|
||||||
Name : WORKSPACE
|
|
||||||
Current Setting:
|
|
||||||
Description : Specify the workspace for this module
|
|
||||||
|
|
||||||
Name : WfsDelay
|
|
||||||
Current Setting: 0
|
|
||||||
Description : Additional delay when waiting for a session
|
|
||||||
"""
|
|
||||||
|
|
||||||
@msfconsole
|
|
||||||
@targets
|
@targets
|
||||||
Scenario: Show RHOST/etc variable expansion from a config file
|
Scenario: Show RHOST/etc variable expansion from a config file
|
||||||
When I type "use exploit/windows/smb/ms08_067_netapi"
|
When I type "use exploit/windows/smb/ms08_067_netapi"
|
||||||
|
@ -165,5 +103,3 @@ Feature: MS08-067 netapi
|
||||||
And I type "exit"
|
And I type "exit"
|
||||||
And I type "exit"
|
And I type "exit"
|
||||||
Then the output should match /spider-wxp/
|
Then the output should match /spider-wxp/
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
@boot
|
|
||||||
Feature: Launching `msfconsole`
|
|
||||||
|
|
||||||
@no-database-yml
|
|
||||||
Scenario: Starting `msfconsole` without a database.yml
|
|
||||||
Given I run `msfconsole` interactively
|
|
||||||
And I wait for stdout to contain "Free Metasploit Pro trial: http://r-7.co/trymsp"
|
|
||||||
When I type "db_status"
|
|
||||||
And I type "exit"
|
|
||||||
Then the output should contain "[*] postgresql selected, no connection"
|
|
||||||
|
|
||||||
@no-database-yml
|
|
||||||
Scenario: Starting `msfconsole` with an invalid database.yml
|
|
||||||
Given a file named "database.yml" with:
|
|
||||||
"""
|
|
||||||
development: &pgsql
|
|
||||||
adapter: postgresql
|
|
||||||
database: metasploit_framework_development
|
|
||||||
username: postgres
|
|
||||||
port: 6543
|
|
||||||
pool: 5
|
|
||||||
timeout: 5
|
|
||||||
production:
|
|
||||||
<<: *pgsql
|
|
||||||
test:
|
|
||||||
<<: *pgsql
|
|
||||||
database: metasploit_framework_test
|
|
||||||
"""
|
|
||||||
Given I run `msfconsole -y database.yml` interactively
|
|
||||||
And I wait for stdout to contain "Free Metasploit Pro trial: http://r-7.co/trymsp"
|
|
||||||
When I type "db_status"
|
|
||||||
And I type "exit"
|
|
||||||
Then the output should contain "[-] Failed to connect to the database: could not connect to server"
|
|
||||||
Then the output should contain "[*] postgresql selected, no connection"
|
|
||||||
|
|
||||||
Scenario: Starting `msfconsole` with a valid database.yml
|
|
||||||
Given I run `msfconsole` interactively
|
|
||||||
And I wait for stdout to contain "Free Metasploit Pro trial: http://r-7.co/trymsp"
|
|
||||||
When I type "db_status"
|
|
||||||
And I type "exit"
|
|
||||||
Then the output should contain "[*] postgresql connected to metasploit_framework_test"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
@boot
|
||||||
Feature: `msfconsole` `database.yml`
|
Feature: `msfconsole` `database.yml`
|
||||||
|
|
||||||
In order to connect to the database in `msfconsole`
|
In order to connect to the database in `msfconsole`
|
||||||
|
@ -156,3 +157,11 @@ Feature: `msfconsole` `database.yml`
|
||||||
And the output should not contain "user_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 not contain "project_metasploit_framework_test"
|
||||||
And the output should contain "[*] postgresql selected, no connection"
|
And the output should contain "[*] postgresql selected, no connection"
|
||||||
|
|
||||||
|
Scenario: Starting `msfconsole` with a valid database.yml
|
||||||
|
Given I run `msfconsole` interactively
|
||||||
|
And I wait for stdout to contain "Free Metasploit Pro trial: http://r-7.co/trymsp"
|
||||||
|
When I type "db_status"
|
||||||
|
And I type "exit"
|
||||||
|
Then the output should contain "[*] postgresql connected to metasploit_framework_test"
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
Then /^the output should contain the following:$/ do |table|
|
||||||
|
table.raw.flatten.each do |expected|
|
||||||
|
assert_partial_output(expected, all_output)
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,4 +1,5 @@
|
||||||
Before do
|
Before do
|
||||||
|
set_env('MSF_DATBASE_CONFIG', Rails.configuration.paths['config/database'].existent.first)
|
||||||
set_env('RAILS_ENV', 'test')
|
set_env('RAILS_ENV', 'test')
|
||||||
@aruba_timeout_seconds = 3.minutes
|
@aruba_timeout_seconds = 3.minutes
|
||||||
end
|
end
|
|
@ -0,0 +1,19 @@
|
||||||
|
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
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in New Issue