第一次运行msfconsole时,BT5中的Metasploit会创建名称为msf3dev的Postgresql数据库,并生成保存渗透测试数据所需的数据表,然后使用名称为msf3的用户,自动连接到msf3数据库。启动msfconsole后,可以输入db_status命令,查看数据库的连接状态。
如果出现代码清单3-28中的输出消息,那么说明数据库连接是正常的。
代码清单3-28 db_status命令
msf > db_status
[*] postgresql connected to msf3dev
每次msfconsole启动时,会自动连接到msf3dev数据库,如果想要连接到其他数据库,应当使用db_connect命令连接到数据库。
如果db_connect命令中的数据库不存在,那么Metasploit会自动新建一个数据库,并建立好需要使用的数据表,如果数据库已存在,则不会输出任何信息,直接返回到msf>的提示界面。db_connect命令的基本格式为:
db_connect用户名:口令@服务器地址:端口/数据库名称
用户名请填写postgres,口令请按照上一节介绍的方法在/opt/metasploit/properties.ini中查找。输入db_connect命令连接到数据库,如代码清单3-29所示。
代码清单3-29 db_connect命令
msf > db_connect postgres:84cd2bcf@localhost:7337/msf4
提示 截止到本书写作时,Metasploit v4在自动新建数据库时有一个未修复的Bug,如果db_connect命令指定一个新的数据库,那么会提示新建的数据库编码错误,显示的出错信息如下:
[-] Error while running command db_connect: Failed to connect to the database: PGError: ERROR: new encoding (UTF8) is incompatible with the encoding of the template database (sql_ASCII)
目前该Bug临时的解决方法为在BT5的命令提示符下使用createdb命令新建数据库,然后使用db_connect连接到这个数据库上,新建数据库时需要提供刚刚找到的postgres_root_password口令,并且将数据库的属主设置为msf3用户:
root@bt:~# /opt/Metasploit/postgresql/bin/createdb msf4 -E UTF8 -T template0 -O msf3
Password:
连接到数据库后,可以使用hosts命令检查数据库是否可以正常使用,如代码清单3-30所示。
代码清单3-30 hosts命令
msf > hosts
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
可以使用db_disconnect命令断开与数据库的连接:
msf > db_disconnect
可以在BT5的命令提示符下,使用dropdb命令删除一个数据库,如下所示:
root@bt:~# /opt/framework/Metasploit/bin/dropdb msf4
输入上页中找到的postgres_root_password,即可完成删除。