赞
踩
使用msf的时候我们会先初始化数据库,但wsl初始化数据库(msfdb init
)的时候会发生报错。主要报错提示为System has not been booted with systemd as init system (PID 1). Can't operate.
在接下来我们对数据库的大多数操作(比如:sudo msfdb start
、sudo msfdb run
)都会出现此错误。
使用msf工作台时会提示我们数据库未连接。
所有报错信息都指向关键的System has not been booted with systemd as init system (PID 1). Can't operate.
,这个报错指的是我们没有启动systemd
,使用service --status-all
命令可以看出,我们的数据库的确没有启动。根据我网上搜索的结果systemd
主要用来对数据库进行一些操作,但wsl系统中并不能使用systemd
,所有我们可以大胆的在此推测,在创建阶段就失败了。这里我们的解决方案就出来了,我们可以尝试手动建立数据库。
根据db_status
信息(上面报错信息中最后一张图中我使用了这个命令),我们可以看到我们需要连接的数据库管理系统叫postgresql,一个类似与MySQL、mssql这类的关系型数据库。首先我们在kali中启动这个数据库
sudo service postgresql start
sudo service postgresql status
出现如下所示则代表postgresql数据库管理系统启动成功。(如果报错,可以往下翻,我在一次部署的时候也发生了报错)
进入数据库并且修改数据库密码
# 先进入数据库安装目录里面有数据库的配置文件`postgresql.conf`可以改其中的配件,我当前msf使用的数据库为12版本,对应的下面的12,如果你的msf和我版本不同,可能数据库版本也不同,可以尝试先进入cd /etc/postgresql,使用ls查看有哪些版本,在进入。
cd /etc/postgresql/12/main
# 进入数据库
sudo -u postgres psql
# 修改管理员密码(当前密码为root),可以自行修改为自己想要的
alter user postgres password 'root';
# 创建一个新数据库用户,用户名为 msf 用户密码为 root
create user msf with password 'root' createdb;
# 为msf用户创建一个msf数据库
create database msf with owner=msf;
# 退出数据库
quit
尝试登陆数据库是看上述步骤是否配置成功,这一步可以省略掉
# 尝试登陆数据库
psql -U postgres -h 127.0.0.1
# 如图报错,则可能是数据库数据库端口并非默认端口(5432)
# 可以尝试指定端口登陆,比如我的端口就是5958,我这需要使用-p 5958
psql -U postgres -p 5958 -h 127.0.0.1
# 登陆后就可以退出了
/q
如果我们成功登陆数据库,接下来我就可以连接进入msf
连接数据库
# 进入msf
msfconsole
# 连接数据库
db_connect 数据库用户名:数据库密码@数据库ip[:数据库端口]/数据库名
比如
db_connect msf:root@127.0.0.1/msf
或
db_connect msf:root@127.0.0.1:5958/msf
# 测试数据库是否连接成功
db_status
PS:报错解决方法我也是看了一个大佬写的手动创建msf数据库的博客才解决的。这里放一下那个大佬的博客连接。
但如果你的环境比较复杂,出现如下报错。我在一台服务和两台电脑中有一台在手动创建数据库部署阶段出现下图所示错误。
根据输出提示是感觉是端口被占用或者无法使用本地环路,具体原因我找了几个小时都没解决,最后我将数据库卸载重装了一下修好了此问题。
# 卸载数据库
sudo apt-get --purge remove postgresql\*
# 卸载数据库的时候msf也会被连带卸载,所以我们重装一下msf,重装msf的同时会自动重装数据库。
sudo apt-get install metasploit-framework
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。