From a8d3faea4ffdd77b3698a18b0bf9e35a654b5543 Mon Sep 17 00:00:00 2001 From: xfnw Date: Sat, 26 Feb 2022 21:36:08 -0500 Subject: [PATCH] fix some broken beef dependencies this fix depends on some bits of nixpkgs, so it is unlikely to be able to be merged back with upstream nur --- .gitignore | 1 + blix.nix | 2 +- pkgs/beef/Gemfile | 105 ++++++ pkgs/beef/db-in-homedir.patch | 39 +++ pkgs/beef/default.nix | 45 +++ pkgs/beef/gemset.nix | 608 ++++++++++++++++++++++++++++++++++ pkgs/beef/shell.nix | 16 + 7 files changed, 815 insertions(+), 1 deletion(-) create mode 100644 pkgs/beef/Gemfile create mode 100644 pkgs/beef/db-in-homedir.patch create mode 100644 pkgs/beef/default.nix create mode 100644 pkgs/beef/gemset.nix create mode 100644 pkgs/beef/shell.nix diff --git a/.gitignore b/.gitignore index df27731..6d41118 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ result result/* +Gemfile.lock diff --git a/blix.nix b/blix.nix index f773b06..b3a51d1 100644 --- a/blix.nix +++ b/blix.nix @@ -82,7 +82,7 @@ with lib; # exploit doona metasploit twa wifite2 burpsuite wpscan wfuzz sqlmap thc-hydra (callPackage ./pkgs/routersploit.nix { }) - dsniff (callPackage ./nur-packages/beef { }) dnschef + dsniff (callPackage ./pkgs/beef { }) dnschef # crack hashcat mfoc john crunch diceware crowbar # pyrit diff --git a/pkgs/beef/Gemfile b/pkgs/beef/Gemfile new file mode 100644 index 0000000..da13e1f --- /dev/null +++ b/pkgs/beef/Gemfile @@ -0,0 +1,105 @@ +# BeEF's Gemfile + +# +# Copyright (c) 2006-2018 Wade Alcorn - wade@bindshell.net +# Browser Exploitation Framework (BeEF) - http://beefproject.com +# See the file 'doc/COPYING' for copying permission +# + +gem 'eventmachine' +gem 'thin' +gem 'sinatra', '~> 2.0' +gem 'rack', '~> 2.0' +gem 'rack-protection', '~> 2.0' +gem 'em-websocket' # WebSocket support +gem 'uglifier' +gem 'mime-types' +gem 'execjs' +gem 'ansi' +gem 'term-ansicolor', :require => 'term/ansicolor' +gem 'dm-core' +gem 'json' +gem 'data_objects' +gem 'rubyzip', '>= 1.2.1' +gem 'espeak-ruby', '>= 1.0.4' # Text-to-Voice +gem 'nokogiri', '>= 1.7' +gem 'rake' + +# SQLite support +group :sqlite do + gem 'dm-sqlite-adapter' +end + +# PostgreSQL support +group :postgres do + #gem dm-postgres-adapter +end + +# MySQL support +group :mysql do + #gem dm-mysql-adapter +end + +# Geolocation support +group :geoip do + gem 'geoip' +end + +gem 'parseconfig' +gem 'erubis' +gem 'dm-migrations' + +# Metasploit Integration extension +group :ext_msf do + gem 'msfrpc-client' + gem 'xmlrpc' +end + +# Notifications extension +group :ext_notifications do + # Pushover + gem 'rushover' + # Slack + gem 'slack-notifier' + # Twitter + gem 'twitter', '>= 5.0.0' +end + +# DNS extension +group :ext_dns do + gem 'rubydns', '~> 0.7.3' +end + +# network extension +group :ext_network do + gem 'dm-serializer' +end + +# QRcode extension +group :ext_qrcode do + gem 'qr4r' +end + +# For running unit tests +group :test do + if ENV['BEEF_TEST'] + gem 'test-unit' + gem 'test-unit-full' + gem 'rspec' + # curb gem requires curl libraries + # sudo apt-get install libcurl4-openssl-dev + gem 'curb' + # selenium-webdriver 3.x is incompatible with Firefox version 48 and prior + gem 'selenium' + gem 'selenium-webdriver', '~> 2.53.4' + # nokogirl is needed by capybara which may require one of the below commands + # sudo apt-get install libxslt-dev libxml2-dev + # sudo port install libxml2 libxslt + gem 'capybara' + # RESTful API tests/generic command module tests + gem 'rest-client', '>= 2.0.1' + gem 'byebug' + end +end + +source 'https://rubygems.org' diff --git a/pkgs/beef/db-in-homedir.patch b/pkgs/beef/db-in-homedir.patch new file mode 100644 index 0000000..e8dd8e3 --- /dev/null +++ b/pkgs/beef/db-in-homedir.patch @@ -0,0 +1,39 @@ +--- /beef 2018-08-16 19:03:55.199437566 +0200 ++++ /beef 2018-08-16 19:27:34.735985233 +0200 +@@ -110,9 +110,20 @@ + # + # @note Database setup - use DataMapper::Logger.new($stdout, :debug) for development debugging + # ++ ++# ++# @note Create ~/.beef/ ++# ++begin ++ FileUtils.mkdir_p($home_dir) unless File.directory?($home_dir) ++rescue => e ++ print_error "Could not create '#{$home_dir}': #{e.message}" ++end ++ + case config.get("beef.database.driver") + when "sqlite" +- DataMapper.setup(:default, "sqlite3://#{$root_dir}/#{config.get("beef.database.db_file")}") ++ print_info "Using Database #{$home_dir}/#{config.get("beef.database.db_file")}" ++ DataMapper.setup(:default, "sqlite3://#{$home_dir}/#{config.get("beef.database.db_file")}") + when "mysql", "postgres" + DataMapper.setup(:default, + :adapter => config.get("beef.database.driver"), +@@ -162,14 +173,6 @@ + BeEF::Core::Console::Banners.print_network_interfaces_count + BeEF::Core::Console::Banners.print_network_interfaces_routes + +-# +-# @note Create ~/.beef/ +-# +-begin +- FileUtils.mkdir_p($home_dir) unless File.directory?($home_dir) +-rescue => e +- print_error "Could not create '#{$home_dir}': #{e.message}" +-end + + # + # @note Check whether we load the Console Shell or not diff --git a/pkgs/beef/default.nix b/pkgs/beef/default.nix new file mode 100644 index 0000000..af46a83 --- /dev/null +++ b/pkgs/beef/default.nix @@ -0,0 +1,45 @@ +{ pkgs, stdenv, bundlerEnv, ruby, fetchFromGitHub, nodejs }: +# nix-shell --command "bundler install && bundix" in the clone, copy gemset.nix, Gemfile and Gemfile.lock +let + gems = bundlerEnv { + name = "beef-env"; + inherit ruby; + gemdir = ./.; + }; +in stdenv.mkDerivation { + name = "beef-2018-09-21"; + src = fetchFromGitHub { + owner = "beefproject"; + repo = "beef"; + rev = "d237c95"; + sha256 = "1mykbjwjcbd2a18wycaf35hi3b9rmvqz1jnk2v55sd4c39f0jpf2"; + }; + prePatch = '' + ls -alhtr + ''; + patches = [ ./db-in-homedir.patch ]; + buildInputs = [gems pkgs.rubyPackages.nokogiri ruby]; + installPhase = '' + mkdir -p $out/{bin,share/beef} + + cp -r * $out/share/beef + # set the default db path, unfortunately setting to /tmp does not seem to work + # sed -i 's#db_file: .*#db_file: "/tmp/beef.db"#' $out/share/beef/config.yaml + + bin=$out/bin/beef + cat > $bin < {}; +stdenv.mkDerivation { + name = "env"; + buildInputs = [ + ruby.devEnv + git + sqlite + libpcap + postgresql + libxml2 + libxslt + pkgconfig + bundix + ]; +}