Alpine 上的 Metasploit 错误

Alpine 上的 Metasploit 错误

当我尝试运行时./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

.: 弗朗西斯科

相关内容