updating how we use cucumber to match lukes changes
parent
5b3800c13a
commit
50e804d9cb
|
@ -1,5 +1,6 @@
|
|||
env:
|
||||
- RAKE_TASK=cucumber
|
||||
- RAKE_TASK=cucumber:boot
|
||||
- RAKE_TASK=spec
|
||||
language: ruby
|
||||
before_install:
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
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}"
|
||||
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
|
||||
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
@msfconsole
|
||||
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
|
||||
When I type "help"
|
||||
And I type "exit"
|
||||
|
|
|
@ -1,160 +1,98 @@
|
|||
@msfconsole
|
||||
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
|
||||
When I type "use exploit/windows/smb/ms08_067_netapi"
|
||||
And I type "show options"
|
||||
And I type "exit"
|
||||
Then the output should contain:
|
||||
"""
|
||||
Module options (exploit/windows/smb/ms08_067_netapi):
|
||||
|
||||
Name Current Setting Required Description
|
||||
---- --------------- -------- -----------
|
||||
RHOST yes The target address
|
||||
RPORT 445 yes Set the SMB service port
|
||||
SMBPIPE BROWSER yes The pipe name to use (BROWSER, SRVSVC)
|
||||
"""
|
||||
Then the output should contain the following:
|
||||
| Module options (exploit/windows/smb/ms08_067_netapi) |
|
||||
| Name Current Setting Required Description |
|
||||
| ---- --------------- -------- ----------- |
|
||||
| RHOST yes The target address |
|
||||
| RPORT 445 yes Set the SMB service port |
|
||||
| RPORT 445 yes Set the SMB service port |
|
||||
|
||||
Scenario: The MS08-067 Module should have the following advanced options
|
||||
When I type "use exploit/windows/smb/ms08_067_netapi"
|
||||
And I type "show advanced"
|
||||
And I type "exit"
|
||||
Then the output should contain:
|
||||
"""
|
||||
Module advanced options:
|
||||
Then the output should contain the following:
|
||||
| Name : CHOST |
|
||||
| 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
|
||||
Scenario: Show RHOST/etc variable expansion from a config file
|
||||
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"
|
||||
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`
|
||||
|
||||
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 "project_metasploit_framework_test"
|
||||
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
|
||||
set_env('MSF_DATBASE_CONFIG', Rails.configuration.paths['config/database'].existent.first)
|
||||
set_env('RAILS_ENV', 'test')
|
||||
@aruba_timeout_seconds = 3.minutes
|
||||
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