diff --git a/lib/wpscan/modules/wp_item.rb b/lib/wpscan/modules/wp_item.rb index 7310404a..777a78c0 100644 --- a/lib/wpscan/modules/wp_item.rb +++ b/lib/wpscan/modules/wp_item.rb @@ -25,8 +25,13 @@ module WpItem end def get_url_without_filename - uri = get_url - URI.parse("#{uri.scheme}://#{uri.host}#{File.dirname(uri.path)}/") + matches = @path.match(%r{^(.*/).*$}) + if matches == nil or matches.length < 2 + dirname = @path + else + dirname = matches[1] + end + URI.parse("#{@url.to_s}#@wp_content_dir/#{dirname}") end def version @@ -68,4 +73,28 @@ module WpItem URI.parse(valid_location_url) end + def readme_url + get_url_without_filename.merge("readme.txt") + end + + def changelog_url + get_url_without_filename.merge("changelog.txt") + end + + def has_readme? + unless @readme + status = Browser.instance.get(readme_url).code + @readme = status == 200 ? true : false + end + @readme + end + + def has_changelog? + unless @changelog + status = Browser.instance.get(changelog_url).code + @changelog = status == 200 ? true : false + end + @changelog + end + end diff --git a/lib/wpscan/wp_detector.rb b/lib/wpscan/wp_detector.rb index 57066780..27603a94 100644 --- a/lib/wpscan/wp_detector.rb +++ b/lib/wpscan/wp_detector.rb @@ -63,7 +63,7 @@ class WpDetector items << { :url => url, :name => item, - :path => "#{type}/#{item}", + :path => "#{type}/#{item}/", :wp_content_dir => wp_content_dir } end diff --git a/wpscan.rb b/wpscan.rb index 559ec3dc..3a3070e4 100755 --- a/wpscan.rb +++ b/wpscan.rb @@ -197,6 +197,8 @@ begin puts " | Name: #{plugin}" #this will also output the version number if detected puts " | Location: #{plugin.get_url_without_filename}" puts " | Directory listing enabled? #{plugin.directory_listing? ? "Yes." : "No."}" + puts " | Readme: #{plugin.readme_url}" if plugin.has_readme? + puts " | Changelog: #{plugin.changelog_url}" if plugin.has_changelog? plugin.vulnerabilities.each do |vulnerability| #vulnerability['vulnerability'][0]['uri'] == nil ? "" : uri = vulnerability['vulnerability'][0]['uri'] # uri @@ -249,6 +251,8 @@ begin puts " | Name: #{theme}" #this will also output the version number if detected puts " | Location: #{theme.get_url_without_filename}" puts " | Directory listing enabled? #{theme.directory_listing? ? "Yes." : "No."}" + puts " | Readme: #{theme.readme_url}" if theme.has_readme? + puts " | Changelog: #{theme.changelog_url}" if theme.has_changelog? theme.vulnerabilities.each do |vulnerability| puts " |"