#!/usr/bin/env ruby # # This user interface provides users with a web-based interface to the # framework that can be shared. # msfbase = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__ $:.unshift(File.join(File.dirname(msfbase), 'lib')) require 'rex' require 'msf/ui' # Declare the argument parser for msfweb arguments = Rex::Parser::Arguments.new( "-a" => [ true, "Bind to this IP address instead of loopback" ], "-p" => [ true, "Bind to this port instead of 55555" ], "-v" => [ true, "A number between 0 and 3 that controls log verbosity" ], "-d" => [ false, "Daemonize the web server" ], "-h" => [ false, "Help banner" ]) opts = {} background = false # Parse command line arguments. arguments.parse(ARGV) { |opt, idx, val| case opt when "-a" opts['ServerHost'] = val when "-p" opts['ServerPort'] = val when "-v" opts['LogLevel'] = val when "-d" background = true when "-h" print( "\nUsage: msfweb \n" + arguments.usage) exit end } $stdout.puts( "Connect to msfweb at http://" + ( opts['ServerHost'] ? opts['ServerHost'] : '127.0.0.1' ) + ':' + ( opts['ServerPort'] ? opts['ServerPort'] : '55555') + '/' ) exit if (Process.fork()) unless background == false begin # Create the driver instance and run it. Msf::Ui::Web::Driver.new(opts).run rescue Interrupt $stdout.puts("Shutting down msfweb...") exit(0) end