Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

msfconsole crashes due to ruby gems errors #16434

Closed
ghost opened this issue Apr 9, 2022 · 6 comments · Fixed by #16540
Closed

msfconsole crashes due to ruby gems errors #16434

ghost opened this issue Apr 9, 2022 · 6 comments · Fixed by #16540
Labels
bug confirmed Issues confirmed by a committer easy

Comments

@ghost
Copy link

ghost commented Apr 9, 2022

Steps to reproduce

How'd you do it?

  1. Ran msfconsole and tried running sudo msfconsole
  2. Tried running sudo apt remove --purge metasploit-framework and sudo apt install metasploit-framework. Have also tried using msfupdate
  3. Can't start metasploit via msfconsole or in general because of a bunch of weird ruby gem errors. I am not 100% sure if it is due to Xubuntu which is what I am running and I really don't want to run kali linux everytime I want to use msf.

This section should also tell us any relevant information about the
environment; for example, if an exploit that used to work is failing,
tell us the victim operating system and service versions.

Were you following a specific guide/tutorial or reading documentation? No.

If yes link the guide/tutorial or documentation you were following here, otherwise you may omit this section.

Expected behavior

What should happen? metasploit should load not crash.

Current behavior

What happens instead?

/opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:360:in `rescue in block in set_autoloads_in_dir': wrong constant name Github.com inferred by MsfAutoload::TempInflector from directory (Zeitwerk::NameError)

  /opt/metasploit-framework/embedded/framework/lib/msf/core/modules/external/go/pkg/mod/cache/download/github.com

Possible ways to address this:

  * Tell Zeitwerk to ignore this particular directory.
  * Tell Zeitwerk to ignore one of its parent directories.
  * Rename the directory to comply with the naming conventions.
  * Modify the inflector to handle this case.
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:336:in `block in set_autoloads_in_dir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:26:in `block in ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `each_child'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:335:in `set_autoloads_in_dir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:76:in `block in on_namespace_loaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:75:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:75:in `on_namespace_loaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:60:in `block in on_dir_autoloaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:46:in `synchronize'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:46:in `on_dir_autoloaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:31:in `require'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:95:in `const_get'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:95:in `cget'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:244:in `block (2 levels) in eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:26:in `block in ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `each_child'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:232:in `block in eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:217:in `synchronize'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:217:in `eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:317:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:317:in `eager_load_all'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/application/finisher.rb:133:in `block in <module:Finisher>'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:32:in `instance_exec'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:32:in `run'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:61:in `block in run_initializers'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:228:in `block in tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:431:in `each_strongly_connected_component_from'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:349:in `block in each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `call'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:226:in `tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:205:in `tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:60:in `run_initializers'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/application.rb:391:in `initialize!'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/railtie.rb:207:in `public_send'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/railtie.rb:207:in `method_missing'
	from /opt/metasploit-framework/embedded/framework/config/environment.rb:4:in `<top (required)>'
	from /opt/metasploit-framework/embedded/framework/lib/msfenv.rb:17:in `require'
	from /opt/metasploit-framework/embedded/framework/lib/msfenv.rb:17:in `<top (required)>'
	from /opt/metasploit-framework/bin/../embedded/framework/msfconsole:18:in `require'
	from /opt/metasploit-framework/bin/../embedded/framework/msfconsole:18:in `<main>'
/opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:89:in `const_defined?': wrong constant name Github.com (NameError)
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:89:in `cdef?'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:385:in `autoload_subdir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:353:in `block in set_autoloads_in_dir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:26:in `block in ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `each_child'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:335:in `set_autoloads_in_dir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:76:in `block in on_namespace_loaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:75:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:75:in `on_namespace_loaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:60:in `block in on_dir_autoloaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:46:in `synchronize'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:46:in `on_dir_autoloaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:31:in `require'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:95:in `const_get'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:95:in `cget'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:244:in `block (2 levels) in eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:26:in `block in ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `each_child'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:232:in `block in eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:217:in `synchronize'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:217:in `eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:317:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:317:in `eager_load_all'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/application/finisher.rb:133:in `block in <module:Finisher>'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:32:in `instance_exec'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:32:in `run'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:61:in `block in run_initializers'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:228:in `block in tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:431:in `each_strongly_connected_component_from'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:349:in `block in each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `call'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:226:in `tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:205:in `tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:60:in `run_initializers'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/application.rb:391:in `initialize!'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/railtie.rb:207:in `public_send'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/railtie.rb:207:in `method_missing'
	from /opt/metasploit-framework/embedded/framework/config/environment.rb:4:in `<top (required)>'
	from /opt/metasploit-framework/embedded/framework/lib/msfenv.rb:17:in `require'
	from /opt/metasploit-framework/embedded/framework/lib/msfenv.rb:17:in `<top (required)>'
	from /opt/metasploit-framework/bin/../embedded/framework/msfconsole:18:in `require'
	from /opt/metasploit-framework/bin/../embedded/framework/msfconsole:18:in `<main>'
alex@abox:~$ sudo msfupdate 
Adding metasploit-framework to your repository list..OK
Updating package cache..OK
Checking for and installing update..
Reading package lists... Done
Building dependency tree       
Reading state information... Done
metasploit-framework is already the newest version (6.1.38+20220409102605~1rapid7-1).
0 upgraded, 0 newly installed, 0 to remove and 40 not upgraded.
alex@ilikejelly:~$ msfconsole 
/opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:360:in `rescue in block in set_autoloads_in_dir': wrong constant name Github.com inferred by MsfAutoload::TempInflector from directory (Zeitwerk::NameError)

  /opt/metasploit-framework/embedded/framework/lib/msf/core/modules/external/go/pkg/mod/cache/download/github.com

