Files
beef/install
Sebastian Reitenbach a73a60d0c1 Add support to install script to install BeEF on OpenBSD.
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"
2018-03-17 23:22:22 +01:00

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 "$@"