PostgreSQL其实并不是一定需要通过端口来连接。
在PostgreSQL的配置中有一项是将PSQL配置成不开放端口,只使用Unix套接字的通信。
具体的内容,可以参考下国内PostgreSQL大神的博客:
https://github.com/digoal/blog/blob/master/201701/20170111_01.md
也就是,在postgresql.conf中,将监听的主机listen_address改成空,即可在不开启端口的情况下进行通信。
如果你的 unix_socket_directories 选项配置的路径是在/tmp,那么在postgresql运行后,你的/tmp下面将会有”.s.PGSQL.5432”这个文件(通过ls -a /tmp 可以查看到)。
如果在配置好listen_address和unix_socket_directories之后,重启postgresql服务,并且/tmp下的套接字文件存在,就说已经配置好。
这时在metasploit的database.yml文件中,配置host为/tmp,用户名和密码可以随便写,数据库名称就写metasploit的数据库。
然后再配置一下postgresql的”pg_hba.conf”文件,
在其中加入local all all trust
将所有来自本地unix域的请求设置为信任。就可以在不开端口的情况下在metasploit中使用postgresql了。
为了安全起见,还可以在
postgresql.conf中,将unix_socket_permissions改为0770,这样可以避免无关用户滥用这个unix接口。