Possible ways to address this:

  * Tell Zeitwerk to ignore this particular directory.
  * Tell Zeitwerk to ignore one of its parent directories.
  * Rename the directory to comply with the naming conventions.
  * Modify the inflector to handle this case.
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:336:in `block in set_autoloads_in_dir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:26:in `block in ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `each_child'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:335:in `set_autoloads_in_dir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:76:in `block in on_namespace_loaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:75:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:75:in `on_namespace_loaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:60:in `block in on_dir_autoloaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:46:in `synchronize'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:46:in `on_dir_autoloaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:31:in `require'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:95:in `const_get'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:95:in `cget'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:244:in `block (2 levels) in eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:26:in `block in ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `each_child'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:232:in `block in eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:217:in `synchronize'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:217:in `eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:317:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:317:in `eager_load_all'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/application/finisher.rb:133:in `block in <module:Finisher>'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:32:in `instance_exec'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:32:in `run'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:61:in `block in run_initializers'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:228:in `block in tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:431:in `each_strongly_connected_component_from'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:349:in `block in each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `call'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:226:in `tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:205:in `tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:60:in `run_initializers'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/application.rb:391:in `initialize!'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/railtie.rb:207:in `public_send'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/railtie.rb:207:in `method_missing'
	from /opt/metasploit-framework/embedded/framework/config/environment.rb:4:in `<top (required)>'
	from /opt/metasploit-framework/embedded/framework/lib/msfenv.rb:17:in `require'
	from /opt/metasploit-framework/embedded/framework/lib/msfenv.rb:17:in `<top (required)>'
	from /opt/metasploit-framework/bin/../embedded/framework/msfconsole:18:in `require'
	from /opt/metasploit-framework/bin/../embedded/framework/msfconsole:18:in `<main>'
/opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:89:in `const_defined?': wrong constant name Github.com (NameError)
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:89:in `cdef?'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:385:in `autoload_subdir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:353:in `block in set_autoloads_in_dir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:26:in `block in ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `each_child'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:335:in `set_autoloads_in_dir'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:76:in `block in on_namespace_loaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:75:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:75:in `on_namespace_loaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:60:in `block in on_dir_autoloaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:46:in `synchronize'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/callbacks.rb:46:in `on_dir_autoloaded'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:31:in `require'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:95:in `const_get'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:95:in `cget'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:244:in `block (2 levels) in eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:26:in `block in ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `each_child'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader/helpers.rb:18:in `ls'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:232:in `block in eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:217:in `synchronize'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:217:in `eager_load'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:317:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/zeitwerk-2.5.4/lib/zeitwerk/loader.rb:317:in `eager_load_all'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/application/finisher.rb:133:in `block in <module:Finisher>'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:32:in `instance_exec'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:32:in `run'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:61:in `block in run_initializers'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:228:in `block in tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:431:in `each_strongly_connected_component_from'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:349:in `block in each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `call'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:347:in `each_strongly_connected_component'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:226:in `tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/3.0.0/tsort.rb:205:in `tsort_each'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/initializable.rb:60:in `run_initializers'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/application.rb:391:in `initialize!'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/railtie.rb:207:in `public_send'
	from /opt/metasploit-framework/embedded/lib/ruby/gems/3.0.0/gems/railties-6.1.5/lib/rails/railtie.rb:207:in `method_missing'
	from /opt/metasploit-framework/embedded/framework/config/environment.rb:4:in `<top (required)>'
	from /opt/metasploit-framework/embedded/framework/lib/msfenv.rb:17:in `require'
	from /opt/metasploit-framework/embedded/framework/lib/msfenv.rb:17:in `<top (required)>'
	from /opt/metasploit-framework/bin/../embedded/framework/msfconsole:18:in `require'
	from /opt/metasploit-framework/bin/../embedded/framework/msfconsole:18:in `<main>'

Metasploit version

metasploit-framework (6.1.38+20220409102605~1rapid7-1)

Additional Information

I cannot start msfconsole so this is the only ouput I can get. I was able to before just purge the packages and reinstall, but now that doesn't seem to work anymore.

