解决配置metasploit数据库以及配置metasploitable3遇到的一些问题
在kali上配置metasploit数据库
metasploit无法链接数据库的问题
kali是自带metasploit框架的,自带的metasploit使用的是postgresql数据库。
我在使用其他软件时,进行了apt-get update以及apt-get upgrade,更新了postgresql数据库,这就导致了之前kali自带的数据库版本和postgresql更新后的版本不一样,错误的提示是这样的:
2024-07-17 04:27:25.465 EDT [23074] WARNING: database "postgres" has a collation version mismatch
2024-07-17 04:27:25.465 EDT [23074] DETAIL: The database was created using collation version 2.37, but the operating system provides version 2.38.
2024-07-17 04:27:25.465 EDT [23074] HINT: Rebuild all objects in this database that use the default collation and run ALTER DATABASE template1 REFRESH COLLATION VERSION, or build PostgreSQL with the right library version.
这一个解决办法可以参考database “postgres“ has a collation version mismatch(id:83Dillon)老哥的写的博客的解法,把postgres数据库重设索引并更新版本可以解决。
但是,我在配置的时候出现了另一个问题,我不光是database "postgres"有这个版本问题,我的database "template1"也有相同的问题,而在我尝试使用ALTER修改template1的版本的时候,他告诉我:
template1=# REINDEX database template1;
REINDEX
template1=# ALTER DATABASE template1 REFRESH COLLATION VERSION;
NOTICE: version has not changed
同时还表现为msfdb reinit失败 :
Unable to login to Postgres due to 'connection to server at "127.0.0.1", port 5432
也就是说重构索引成功了,但是不知道为啥,版本没有修改成功,postgres也不告诉我为啥修改不了,等我再查日志还是一样的问题,哪怕使用apt-get卸载重装postgresql,还是一样的结果。再疯狂在百度上搜索相关问题,但是百度在这个问题上似乎根本搜不到相似的解答。
索性,换成bing来搜,直接打开国际版,第一条搜索结果就非常地契合我的问题。卸载postgresql并不会卸载数据库,postgresql数据库是以pg_clusters形式存在的。
解决方式
命令行输入pg_lsclusters ,可以知道数据库版本和日志文件所在位置,结果是这样:
Ver Cluster Port Status Owner Data directory Log file
15 main 5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
16 main 5433 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log
可以看到有两个数据库,其中ver15是之前版本即具有的,ver16是apt upgrade之后,新的版本的数据库,为了重构数据库,我们直接暴力删除两个数据库:
sudo -u postgres pg_dropcluster --stop 15 main
sudo -u postgres pg_dropcluster --stop 16 main
重构数据库并完成metasploit数据库的初始化:
sudo pg_createcluster 16 main --start
sudo msfdb init
#如果显示已经存在,那么就重构msfdb数据库:
sudo msfdb reinit
再msfconsole连接,输入db_status应该即可见成功的话语:
[*] Connected to msf. Connection type: postgresql.
WINDOWS环境下,使用virtualbox布置metasploitable3靶场
使用官方的快捷部署方法:
先使用git clone https://github.com/rapid7/metasploitable3.git
把源码克隆到文件夹下,并在克隆完后得到的metasploitable3
文件夹内创建rapid7
文件夹。再打开windows的powershell,工作路径设置为刚刚的文件夹,输入下面一行代码
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/rapid7/metasploitable3/master/Vagrantfile" -OutFile "Vagrantfile"
#vagrant up 这一行代码先不要输入
一般来说,vagrant up这一步会卡住,因为国内的网下载外面的镜像会很慢很慢,所以这一步暂时先不运行,我们先自己下好镜像。
在ubuntu1404下载ubuntu靶场镜像,在windows2008下载windows镜像,分别改名为metasploitable3-ub1404与metasploitable3-win2k8并放入之前的metasploitable3/rapid7/
路径下。这个时候再回到powershell输入vagrant up
来生成virtualbox环境下的虚拟机,过一会儿即可完成。
完成后,打开virtualbox,如果看见新的虚拟机已经在后台运行了,则部署完毕。虚拟机是默认部署在c盘的,如果想要修改位置放到d盘之类的地方的话,需要在虚拟机关闭状态下于virtualbox右键虚拟机,即可进行移动操作。
建议大家在搜索不到相关内容的时候,换一个搜索引擎,不要太钻牛角尖。我就是太依赖于百度才在这个问题上卡这么久的。如果是国外的开源软件,有时候用英文引擎(bing国际版)或许更好找到答案。