(1) 首先查看一下PostgreSQL数据库是否有在运行:netstat -tnpl | grep postgres,如果没有在运行就启动一下PostgreSQL服务:service postgresql start。

    1. root@kali:~# netstat -tnpl | grep postgres
    2. tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 9867/postgres
    3. tcp 0 0 127.0.0.1:5433 0.0.0.0:* LISTEN 9866/postgres
    4. tcp6 0 0 ::1:5432 :::* LISTEN 9867/postgres
    5. tcp6 0 0 ::1:5433 :::* LISTEN 9866/postgres
    6. root@kali:~# service postgresql status //查看postgresql服务状态
    7. root@kali:~# service postgresql start //启动postgresql服务
    8. root@kali:~# service postgresql stop //停止postgresql服务

    (2) 如果Metasploit的PostgreSQL数据库在连接报错或者没有连接上的情况下,我们就需要手动连接了,使用locate命令搜索找到database.yml数据库配置文件。

    1. root@kali:~# locate database.yml
    2. /usr/share/metasploit-framework/config/database.yml
    3. /usr/share/metasploit-framework/config/database.yml.example
    4. /usr/share/metasploit-framework/config/database.yml.travis
    5. /usr/share/metasploit-framework/config/database.yml.vagrant
    6. [...SNIP...]

    (3) 使用PostgreSQL用户连接到PostgreSQL数据库,新建1个msf3的数据库和用户,密码为123456。

    1. root@kali:~# sudo -u postgres psql postgres
    2. psql (9.5.4, server 9.5.0)
    3. Type "help" for help.
    4. postgres=# create database msf3;
    5. CREATE DATABASE
    6. postgres=# create user msf3;
    7. CREATE ROLE
    8. postgres=# alter user msf3 with password '123456';
    9. CREATE ROLE

    (4) 使用db_connect -y命令连接已改好database.yml数据库配置文件即可,db_status查看连接状态。

    1. msf > db_connect
    2. [*] Usage: db_connect <user:pass>@<host:port>/<database>
    3. [*] OR: db_connect -y [path/to/database.yml]
    4. [...SNIP...]
    5. msf > db_connect -y /usr/share/metasploit-framework/config/database.yml
    6. [-] postgresql already connected to msf3
    7. [-] Run db_disconnect first if you wish to connect to a different database
    8. msf > db_status
    9. [*] postgresql connected to msf3

    (5) PostgreSQL数据库服务默认是没有开启自启动的,每次启动Metasploit时都需要手动连接数据库,可使用以下命令来设置PostgreSQL服务的自启动。

    1. root@kali:~# update-rc.d postgresql enable
    2. root@kali:~# update-rc.d postgresql disabled

    常用PostgreSQL命令参数

    1. root@kali:~# sudo passwd -d postgres //删除postgres用户的密码
    2. root@kali:~# sudo -u postgres passwd //设置postgres用户的密码
    3. root@kali:~# psql -h 127.0.0.1 -U postgres -d msf //进入本地msf数据库
    4. \? //帮助
    5. \l //所有数据库
    6. \du //所有用户名
    7. \s //命令行记录
    8. \q //退出命令行
    9. \c //切换数据库
    10. \d //列出当前数据库的数据表
    11. \d tablename //列出指定表的字段
    12. \d+ tablename //查看指定表的情况

    注:以上笔记内容为前几年记录,经朋友@离提醒说现在的新版Metasploit可以直接通过执行sudo msfdb start命令来解决,我没有测试过,大家如果以后遇到此类问题时可以试一下。


    public.png