当我尝试运行时./msfconsole
出现此错误:
Traceback (most recent call last):
9: from ./msfconsole:48:in `<main>'
8: from ./msfconsole:48:in `require'
7: from /opt/metasploit-framework/lib/msf/core/payload_generator.rb:2:in `<top (required)>'
6: from /opt/metasploit-framework/lib/msf/core/payload_generator.rb:2:in `require'
5: from /opt/metasploit-framework/lib/msf/core/payload/apk.rb:3:in `<top (required)>'
4: from /opt/metasploit-framework/lib/msf/core/payload/apk.rb:3:in `require'
3: from /opt/metasploit-framework/lib/msf/core.rb:44:in `<top (required)>'
2: from /opt/metasploit-framework/lib/msf/core.rb:44:in `require'
1: from /opt/metasploit-framework/lib/msf/core/db_manager.rb:24:in `<top (required)>'
/opt/metasploit-framework/lib/msf/core/db_manager.rb:66:in `<class:DBManager>': undefined local variable or method `optionally_include_metasploit_credential_creation' for Msf::DBManager:Class (NameError)
但我已经安装了Metasploit 凭证( gem install metasploit-credential
)。我用阿尔卑斯山, 版本3.2.0架构是i386 musl-linux。我该如何解决这个错误?先感谢您
答案1
这是一个让 Metasploit 与最新稳定的 Alpine 版本一起运行的方法。
这来自我不久前制作的 alpine-metasploit docker 镜像,可在此处获取: https://github.com/fcolista/alpine-metasploit并使用 PostgreSQL DB 作为后端。
如果您不想使用数据库,您可以跳过 PostgreSQL 设置(如第 n.5 点所述)并mfsconsole
从"-n"
参数开始(如第 n.6 点的脚本所示),但请考虑如果没有D B。
1. 在主仓库和社区仓库中使用Alpine 3.11
回声“http://dl-cdn.alpinelinux.org/alpine/v3.11/main”> /etc/apk/repositories 回声“http://dl-cdn.alpinelinux.org/alpine/v3.11/community”>> /etc/apk/repositories
2.添加需要的包
apk 更新 && \ apk 添加构建基础 ruby ruby-bigdecimal \ ruby-bundler ruby-io-console ruby-webrick \ ruby-dev libffi-dev openssl-dev \ readline-dev sqlite-dev postgresql-dev \ libpcap-dev libxml2-dev libxslt-dev \ yaml-dev zlib-dev ncurses-dev autoconf \ 野牛颠覆 git sqlite nmap \ libxslt postgresql ncurses
3.克隆metasploit存储库/usr/share
(根据您的需要调整目录)
cd /usr/share && \ git 克隆 https://github.com/rapid7/metasploit-framework.git && \ cd /usr/share/metasploit-framework && \ 捆绑包更新--bundler 捆绑安装
4.删除不需要的包
apk del 构建基础 ruby-dev libffi-dev openssl-dev \ readline-dev sqlite-dev postgresql-dev \ libpcap-dev libxml2-dev libxslt-dev yaml-dev \ zlib-dev ncurses-dev bison autoconf \ && rm -rf /var/cache/apk/*
5. 设置并启动 PostgreSQL
rc-service postgresql 设置 && rc-service postgresql 启动
6. 复制/粘贴这个简单的脚本,用于设置数据库并启动 mfsconsole。
#!/bin/sh /usr/share/metasploit-framework/msfupdate MSFUSER=${MSFUSER:-postgres} MSFPASS=${MSFPASS:-postgres} DB_PORT_5432_TCP_ADDR=${DB_PORT_5432_TCP_ADDR:-localhost} 如果 ! [ -z "$DB_PORT_5432_TCP_ADDR" ];然后 # 检查用户是否存在 如果 ! [ $(psql -h $DB_PORT_5432_TCP_ADDR -p 5432 -U postgres postgres -tAc "从 pg_roles 中选择 1,其中 rolname='$MSFUSER'") == "1" ];然后 psql -h $DB_PORT_5432_TCP_ADDR -p 5432 -U postgres postgres -c "创建角色 $MSFU SER 登录密码 '$MSFPASS'" 菲 如果 ! [ $(psql -h $DB_PORT_5432_TCP_ADDR -p 5432 -U postgres postgres -lqtA | grep "^msf|" | wc -l) == "1" ];然后 psql -h $DB_PORT_5432_TCP_ADDR -p 5432 -U postgres postgres -c "创建数据库 msf 所有者 $MSFUSER;" 菲 sh -c "echo '制作: 适配器:postgresql 数据库:无国界医生组织 用户名:$MSFUSER 密码:$MSFPASS 主机:$DB_PORT_5432_TCP_ADDR 端口:5432 池数:75 超时:5'> /usr/share/metasploit-framework/config/database.yml" 别的 /usr/share/metasploit-framework/msfconsole -n 菲 /usr/share/metasploit-framework/msfconsole
.: 弗朗西斯科