My version of Ubuntu is: Ubuntu 20.04.3 LTS x86_64 and originally installed metasploit via the msfinstall script.

@ghost ghost added the bug label Apr 9, 2022
@ghost
Copy link
Author

ghost commented Apr 13, 2022

Looks like this might be an issue with gems 3.0.0 since kali uses 2.7.x and msf works fine on there.

@adfoster-r7
Copy link
Contributor

@JudgeMegapolis Hm, that's interesting. Could you run these lines for me please

ls -la /opt/metasploit-framework/embedded/framework/lib/msf/core/modules/external
  /opt/metasploit-framework/embedded/framework/lib/msf/core/modules/external/go
ls -la /opt/metasploit-framework/embedded/framework/lib/msf/core/modules/external/go/pkg/
go version

@ghost
Copy link
Author

ghost commented Apr 15, 2022

@adfoster-r7

total 48
drwxr-xr-x 6 alex root 4096 Apr  9 14:39 .
drwxr-xr-x 5 alex root 4096 Apr  9 14:39 ..
-rw-r--r-- 1 root root 7530 Apr  9 06:45 bridge.rb
-rw-r--r-- 1 root root 3258 Apr  9 06:45 cli.rb
drwxr-xr-x 4 alex root 4096 Apr  9 14:39 go
-rw-r--r-- 1 root root  854 Apr  9 06:45 message.rb
drwxr-xr-x 4 alex root 4096 Feb 15 09:29 python
drwxr-xr-x 2 root root 4096 Apr  9 14:39 ruby
-rw-r--r-- 1 root root 6954 Apr  9 06:45 shim.rb
drwxr-xr-x 2 root root 4096 Apr  9 14:39 templates

This doesn't look right. Are some of the files supposed to be owned by root?

bash: /opt/metasploit-framework/embedded/framework/lib/msf/core/modules/external/go: Is a directory

ls -la /opt/metasploit-framework/embedded/framework/lib/msf/core/modules/external/go

total 16
drwxr-xr-x 4 alex root 4096 Apr  9 14:39 .
drwxr-xr-x 6 alex root 4096 Apr  9 14:39 ..
drwxrwx--- 3 alex alex 4096 Apr  1 12:54 pkg
drwxr-xr-x 3 root root 4096 Apr  9 14:39 src
total 12
drwxrwx--- 3 alex alex 4096 Apr  1 12:54 .
drwxr-xr-x 4 alex root 4096 Apr  9 14:39 ..
drwxrwx--- 3 alex alex 4096 Apr  1 12:54 mod
go version go1.13.8 linux/amd64

I ran msf just fine with this version of go since this is the latest version for some reason in the repos and snap for some reason messes up the golang setup. Might need to install a more up to date version.

@adfoster-r7
Copy link
Contributor

Thanks for the update 👍

I haven't verified this yet, but I assume newer versions of Go are now installing the dependencies for Metasploit modules directly into the metasploit-framework directory itself, then Metasploit is trying to load them as Ruby files

You might be able to modify this list to ignore the Go folder:

def ignore_list
[
"#{__dir__}/msf/core/constants.rb",
"#{__dir__}/msf/core/cert_provider.rb",
"#{__dir__}/msf/core/rpc/json/",
"#{__dir__}/msf/core/modules/external/ruby/metasploit.rb",
"#{__dir__}/msf/core/rpc/v10/constants.rb",
"#{__dir__}/msf/core.rb",
"#{__dir__}/msf/base.rb",
"#{__dir__}/rex/post/",
"#{__dir__}/rex/post.rb",
"#{__dir__}/rex/proto/ssh/hrr_rb_ssh.rb",
"#{__dir__}/rex/proto/ssh/connection.rb"
]
end

Not tested:

def ignore_list
    [
+     "#{__dir__}/msf/core/modules/external/go/pkg",
      "#{__dir__}/msf/core/constants.rb",
      "#{__dir__}/msf/core/cert_provider.rb",
      "#{__dir__}/msf/core/rpc/json/",
      "#{__dir__}/msf/core/modules/external/ruby/metasploit.rb",
      "#{__dir__}/msf/core/rpc/v10/constants.rb",
      "#{__dir__}/msf/core.rb",
      "#{__dir__}/msf/base.rb",
      "#{__dir__}/rex/post/",
      "#{__dir__}/rex/post.rb",
      "#{__dir__}/rex/proto/ssh/hrr_rb_ssh.rb",
      "#{__dir__}/rex/proto/ssh/connection.rb",
      "#{__dir__}/rex/proto/ssh/connection.rb"
    ]
  end

@ghost
Copy link
Author

ghost commented Apr 15, 2022

@adfoster-r7 that did the trick. msfconsole no longer crashes and loads with both with sudo and as regular user.

@ghost ghost closed this as completed Apr 16, 2022
@adfoster-r7
Copy link
Contributor

I'll keep this open until we get a PR in to fix it 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug confirmed Issues confirmed by a committer easy
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant