From 1073da25c1e1d53ec392db8b080482e07a1508cb Mon Sep 17 00:00:00 2001
From: Christian Mehlmauer
-# File lib/wpscan/modules/brute_force.rb, line 109 +# File lib/wpscan/modules/brute_force.rb, line 111 def self.lines_in_file(file_path) lines = 0 File.open(file_path, 'r').each { |line| lines += 1 } @@ -284,9 +286,11 @@ on large wordlists, although bareable. # the request object request = Browser.instance.forge_request(login_url, - :method => :post, - :params => {:log => username, :pwd => password}, - :cache_timeout => 0 + { + :method => :post, + :params => {:log => username, :pwd => password}, + :cache_timeout => 0 + } ) # tell hydra what to do when the request completes diff --git a/doc/CREDITS.html b/doc/CREDITS.html index ad5054ad..ef7c285a 100644 --- a/doc/CREDITS.html +++ b/doc/CREDITS.html @@ -104,6 +104,8 @@
-# File lib/wpscan/modules/web_site.rb, line 52 +# File lib/wpscan/modules/web_site.rb, line 50 def is_online? Browser.instance.get(@uri.to_s).code != 0 end@@ -258,16 +260,14 @@ wordpress = false response = Browser.instance.get(login_url(), - :follow_location => true, - :max_redirects => 2 + { :follow_location => true, :max_redirects => 2 } ) if response.body =~ %{WordPress} wordpress = true else response = Browser.instance.get(xmlrpc_url(), - :follow_location => true, - :max_redirects => 2 + { :follow_location => true, :max_redirects => 2 } ) if response.body =~ %{XML-RPC server accepts POST requests only} @@ -307,7 +307,7 @@ redirection or nil
-# File lib/wpscan/modules/web_site.rb, line 58 +# File lib/wpscan/modules/web_site.rb, line 56 def redirection(url = nil) url ||= @uri.to_s response = Browser.instance.get(url) @@ -347,7 +347,7 @@ redirection or nil@@ -146,6 +148,8 @@-# File lib/wpscan/modules/web_site.rb, line 47 +# File lib/wpscan/modules/web_site.rb, line 45 def xmlrpc_url @uri.merge("xmlrpc.php").to_s enddiff --git a/doc/WpConfigBackup.html b/doc/WpConfigBackup.html index f3fc0a2c..80f0e063 100644 --- a/doc/WpConfigBackup.html +++ b/doc/WpConfigBackup.html @@ -140,6 +140,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin diff --git a/doc/WpDetector.html b/doc/WpDetector.html index f68da914..854015dd 100644 --- a/doc/WpDetector.html +++ b/doc/WpDetector.html @@ -148,6 +148,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin diff --git a/doc/WpEnumerator.html b/doc/WpEnumerator.html index 77f998be..745e783f 100644 --- a/doc/WpEnumerator.html +++ b/doc/WpEnumerator.html @@ -67,6 +67,8 @@::enumerate +::generate_items +
+# File lib/wpscan/wp_enumerator.rb, line 88 +def self.generate_items(options = {}) + only_vulnerable = options[:only_vulnerable_ones] + file = options[:file] + vulns_file = options[:vulns_file] + wp_content_dir = options[:wp_content_dir] + url = options[:url] + type = options[:type] + targets_url = [] + + if only_vulnerable == false + # Open and parse the 'most popular' plugin list... + File.open(file, 'r') do |f| + f.readlines.collect do |line| + targets_url << { + :url => url, + :path => line.strip, + :wp_content_dir => wp_content_dir, + :name => File.dirname(line.strip) + } + end + end + end + + # Timthumbs have no XML file + unless type =~ /timthumbs/ + xml = Nokogiri::XML(File.open(vulns_file)) do |config| + config.noblanks + end + + # We check if the plugin name from the plugin_vulns_file is already in targets, otherwise we add it + xml.xpath(options[:vulns_xpath_2]).each do |node| + name = node.attribute("name").text + targets_url << { + :url => url, + :path => name, + :wp_content_dir => wp_content_dir, + :name => name + } + end + end + + targets_url.flatten! + targets_url.uniq! + # randomize the plugins array to *maybe* help in some crappy IDS/IPS/WAF detection + targets_url.sort_by! { rand } +end+
# File lib/wpscan/wp_item.rb, line 25 def initialize(options = {}) - @wp_content_dir = options[:wp_content_dir] + @wp_content_dir = options[:wp_content_dir] || "wp-content" @url = options[:url] @path = options[:path] @name = options[:name] || extract_name_from_url @vulns_xml = options[:vulns_xml] - @vulns_xpath = options[:vulns_xpath] + @vulns_xpath = options[:vulns_xpath].sub(/\$name\$/, @name) raise("url not set") unless @url raise("path not set") unless @path @@ -384,28 +390,61 @@Public Instance Methods
-- +++ + +- ==(item) + <=>(other) click to toggle source-+ + + + +Object comparer
+Compare
+ + + +++ ++# File lib/wpscan/wp_item.rb, line 97 +def <=>(other) + other.name <=> self.name +end++ + + ++ ==(other) + click to toggle source ++ + ++ ++Compare
@@ -417,6 +456,39 @@# File lib/wpscan/wp_item.rb, line 87 -def ==(item) - item.name == @name +def ==(other) + other.name == self.name end+ + + ++ ++ ===(other) + click to toggle source ++ + ++ ++ + + + +Compare
+ + + +++ ++# File lib/wpscan/wp_item.rb, line 92 +def ===(other) + other.name == self.name +end+@@ -436,7 +508,7 @@@@ -270,7 +274,7 @@ href="http://www.exploit-db.com/ghdb/3714/">www.exploit-db.com/ghdb/3714/-# File lib/wpscan/wp_item.rb, line 97 +# File lib/wpscan/wp_item.rb, line 107 def changelog_url get_url_without_filename.merge("changelog.txt") end@@ -612,7 +684,7 @@diff --git a/doc/WpPlugin.html b/doc/WpPlugin.html index c3fdf29f..3018311f 100644 --- a/doc/WpPlugin.html +++ b/doc/WpPlugin.html @@ -150,6 +150,8 @@-# File lib/wpscan/wp_item.rb, line 111 +# File lib/wpscan/wp_item.rb, line 121 def has_changelog? unless @changelog status = Browser.instance.get(changelog_url).code @@ -649,7 +721,7 @@-# File lib/wpscan/wp_item.rb, line 102 +# File lib/wpscan/wp_item.rb, line 112 def has_readme? unless @readme status = Browser.instance.get(readme_url).code @@ -686,7 +758,7 @@@@ -148,6 +146,8 @@-# File lib/wpscan/wp_item.rb, line 92 +# File lib/wpscan/wp_item.rb, line 102 def readme_url get_url_without_filename.merge("readme.txt") enddiff --git a/doc/WpOptions.html b/doc/WpOptions.html index 14d3dd3c..9958d401 100644 --- a/doc/WpOptions.html +++ b/doc/WpOptions.html @@ -67,8 +67,6 @@::check_options -::get_empty_options -WpItem +WpLoginProtection +WpOptions WpPlugin @@ -249,7 +249,7 @@--# File lib/wpscan/wp_options.rb, line 50 +# File lib/wpscan/wp_options.rb, line 34 def self.check_options(options) raise("url must be set") unless options[:url] != nil and options[:url].to_s.length > 0 raise("only_vulnerable_ones must be set") unless options[:only_vulnerable_ones] != nil @@ -276,51 +276,6 @@- - - -- -- get_empty_options() - click to toggle source -- - -- - - - - -- - - - --- --# File lib/wpscan/wp_options.rb, line 34 -def self.get_empty_options - options = { - :url => "", - :only_vulnerable_ones => false, - :file => "", - :vulns_file => "", - :vulns_xpath => "", - :vulns_xpath_2 => "", - :wp_content_dir => "", - :show_progress_bar => true, - :error_404_hash => "", - :type => "" - } - options -end-WpItem +WpLoginProtection +WpOptions WpPlugin @@ -228,8 +230,10 @@# File lib/wpscan/wp_plugin.rb, line 20 def initialize(options = {}) - options[:vulns_xml] = options[:vulns_xml] || DATA_DIR + '/plugin_vulns.xml' - options[:vulns_xpath] = "//plugin[@name='#@name']/vulnerability" + options[:vulns_xml] = options[:vulns_xml] || DATA_DIR + '/plugin_vulns.xml' + options[:vulns_xpath] = "//plugin[@name='$name$']/vulnerability" + options[:vulns_xpath_2] = "//plugin" + options[:type] = "plugins" super(options) end-# File lib/wpscan/wp_plugin.rb, line 31 +# File lib/wpscan/wp_plugin.rb, line 33 def error_log? response_body = Browser.instance.get(error_log_url(), :headers => { "range" => "bytes=0-700"}).body response_body[%{PHP Fatal error}] ? true : false @@ -304,7 +308,7 @@ href="http://www.exploit-db.com/ghdb/3714/">www.exploit-db.com/ghdb/3714/-# File lib/wpscan/wp_plugin.rb, line 36 +# File lib/wpscan/wp_plugin.rb, line 38 def error_log_url get_url.merge("error_log").to_s enddiff --git a/doc/WpPlugins.html b/doc/WpPlugins.html index cc8d8fab..353975b3 100644 --- a/doc/WpPlugins.html +++ b/doc/WpPlugins.html @@ -140,6 +140,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin @@ -220,8 +222,8 @@# File lib/wpscan/modules/wp_plugins.rb, line 24 def plugins_from_aggressive_detection(options) - options[:file] = "#{DATA_DIR}/plugins.txt" - options[:vulns_file] = "#{DATA_DIR}/plugin_vulns.xml" + options[:file] = options[:file] || "#{DATA_DIR}/plugins.txt" + options[:vulns_file] = options[:vulns_file] || "#{DATA_DIR}/plugin_vulns.xml" options[:vulns_xpath] = "//plugin[@name='#{@name}']/vulnerability" options[:vulns_xpath_2] = "//plugin" options[:type] = "plugins" @@ -253,7 +255,7 @@plugins_from_passive_detection(wp_content_dir) + class="method-args">(options) click to toggle source@@ -275,16 +277,16 @@ plugins can be found in the source code :# File lib/wpscan/modules/wp_plugins.rb, line 49 -def plugins_from_passive_detection(wp_content_dir) +def plugins_from_passive_detection(options) plugins = [] - temp = WpDetector.passive_detection(url(), "plugins", wp_content_dir) + temp = WpDetector.passive_detection(options[:url], "plugins", options[:wp_content_dir]) temp.each do |item| plugins << WpPlugin.new( :url => item[:url], :name => item[:name], :path => item[:path], - :wp_content_dir => wp_content_dir + :wp_content_dir => options[:wp_content_dir] ) end plugins.sort_by { |p| p.name } diff --git a/doc/WpReadme.html b/doc/WpReadme.html index 4461d79c..795ac853 100644 --- a/doc/WpReadme.html +++ b/doc/WpReadme.html @@ -140,6 +140,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin diff --git a/doc/WpTarget.html b/doc/WpTarget.html index 4b98c22f..40bdee3e 100644 --- a/doc/WpTarget.html +++ b/doc/WpTarget.html @@ -77,6 +77,10 @@#login_url +#registration_enabled? + +#registration_url +#theme #url @@ -114,6 +118,10 @@ +WpLoginProtection + + +Malwares @@ -214,6 +222,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin @@ -327,7 +337,7 @@-# File lib/wpscan/wp_target.rb, line 35 +# File lib/wpscan/wp_target.rb, line 36 def initialize(target_url, options = {}) @uri = URI.parse(add_trailing_slash(add_http_protocol(target_url))) @verbose = options[:verbose] @@ -365,7 +375,7 @@-# File lib/wpscan/wp_target.rb, line 75 +# File lib/wpscan/wp_target.rb, line 76 def self.valid_response_codes [200, 403, 301, 302, 500] end@@ -404,7 +414,7 @@-# File lib/wpscan/wp_target.rb, line 115 +# File lib/wpscan/wp_target.rb, line 116 def debug_log_url @uri.merge("#{wp_content_dir()}/debug.log").to_s end@@ -437,7 +447,7 @@-# File lib/wpscan/wp_target.rb, line 62 +# File lib/wpscan/wp_target.rb, line 63 def error_404_hash unless @error_404_hash non_existant_page = Digest::MD5.hexdigest(rand(9999999999).to_s) + ".html" @@ -478,7 +488,7 @@-# File lib/wpscan/wp_target.rb, line 109 +# File lib/wpscan/wp_target.rb, line 110 def has_debug_log? # We only get the first 700 bytes of the file to avoid loading huge file (like 2Go) response_body = Browser.instance.get(debug_log_url(), :headers => { "range" => "bytes=0-700"}).body @@ -513,7 +523,7 @@+-# File lib/wpscan/wp_target.rb, line 49 +# File lib/wpscan/wp_target.rb, line 50 def login_url url = @uri.merge("wp-login.php").to_s @@ -535,6 +545,72 @@+ + + ++ + ++ registration_enabled?() + click to toggle source ++ + ++ ++ + + + +Should check wp-login.php if registration is enabled or not
+ + + +++ ++# File lib/wpscan/wp_target.rb, line 121 +def registration_enabled? + # TODO +end++ + + ++ ++ registration_url() + click to toggle source ++ + ++ + + + + ++ + + + +++ ++# File lib/wpscan/wp_target.rb, line 125 +def registration_url + # TODO +end+@@ -554,7 +630,7 @@-# File lib/wpscan/wp_target.rb, line 80 +# File lib/wpscan/wp_target.rb, line 81 def theme WpTheme.find(@uri) end@@ -587,7 +663,7 @@-# File lib/wpscan/wp_target.rb, line 45 +# File lib/wpscan/wp_target.rb, line 46 def url @uri.to_s end@@ -620,7 +696,7 @@-# File lib/wpscan/wp_target.rb, line 85 +# File lib/wpscan/wp_target.rb, line 86 def version WpVersion.find(@uri, wp_content_dir) end@@ -653,7 +729,7 @@-# File lib/wpscan/wp_target.rb, line 89 +# File lib/wpscan/wp_target.rb, line 90 def wp_content_dir unless @wp_content_dir index_body = Browser.instance.get(@uri.to_s).body @@ -695,7 +771,7 @@-# File lib/wpscan/wp_target.rb, line 102 +# File lib/wpscan/wp_target.rb, line 103 def wp_plugins_dir unless @wp_plugins_dir @wp_plugins_dir = wp_content_dir() + "/plugins" diff --git a/doc/WpTheme.html b/doc/WpTheme.html index 767d2651..ec14de03 100644 --- a/doc/WpTheme.html +++ b/doc/WpTheme.html @@ -154,6 +154,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin @@ -323,7 +325,7 @@ # File lib/wpscan/wp_theme.rb, line 25 def initialize(options = {}) options[:vulns_xml] = options[:vulns_xml] || DATA_DIR + '/wp_theme_vulns.xml' - options[:vulns_xpath] = "//theme[@name='#{@name}']/vulnerability" + options[:vulns_xpath] = "//theme[@name='$name$']/vulnerability" @version = options[:version] @style_url = options[:style_url] super(options) @@ -365,7 +367,7 @@# File lib/wpscan/wp_theme.rb, line 58 def self.find_from_css_link(target_uri) - response = Browser.instance.get(target_uri.to_s, :follow_location => true, :max_redirects => 2) + response = Browser.instance.get(target_uri.to_s, { :follow_location => true, :max_redirects => 2 }) if matches = %{https?://[^"']+/themes/([^"']+)/style.css}.match(response.body) style_url = matches[0] diff --git a/doc/WpTimthumbs.html b/doc/WpTimthumbs.html index 758869bf..0df2bcfd 100644 --- a/doc/WpTimthumbs.html +++ b/doc/WpTimthumbs.html @@ -142,6 +142,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin @@ -256,7 +258,7 @@ if @wp_timthumbs.nil? options[:type] = "timthumbs" options[:only_vulnerable_ones] = false - options[:file] = DATA_DIR + "/timthumbs.txt" + options[:file] = options[:file] || DATA_DIR + "/timthumbs.txt" options[:vulns_file] = "xxx" options[:vulns_xpath] = "xxx" options[:vulns_xpath_2] = "xxx" @@ -311,10 +313,10 @@ targets = [] theme_name = URI.escape(theme_name) - [ - 'timthumb.php', 'lib/timthumb.php', 'inc/timthumb.php', 'includes/timthumb.php', - 'scripts/timthumb.php', 'tools/timthumb.php', 'functions/timthumb.php' - ].each do |file| + %{ + timthumb.php lib/timthumb.php inc/timthumb.php includes/timthumb.php + scripts/timthumb.php tools/timthumb.php functions/timthumb.php + }.each do |file| targets << { :url => options[:url], :path => "themes/#{theme_name}/#{file}", diff --git a/doc/WpUsernames.html b/doc/WpUsernames.html index bbafcd16..68421de0 100644 --- a/doc/WpUsernames.html +++ b/doc/WpUsernames.html @@ -59,6 +59,12 @@#author_url +#extract_real_name_from_body + +#get_real_name_from_response + +#get_real_name_from_url +#usernames @@ -140,6 +146,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin @@ -216,7 +224,7 @@+-# File lib/wpscan/modules/wp_usernames.rb, line 49 +# File lib/wpscan/modules/wp_usernames.rb, line 82 def author_url(author_id) @uri.merge("?author=#{author_id}").to_s end@@ -230,6 +238,114 @@+ + + ++ + ++ extract_real_name_from_body(body) + click to toggle source ++ + ++ + + + + ++ + + + +++ ++# File lib/wpscan/modules/wp_usernames.rb, line 78 +def extract_real_name_from_body(body) + body[%{<title>([^<]*)</title>}, 1] +end++ + + ++ + ++ get_real_name_from_response(resp) + click to toggle source ++ + ++ + + + + ++ + + + +++ ++# File lib/wpscan/modules/wp_usernames.rb, line 70 +def get_real_name_from_response(resp) + real_name = nil + if resp.code == 200 + real_name = extract_real_name_from_body(resp.body) + end + real_name +end++ + + ++ ++ get_real_name_from_url(url) + click to toggle source ++ + ++ + + + + ++ + + + +++ ++# File lib/wpscan/modules/wp_usernames.rb, line 61 +def get_real_name_from_url(url) + resp = Browser.instance.get(url, { :follow_location => true, :max_redirects => 2 }) + real_name = nil + if resp.code == 200 + real_name = extract_real_name_from_body(resp.body) + end + real_name +end+@@ -263,12 +379,24 @@ href="http://seclists.org/fulldisclosure/2011/May/493">seclists.org/fulldisclosu usernames = [] range.each do |author_id| - response = browser.get(author_url(author_id)) + url = author_url(author_id) + response = browser.get(url) + username = nil + real_name = nil if response.code == 301 # username in location? - usernames << response.headers_hash['location'][%{/author/([^/]+)/}, 1] + username = response.headers_hash['location'][%{/author/([^/]+)/}, 1] + # Get the real name from the redirect site + real_name = get_real_name_from_url(url) elsif response.code == 200 # username in body? - usernames << response.body[%{posts by (.*) feed}, 1] + username = response.body[%{posts by (.*) feed}, 1] + real_name = get_real_name_from_response(response) + end + + unless username == nil and real_name == nil + usernames << { :id => author_id, + :name => username ? username : "empty", + :real_name => real_name ? real_name : "empty"} end end diff --git a/doc/WpVersion.html b/doc/WpVersion.html index de990390..ebc327ad 100644 --- a/doc/WpVersion.html +++ b/doc/WpVersion.html @@ -160,6 +160,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin @@ -444,7 +446,7 @@ upgrade. # File lib/wpscan/wp_version.rb, line 61 def self.find_from_meta_generator(options) target_uri = options[:url] - response = Browser.instance.get(target_uri.to_s, :follow_location => true, :max_redirects => 2) + response = Browser.instance.get(target_uri.to_s, { :follow_location => true, :max_redirects => 2 }) response.body[%{name="generator" content="wordpress ([^"]+)"}, 1] end @@ -514,7 +516,7 @@ upgrade. # File lib/wpscan/wp_version.rb, line 68 def self.find_from_rss_generator(options) target_uri = options[:url] - response = Browser.instance.get(target_uri.merge("feed/").to_s, :follow_location => true, :max_redirects => 2) + response = Browser.instance.get(target_uri.merge("feed/").to_s, { :follow_location => true, :max_redirects => 2 }) response.body[%{<generator>http://wordpress.org/\?v=([^<]+)</generator>}, 1] end diff --git a/doc/WpVulnerability.html b/doc/WpVulnerability.html index 1ed30cbe..4ac3b571 100644 --- a/doc/WpVulnerability.html +++ b/doc/WpVulnerability.html @@ -146,6 +146,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin diff --git a/doc/WpscanOptions.html b/doc/WpscanOptions.html index 1cd81b83..b82da23f 100644 --- a/doc/WpscanOptions.html +++ b/doc/WpscanOptions.html @@ -180,6 +180,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin @@ -795,7 +797,7 @@ value ) elsif cli_option === "--enumerate" # Special cases # Default value if no argument is given - cli_value = "Ttup" if cli_value.length == 0 + cli_value = "T!tup!" if cli_value.length == 0 enumerate_options_from_string(cli_value) else diff --git a/doc/created.rid b/doc/created.rid index 7f836cb6..d6dc4763 100644 --- a/doc/created.rid +++ b/doc/created.rid @@ -1,40 +1,41 @@ -Mon, 17 Sep 2012 23:33:41 +0200 +Wed, 19 Sep 2012 22:43:09 +0200 ./CREDITS Mon, 17 Sep 2012 20:18:24 +0200 ./lib/browser.rb Sun, 16 Sep 2012 15:18:58 +0200 ./lib/cache_file_store.rb Sat, 15 Sep 2012 08:04:03 +0200 -./lib/common_helper.rb Sat, 15 Sep 2012 08:04:08 +0200 +./lib/common_helper.rb Tue, 18 Sep 2012 20:09:48 +0200 ./lib/environment.rb Sat, 15 Sep 2012 08:04:16 +0200 ./lib/updater/git_updater.rb Sat, 15 Sep 2012 08:00:23 +0200 ./lib/updater/svn_updater.rb Sat, 15 Sep 2012 08:00:34 +0200 ./lib/updater/updater.rb Sat, 15 Sep 2012 08:00:40 +0200 ./lib/updater/updater_factory.rb Sat, 15 Sep 2012 08:00:46 +0200 ./lib/wpscan/exploit.rb Sat, 15 Sep 2012 08:02:16 +0200 -./lib/wpscan/modules/brute_force.rb Sat, 15 Sep 2012 08:00:54 +0200 +./lib/wpscan/modules/brute_force.rb Wed, 19 Sep 2012 21:41:41 +0200 ./lib/wpscan/modules/malwares.rb Sat, 15 Sep 2012 08:01:01 +0200 -./lib/wpscan/modules/web_site.rb Sat, 15 Sep 2012 08:01:06 +0200 +./lib/wpscan/modules/web_site.rb Wed, 19 Sep 2012 21:33:46 +0200 ./lib/wpscan/modules/wp_config_backup.rb Sat, 15 Sep 2012 08:01:11 +0200 ./lib/wpscan/modules/wp_full_path_disclosure.rb Sat, 15 Sep 2012 08:01:17 +0200 -./lib/wpscan/modules/wp_plugins.rb Sun, 16 Sep 2012 12:02:47 +0200 +./lib/wpscan/modules/wp_login_protection.rb Tue, 18 Sep 2012 17:51:20 +0200 +./lib/wpscan/modules/wp_plugins.rb Tue, 18 Sep 2012 22:27:43 +0200 ./lib/wpscan/modules/wp_readme.rb Sat, 15 Sep 2012 08:01:52 +0200 -./lib/wpscan/modules/wp_themes.rb Sun, 16 Sep 2012 12:03:41 +0200 -./lib/wpscan/modules/wp_timthumbs.rb Sun, 16 Sep 2012 23:27:21 +0200 -./lib/wpscan/modules/wp_usernames.rb Sat, 15 Sep 2012 08:02:04 +0200 +./lib/wpscan/modules/wp_themes.rb Tue, 18 Sep 2012 22:28:05 +0200 +./lib/wpscan/modules/wp_timthumbs.rb Wed, 19 Sep 2012 15:03:22 +0200 +./lib/wpscan/modules/wp_usernames.rb Wed, 19 Sep 2012 22:09:14 +0200 ./lib/wpscan/msfrpc_client.rb Sat, 15 Sep 2012 08:02:28 +0200 -./lib/wpscan/vulnerable.rb Sat, 15 Sep 2012 08:02:37 +0200 -./lib/wpscan/wp_detector.rb Mon, 17 Sep 2012 17:40:36 +0200 -./lib/wpscan/wp_enumerator.rb Mon, 17 Sep 2012 17:54:28 +0200 -./lib/wpscan/wp_item.rb Mon, 17 Sep 2012 22:04:16 +0200 -./lib/wpscan/wp_options.rb Sun, 16 Sep 2012 23:02:21 +0200 -./lib/wpscan/wp_plugin.rb Mon, 17 Sep 2012 22:03:47 +0200 -./lib/wpscan/wp_target.rb Mon, 17 Sep 2012 22:51:21 +0200 -./lib/wpscan/wp_theme.rb Mon, 17 Sep 2012 22:23:12 +0200 -./lib/wpscan/wp_version.rb Sun, 16 Sep 2012 23:48:18 +0200 +./lib/wpscan/vulnerable.rb Wed, 19 Sep 2012 22:21:47 +0200 +./lib/wpscan/wp_detector.rb Wed, 19 Sep 2012 22:29:50 +0200 +./lib/wpscan/wp_enumerator.rb Wed, 19 Sep 2012 22:30:45 +0200 +./lib/wpscan/wp_item.rb Wed, 19 Sep 2012 22:21:19 +0200 +./lib/wpscan/wp_options.rb Tue, 18 Sep 2012 22:28:27 +0200 +./lib/wpscan/wp_plugin.rb Wed, 19 Sep 2012 22:20:29 +0200 +./lib/wpscan/wp_target.rb Wed, 19 Sep 2012 17:40:16 +0200 +./lib/wpscan/wp_theme.rb Wed, 19 Sep 2012 22:20:40 +0200 +./lib/wpscan/wp_version.rb Wed, 19 Sep 2012 21:33:07 +0200 ./lib/wpscan/wp_vulnerability.rb Sat, 15 Sep 2012 08:03:09 +0200 ./lib/wpscan/wpscan_helper.rb Sat, 15 Sep 2012 21:19:30 +0200 -./lib/wpscan/wpscan_options.rb Mon, 17 Sep 2012 22:44:37 +0200 +./lib/wpscan/wpscan_options.rb Tue, 18 Sep 2012 17:29:40 +0200 ./lib/wpstools/generate_list.rb Sat, 15 Sep 2012 08:03:43 +0200 ./lib/wpstools/parse_svn.rb Sat, 15 Sep 2012 23:36:25 +0200 ./lib/wpstools/wpstools_helper.rb Sat, 15 Sep 2012 08:03:49 +0200 ./README Thu, 13 Sep 2012 22:54:08 +0200 -./wpscan.rb Mon, 17 Sep 2012 17:42:32 +0200 +./wpscan.rb Wed, 19 Sep 2012 22:06:17 +0200 ./wpstools.rb Sat, 15 Sep 2012 08:06:35 +0200 diff --git a/doc/index.html b/doc/index.html index c384ff0a..b06908a3 100644 --- a/doc/index.html +++ b/doc/index.html @@ -82,6 +82,8 @@WpItem +WpLoginProtection +WpOptions WpPlugin @@ -141,7 +143,7 @@::find_from_wooframework — WpTheme -::get_empty_options — WpOptions +::generate_items — WpEnumerator ::get_opt_long — WpscanOptions @@ -161,26 +163,26 @@::new — CacheFileStore -::new — WpscanOptions +::new — WpItem ::new — WpVersion ::new — WpVulnerability -::new — RpcClient +::new — WpscanOptions -::new — WpItem +::new — RpcClient ::new — Updater ::new — Svn_Parser -::new — WpPlugin -::new — WpTheme ::new — WpTarget +::new — WpPlugin +::new — Generate_List ::new — Exploit @@ -195,8 +197,12 @@::version_pattern — WpVersion +#<=> — WpItem +#== — WpItem +#=== — WpItem +#=== — WpTheme #_grep_ — Array @@ -211,6 +217,10 @@#banner — Object +#better_wp_security_url — WpLoginProtection + +#bluetrait_event_viewer_url — WpLoginProtection +#brute_force — BruteForce #changelog_url — WpItem @@ -241,14 +251,16 @@#error_log_url — WpPlugin -#exploit — Exploit -#exploit — RpcClient +#exploit — Exploit +#exploit_info — Exploit #extract_name_from_url — WpItem +#extract_real_name_from_body — WpUsernames +#forge_request — Browser #full_path_disclosure_url — WpFullPathDisclosure @@ -269,25 +281,45 @@#get_popular_items — Generate_List +#get_real_name_from_response — WpUsernames + +#get_real_name_from_url — WpUsernames +#get_url — WpItem #get_url_without_filename — WpItem #grep — Array +#has_better_wp_security_protection? — WpLoginProtection + +#has_bluetrait_event_viewer_protection? — WpLoginProtection +#has_changelog? — WpItem #has_debug_log? — WpTarget #has_full_path_disclosure? — WpFullPathDisclosure +#has_limit_login_attempts_protection? — WpLoginProtection + +#has_login_lock_protection? — WpLoginProtection + +#has_login_lockdown_protection? — WpLoginProtection + +#has_login_protection? — WpLoginProtection + +#has_login_security_solution_protection? — WpLoginProtection +#has_malwares? — Malwares #has_options? — WpscanOptions +#has_readme? — WpItem +#has_readme? — WpReadme -#has_readme? — WpItem +#has_simple_login_lockdown_protection? — WpLoginProtection #has_timthumbs? — WpTimthumbs @@ -295,10 +327,10 @@#is_installed? — SvnUpdater -#is_installed? — Updater -#is_installed? — GitUpdater +#is_installed? — Updater +#is_online? — WebSite #is_wordpress? — WebSite @@ -307,12 +339,14 @@#jobs — RpcClient -#kill_session — RpcClient -#kill_session — Exploit +#kill_session — RpcClient +#last_session_id — Exploit +#limit_login_attempts_url — WpLoginProtection +#load_config — Browser #local_revision_number — GitUpdater @@ -323,6 +357,10 @@#login — RpcClient +#login_protection_plugin — WpLoginProtection + +#login_security_solution_url — WpLoginProtection +#login_url — WpTarget #malwares — Malwares @@ -331,14 +369,14 @@#merge_request_params — Browser -#meterpreter_read — RpcClient -#meterpreter_read — Exploit -#meterpreter_write — RpcClient +#meterpreter_read — RpcClient #meterpreter_write — Exploit +#meterpreter_write — RpcClient +#parse — Svn_Parser #plugins_from_aggressive_detection — WpPlugins @@ -353,16 +391,20 @@#read_entry — CacheFileStore -#read_shell — RpcClient -#read_shell — Exploit -#readme_url — WpItem +#read_shell — RpcClient #readme_url — WpReadme +#readme_url — WpItem +#redirection — WebSite +#registration_enabled? — WpTarget + +#registration_url — WpTarget +#repo_directory_arguments — GitUpdater #require_files_from_directory — Object @@ -371,12 +413,14 @@#session_count — Exploit -#sessions — RpcClient -#sessions — Exploit +#sessions — RpcClient +#set_option_from_cli — WpscanOptions +#simple_login_lockdown_url — WpLoginProtection +#start — Exploit #targets_url_from_theme — WpTimthumbs diff --git a/doc/lib/common_helper_rb.html b/doc/lib/common_helper_rb.html index c140e19e..4a301e36 100644 --- a/doc/lib/common_helper_rb.html +++ b/doc/lib/common_helper_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-15 08:04:08 +0200
+- 2012-09-18 20:09:48 +0200
- Requires
diff --git a/doc/lib/wpscan/modules/brute_force_rb.html b/doc/lib/wpscan/modules/brute_force_rb.html index b5a5fd56..dc0472db 100644 --- a/doc/lib/wpscan/modules/brute_force_rb.html +++ b/doc/lib/wpscan/modules/brute_force_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-15 08:00:54 +0200
+- 2012-09-19 21:41:41 +0200
- Requires
diff --git a/doc/lib/wpscan/modules/web_site_rb.html b/doc/lib/wpscan/modules/web_site_rb.html index 4e21ca05..de62b355 100644 --- a/doc/lib/wpscan/modules/web_site_rb.html +++ b/doc/lib/wpscan/modules/web_site_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-15 08:01:06 +0200
+- 2012-09-19 21:33:46 +0200
- Requires
diff --git a/doc/lib/wpscan/modules/wp_plugins_rb.html b/doc/lib/wpscan/modules/wp_plugins_rb.html index 60035bc5..82543a7e 100644 --- a/doc/lib/wpscan/modules/wp_plugins_rb.html +++ b/doc/lib/wpscan/modules/wp_plugins_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-16 12:02:47 +0200
+- 2012-09-18 22:27:43 +0200
- Requires
diff --git a/doc/lib/wpscan/modules/wp_timthumbs_rb.html b/doc/lib/wpscan/modules/wp_timthumbs_rb.html index 4d0cfb92..fbcf0959 100644 --- a/doc/lib/wpscan/modules/wp_timthumbs_rb.html +++ b/doc/lib/wpscan/modules/wp_timthumbs_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-16 23:27:21 +0200
+- 2012-09-19 15:03:22 +0200
- Requires
diff --git a/doc/lib/wpscan/modules/wp_usernames_rb.html b/doc/lib/wpscan/modules/wp_usernames_rb.html index 6f6320fc..3e5d3cd9 100644 --- a/doc/lib/wpscan/modules/wp_usernames_rb.html +++ b/doc/lib/wpscan/modules/wp_usernames_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-15 08:02:04 +0200
+- 2012-09-19 22:09:14 +0200
- Requires
diff --git a/doc/lib/wpscan/vulnerable_rb.html b/doc/lib/wpscan/vulnerable_rb.html index 0d33e1a7..2463a78a 100644 --- a/doc/lib/wpscan/vulnerable_rb.html +++ b/doc/lib/wpscan/vulnerable_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-15 08:02:37 +0200
+- 2012-09-19 22:21:47 +0200
- Requires
diff --git a/doc/lib/wpscan/wp_detector_rb.html b/doc/lib/wpscan/wp_detector_rb.html index 7d1b8c5b..cdf9b6eb 100644 --- a/doc/lib/wpscan/wp_detector_rb.html +++ b/doc/lib/wpscan/wp_detector_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-17 17:40:36 +0200
+- 2012-09-19 22:29:50 +0200
- Requires
diff --git a/doc/lib/wpscan/wp_enumerator_rb.html b/doc/lib/wpscan/wp_enumerator_rb.html index aecefb03..dc92d563 100644 --- a/doc/lib/wpscan/wp_enumerator_rb.html +++ b/doc/lib/wpscan/wp_enumerator_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-17 17:54:28 +0200
+- 2012-09-19 22:30:45 +0200
- Requires
diff --git a/doc/lib/wpscan/wp_options_rb.html b/doc/lib/wpscan/wp_options_rb.html index a3c06ace..a66b4c64 100644 --- a/doc/lib/wpscan/wp_options_rb.html +++ b/doc/lib/wpscan/wp_options_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-16 23:02:21 +0200
+- 2012-09-18 22:28:27 +0200
- Requires
diff --git a/doc/lib/wpscan/wp_plugin_rb.html b/doc/lib/wpscan/wp_plugin_rb.html index 36da7dec..e2982d89 100644 --- a/doc/lib/wpscan/wp_plugin_rb.html +++ b/doc/lib/wpscan/wp_plugin_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-17 22:03:47 +0200
+- 2012-09-19 22:20:29 +0200
- Requires
diff --git a/doc/lib/wpscan/wp_target_rb.html b/doc/lib/wpscan/wp_target_rb.html index b1980082..ceb525f7 100644 --- a/doc/lib/wpscan/wp_target_rb.html +++ b/doc/lib/wpscan/wp_target_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-17 22:51:21 +0200
+- 2012-09-19 17:40:16 +0200
- Requires
diff --git a/doc/lib/wpscan/wp_theme_rb.html b/doc/lib/wpscan/wp_theme_rb.html index 41e768ab..0c445f45 100644 --- a/doc/lib/wpscan/wp_theme_rb.html +++ b/doc/lib/wpscan/wp_theme_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-17 22:23:12 +0200
+- 2012-09-19 22:20:40 +0200
- Requires
diff --git a/doc/lib/wpscan/wp_version_rb.html b/doc/lib/wpscan/wp_version_rb.html index ba7efd34..ab7c8863 100644 --- a/doc/lib/wpscan/wp_version_rb.html +++ b/doc/lib/wpscan/wp_version_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-16 23:48:18 +0200
+- 2012-09-19 21:33:07 +0200
- Requires
diff --git a/doc/lib/wpscan/wpscan_options_rb.html b/doc/lib/wpscan/wpscan_options_rb.html index 48ad414b..fe9b4819 100644 --- a/doc/lib/wpscan/wpscan_options_rb.html +++ b/doc/lib/wpscan/wpscan_options_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-17 22:44:37 +0200
+- 2012-09-18 17:29:40 +0200
- Requires
diff --git a/doc/wpscan_rb.html b/doc/wpscan_rb.html index 8ab453a9..bd4bb22f 100644 --- a/doc/wpscan_rb.html +++ b/doc/wpscan_rb.html @@ -24,7 +24,7 @@
- Last Modified
-- 2012-09-17 17:42:32 +0200
+- 2012-09-19 22:06:17 +0200
- Requires