An important feature of Metasploit is the backend database support for PostgreSQL, which you can use to store your penetration-testing results. Any penetration test consists of lots of information and can run for several days, so it becomes essential to store the intermediate results and findings, such as target host data, system logs, collected evidence, and report data. As a good penetration-testing tool, Metasploit has proper database integration to store the results quickly and efficiently. In this recipe, we will be dealing with the installation and configuration process of a database in Kali Linux.
To configure PostgreSQL, we will first start the service and then use the Metasploit msfdb
command to initialize the database.
- To set up our Metasploit database, we first need to start up the PostgreSQL server, using the following command:
root@kali:~# systemctl start postgresql
- Then we need to create and initialize the
msf
database with themsfdb
command with theinit
option:
root@kali:~# msfdb init Creating database user 'msf' Enter password for new role: Enter it again: Creating databases 'msf' and 'msf_test' Creating configuration file in /usr/share/metasploit-framework/config/database.yml Creating initial database schema
The msfdb
command allows you to manage the Metasploit Framework database, not just initialize the database. To display all the msfdb
options, run the command as follows:
root@kali:~# msfdb Manage a metasploit framework database msfdb init # initialize the database msfdb reinit # delete and reinitialize the database msfdb delete # delete database and stop using it msfdb start # start the database msfdb stop # stop the database
- To modify the database configuration file, we can edit the
database.yml
file located in/usr/share/metasploit-framework/config/database.yml
:
root@kali:~# cat /usr/share/metasploit-framework/config/database.yml development: adapter: postgresql database: msf username: msf password: 3HcNhAtdH6F9F2iGa4z3wJVoI7UK1Ot+MG1zuKjYzn4= host: localhost port: 5432 pool: 5 timeout: 5 production: adapter: postgresql database: msf username: msf password: 3HcNhAtdH6F9F2iGa4z3wJVoI7UK1Ot+MG1zuKjYzn4= host: localhost port: 5432 pool: 5 timeout: 5 test: adapter: postgresql database: msf_test username: msf password: 3HcNhAtdH6F9F2iGa4z3wJVoI7UK1Ot+MG1zuKjYzn4= host: localhost port: 5432 pool: 5 timeout: 5
Notice the default username
, password
, and default database
that has been created. If necessary, you can also change these values according to your preference.
- Now, let's launch the
msfconsole
interface and confirm that Metasploit is successfully connected to the database using thedb_status
command:
msf > db_status [*] postgresql connected to msf
To connect to a database manually, you can use the db_connect
command followed by the credentials, host, and database you want to connect to, using the following syntax:
db_connect <user:pass>@<host:port>/<database>
To test the db_connect
command, we can use the values of the username, password, database name, and port number, from the database.yml
file:
msf > db_disconnect msf > db_status [*] postgresql selected, no connection msf > db_connect msf:[email protected]/msf [*] Rebuilding the module cache in the background... msf > db_status [*] postgresql connected to msf
We can also use db_connect
with the -y
option and the path to the database configuration file:
msf > db_disconnect msf > db_status [*] postgresql selected, no connection msf > db_connect -y /usr/share/metasploit-framework/config/database.yml [*] Rebuilding the module cache in the background... msf > db_status [*] postgresql connected to msf
If you want the database to connect every time you launch msfconsole
, copy the database configuration file to the .msf4
directory which was created in your home directory by the Metasploit installer.