(1) 首先查看一下PostgreSQL数据库是否有在运行:netstat -tnpl | grep postgres,如果没有在运行就启动一下PostgreSQL服务:service postgresql start。
root@kali:~# netstat -tnpl | grep postgrestcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 9867/postgrestcp 0 0 127.0.0.1:5433 0.0.0.0:* LISTEN 9866/postgrestcp6 0 0 ::1:5432 :::* LISTEN 9867/postgrestcp6 0 0 ::1:5433 :::* LISTEN 9866/postgresroot@kali:~# service postgresql status //查看postgresql服务状态root@kali:~# service postgresql start //启动postgresql服务root@kali:~# service postgresql stop //停止postgresql服务
(2) 如果Metasploit的PostgreSQL数据库在连接报错或者没有连接上的情况下,我们就需要手动连接了,使用locate命令搜索找到database.yml数据库配置文件。
root@kali:~# locate database.yml/usr/share/metasploit-framework/config/database.yml/usr/share/metasploit-framework/config/database.yml.example/usr/share/metasploit-framework/config/database.yml.travis/usr/share/metasploit-framework/config/database.yml.vagrant[...SNIP...]
(3) 使用PostgreSQL用户连接到PostgreSQL数据库,新建1个msf3的数据库和用户,密码为123456。
root@kali:~# sudo -u postgres psql postgrespsql (9.5.4, server 9.5.0)Type "help" for help.postgres=# create database msf3;CREATE DATABASEpostgres=# create user msf3;CREATE ROLEpostgres=# alter user msf3 with password '123456';CREATE ROLE
(4) 使用db_connect -y命令连接已改好database.yml数据库配置文件即可,db_status查看连接状态。
msf > db_connect[*] Usage: db_connect <user:pass>@<host:port>/<database>[*] OR: db_connect -y [path/to/database.yml][...SNIP...]msf > db_connect -y /usr/share/metasploit-framework/config/database.yml[-] postgresql already connected to msf3[-] Run db_disconnect first if you wish to connect to a different databasemsf > db_status[*] postgresql connected to msf3
(5) PostgreSQL数据库服务默认是没有开启自启动的,每次启动Metasploit时都需要手动连接数据库,可使用以下命令来设置PostgreSQL服务的自启动。
root@kali:~# update-rc.d postgresql enableroot@kali:~# update-rc.d postgresql disabled
常用PostgreSQL命令参数
root@kali:~# sudo passwd -d postgres //删除postgres用户的密码root@kali:~# sudo -u postgres passwd //设置postgres用户的密码root@kali:~# psql -h 127.0.0.1 -U postgres -d msf //进入本地msf数据库\? //帮助\l //所有数据库\du //所有用户名\s //命令行记录\q //退出命令行\c //切换数据库\d //列出当前数据库的数据表\d tablename //列出指定表的字段\d+ tablename //查看指定表的情况
注:以上笔记内容为前几年记录,经朋友@离提醒说现在的新版Metasploit可以直接通过执行sudo msfdb start命令来解决,我没有测试过,大家如果以后遇到此类问题时可以试一下。

