The tricky part is that on OpenBSD, there might be multiple Ruby versions available in parallel. They are, and the binaries using each of thse version, suffixed with the version number. Therefore add a global variable RUBYSUFFIX default to empty, and when detecting OpenBSD add this suffix to all Ruby commands from the script. Also add a simple install_openbsd function just installing all the system packages. run the script with "bash install" and later on run BeEF with "ruby24 beef"
179 lines
4.2 KiB
Bash
Executable File
179 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (c) 2006-2018 Wade Alcorn - wade@bindshell.net
|
|
# Browser Exploitation Framework (BeEF) - http://beefproject.com
|
|
# See the file 'doc/COPYING' for copying permission
|
|
#
|
|
|
|
set -euo pipefail
|
|
IFS=$'\n\t'
|
|
|
|
|
|
info() { echo -e "\\033[1;36m[INFO]\\033[0m $*"; }
|
|
warn() { echo -e "\\033[1;33m[WARNING]\\033[0m $*"; }
|
|
fatal() { echo -e "\\033[1;31m[FATAL]\\033[0m $*"; exit 1 ; }
|
|
|
|
RUBYSUFFIX=''
|
|
|
|
command_exists () {
|
|
|
|
command -v "$1" /dev/null 2&>/dev/null
|
|
}
|
|
|
|
|
|
get_permission () {
|
|
|
|
warn 'This script will install BeEF and its required dependencies (including operating system packages).'
|
|
|
|
read -rp "Are you sure you wish to continue (Y/n)? "
|
|
if [ "$(echo "${REPLY}" | tr "[:upper:]" "[:lower:]")" = "n" ] ; then
|
|
fatal 'Installation aborted'
|
|
fi
|
|
}
|
|
|
|
|
|
check_os () {
|
|
|
|
info "Detecting OS..."
|
|
|
|
OS=$(uname)
|
|
readonly OS
|
|
info "Operating System: $OS"
|
|
if [ "${OS}" = "Linux" ] ; then
|
|
info "Launching Linux install..."
|
|
install_linux
|
|
elif [ "${OS}" = "Darwin" ]; then
|
|
info "Launching Mac OSX install..."
|
|
install_mac
|
|
elif [ "${OS}" = "OpenBSD" ]; then
|
|
info "Launching OpenBSD install..."
|
|
for SUFX in 26 25 24 23
|
|
do
|
|
if command_exists ruby${SUFX}
|
|
then
|
|
RUBYSUFFIX=${SUFX}
|
|
break
|
|
fi
|
|
done
|
|
install_openbsd
|
|
else
|
|
fatal "Unable to locate installer for your Operating system: $OS"
|
|
fi
|
|
}
|
|
|
|
|
|
install_linux () {
|
|
|
|
info "Detecting Linux OS distribution..."
|
|
|
|
Distro=''
|
|
if [ -f /etc/redhat-release ] ; then
|
|
Distro='RedHat'
|
|
elif [ -f /etc/debian_version ] ; then
|
|
Distro='Debian'
|
|
elif [ -f /etc/os-release ] ; then
|
|
DISTRO_ID=$(grep ^ID= /etc/os-release | cut -d= -f2-)
|
|
if [ "${DISTRO_ID}" = 'kali' ] ; then
|
|
Distro='Kali'
|
|
fi
|
|
fi
|
|
|
|
if [ -z "${Distro}" ] ; then
|
|
fatal "Unable to locate installer for your ${OS} distribution"
|
|
fi
|
|
|
|
readonly Distro
|
|
info "OS Distribution: ${Distro}"
|
|
info "Installing ${Distro} prerequisite packages..."
|
|
if [ "${Distro}" = "Debian" ] || [ "${Distro}" = "Kali" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install curl git build-essential openssl libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf libc6-dev libncurses5-dev automake libtool bison nodejs
|
|
elif [ "${Distro}" = "RedHat" ]; then
|
|
sudo yum install -y git make gcc openssl-devel gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel bzip2 autoconf automake libtool bison sqlite-devel nodejs
|
|
fi
|
|
}
|
|
|
|
install_openbsd () {
|
|
|
|
sudo pkg_add curl git libyaml libxml libxslt bison node ruby${RUBYSUFFIX}-bundler lame espeak
|
|
|
|
}
|
|
|
|
install_mac () {
|
|
# brew install ...
|
|
echo
|
|
}
|
|
|
|
|
|
check_ruby_version () {
|
|
|
|
info 'Detecting Ruby environment...'
|
|
|
|
MIN_RUBY_VER='2.3'
|
|
if command_exists ruby${RUBYSUFFIX}
|
|
then
|
|
RUBY_VERSION=$(ruby${RUBYSUFFIX} -e "puts RUBY_VERSION")
|
|
info "Ruby version ${RUBY_VERSION} is installed"
|
|
if [ "$(ruby${RUBYSUFFIX} -e "puts RUBY_VERSION.to_f >= ${MIN_RUBY_VER}")" = 'false' ]
|
|
then
|
|
fatal "Ruby version ${RUBY_VERSION} is not supported. Please install Ruby ${MIN_RUBY_VER} (or newer) and restart the installer."
|
|
fi
|
|
else
|
|
fatal "Ruby is not installed. Please install Ruby ${MIN_RUBY_VER} (or newer) and restart the installer."
|
|
fi
|
|
}
|
|
|
|
|
|
check_bundler () {
|
|
|
|
info 'Detecting bundler gem...'
|
|
|
|
if command_exists bundler${RUBYSUFFIX}
|
|
then
|
|
info "bundler${RUBYSUFFIX} gem is installed"
|
|
else
|
|
info 'Installing bundler gem'
|
|
gem${RUBYSUFFIX} install bundler
|
|
fi
|
|
}
|
|
|
|
|
|
install_beef () {
|
|
|
|
echo "Installing required Ruby gems..."
|
|
bundle${RUBYSUFFIX} install --without test development
|
|
|
|
echo
|
|
echo "=========================================="
|
|
echo
|
|
info "Install completed successfully!"
|
|
info "Run './beef' to launch BeEF"
|
|
echo
|
|
echo "=========================================="
|
|
echo
|
|
}
|
|
|
|
|
|
main () {
|
|
|
|
clear
|
|
|
|
if [ -f core/main/console/beef.ascii ] ; then
|
|
cat core/main/console/beef.ascii
|
|
echo
|
|
fi
|
|
|
|
echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#"
|
|
echo " -- [ BeEF Installer ] -- "
|
|
echo "#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#"
|
|
echo
|
|
|
|
get_permission
|
|
check_os
|
|
check_ruby_version
|
|
check_bundler
|
|
install_beef
|
|
}
|
|
|
|
main "$@"
|