2014-09-02 23:57:55 +00:00
|
|
|
@boot
|
2014-08-27 21:46:23 +00:00
|
|
|
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.
|
|
|
|
|
2014-08-28 01:33:52 +00:00
|
|
|
Scenario: With all 4 locations, --yaml wins
|
2014-08-28 02:15:00 +00:00
|
|
|
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:
|
2014-08-27 21:46:23 +00:00
|
|
|
"""
|
|
|
|
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 "../.."
|
2014-08-28 02:38:46 +00:00
|
|
|
And the project "database.yml" exists with:
|
2014-08-28 02:36:23 +00:00
|
|
|
"""
|
|
|
|
test:
|
|
|
|
adapter: postgresql
|
|
|
|
database: project_metasploit_framework_test
|
|
|
|
username: project_metasploit_framework_test
|
|
|
|
"""
|
2016-05-06 17:00:17 +00:00
|
|
|
When I run `msfconsole -q --defer-module-loads --environment test --execute-command exit --yaml command_line.yml`
|
2014-08-27 21:46:23 +00:00
|
|
|
Then the output should contain "command_line_metasploit_framework_test"
|
2014-08-28 01:33:52 +00:00
|
|
|
|
|
|
|
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 "../.."
|
2014-08-28 02:38:46 +00:00
|
|
|
And the project "database.yml" exists with:
|
2014-08-28 02:36:23 +00:00
|
|
|
"""
|
|
|
|
test:
|
|
|
|
adapter: postgresql
|
|
|
|
database: project_metasploit_framework_test
|
|
|
|
username: project_metasploit_framework_test
|
|
|
|
"""
|
2016-05-06 17:00:17 +00:00
|
|
|
When I run `msfconsole -q --defer-module-loads --environment test --execute-command exit`
|
2014-08-28 01:57:08 +00:00
|
|
|
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 "../.."
|
2014-08-28 02:38:46 +00:00
|
|
|
And the project "database.yml" exists with:
|
2014-08-28 02:36:23 +00:00
|
|
|
"""
|
|
|
|
test:
|
|
|
|
adapter: postgresql
|
|
|
|
database: project_metasploit_framework_test
|
|
|
|
username: project_metasploit_framework_test
|
|
|
|
"""
|
2016-05-11 19:28:02 +00:00
|
|
|
When I run `msfconsole -q --defer-module-loads --environment test --execute-command exit`
|
2014-08-28 02:47:31 +00:00
|
|
|
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
|
|
|
|
"""
|
2016-05-11 19:28:02 +00:00
|
|
|
When I run `msfconsole -q --defer-module-loads --environment test --execute-command db_status --execute-command exit`
|
2014-08-28 03:02:16 +00:00
|
|
|
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
|
2016-05-06 17:00:17 +00:00
|
|
|
When I run `msfconsole -q --defer-module-loads --environment test --execute-command db_status --execute-command exit`
|
2014-08-28 03:02:16 +00:00
|
|
|
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"
|
2014-10-29 18:21:31 +00:00
|
|
|
|
2014-10-30 20:36:16 +00:00
|
|
|
Scenario: Starting `msfconsole` with a valid database.yml
|
2016-05-06 17:00:17 +00:00
|
|
|
When I run `msfconsole -q --defer-module-loads --execute-command db_status --execute-command exit`
|
2014-09-02 23:57:55 +00:00
|
|
|
Then the output should contain "[*] postgresql connected to metasploit_framework_test"
|
2014-10-29 18:21:31 +00:00
|
|
|
|