drop ruby 1.9 support, whitespaces
This commit is contained in:
@@ -2,8 +2,6 @@ language: ruby
|
|||||||
sudo: false
|
sudo: false
|
||||||
cache: bundler
|
cache: bundler
|
||||||
rvm:
|
rvm:
|
||||||
- 1.9.2
|
|
||||||
- 1.9.3
|
|
||||||
- 2.0.0
|
- 2.0.0
|
||||||
- 2.1.0
|
- 2.1.0
|
||||||
- 2.1.1
|
- 2.1.1
|
||||||
@@ -23,9 +21,6 @@ script: bundle exec rspec
|
|||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
- team@wpscan.org
|
- team@wpscan.org
|
||||||
matrix:
|
|
||||||
allow_failures:
|
|
||||||
- rvm: 1.9.2
|
|
||||||
# do not build gh-pages branch
|
# do not build gh-pages branch
|
||||||
branches:
|
branches:
|
||||||
except:
|
except:
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ WPScan comes pre-installed on the following Linux distributions:
|
|||||||
|
|
||||||
Prerequisites:
|
Prerequisites:
|
||||||
|
|
||||||
- Ruby >= 1.9.2 - Recommended: 2.3.0
|
- Ruby >= 2.0.0 - Recommended: 2.3.0
|
||||||
- Curl >= 7.21 - Recommended: latest - FYI the 7.29 has a segfault
|
- Curl >= 7.21 - Recommended: latest - FYI the 7.29 has a segfault
|
||||||
- RubyGems - Recommended: latest
|
- RubyGems - Recommended: latest
|
||||||
- Git
|
- Git
|
||||||
@@ -156,8 +156,8 @@ Apple Xcode, Command Line Tools and the libffi are needed (to be able to install
|
|||||||
curl -sSL https://get.rvm.io | bash -s stable
|
curl -sSL https://get.rvm.io | bash -s stable
|
||||||
source ~/.rvm/scripts/rvm
|
source ~/.rvm/scripts/rvm
|
||||||
echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc
|
echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc
|
||||||
rvm install 2.2.4
|
rvm install 2.3.0
|
||||||
rvm use 2.2.4 --default
|
rvm use 2.3.0 --default
|
||||||
echo "gem: --no-ri --no-rdoc" > ~/.gemrc
|
echo "gem: --no-ri --no-rdoc" > ~/.gemrc
|
||||||
gem install bundler
|
gem install bundler
|
||||||
git clone https://github.com/wpscanteam/wpscan.git
|
git clone https://github.com/wpscanteam/wpscan.git
|
||||||
@@ -192,7 +192,7 @@ Apple Xcode, Command Line Tools and the libffi are needed (to be able to install
|
|||||||
|
|
||||||
Then, open the directory of the readline gem (you have to locate it)
|
Then, open the directory of the readline gem (you have to locate it)
|
||||||
|
|
||||||
cd ~/.rvm/src/ruby-1.9.2-p180/ext/readline
|
cd ~/.rvm/src/ruby-XXXX/ext/readline
|
||||||
ruby extconf.rb
|
ruby extconf.rb
|
||||||
make
|
make
|
||||||
make install
|
make install
|
||||||
|
|||||||
@@ -23,9 +23,7 @@ class CacheFileStore
|
|||||||
@storage_path = File.expand_path(File.join(storage_path, storage_dir))
|
@storage_path = File.expand_path(File.join(storage_path, storage_dir))
|
||||||
@serializer = serializer
|
@serializer = serializer
|
||||||
|
|
||||||
# File.directory? for ruby <= 1.9 otherwise,
|
unless Dir.exist?(@storage_path)
|
||||||
# it makes more sense to do Dir.exist? :/
|
|
||||||
unless File.directory?(@storage_path)
|
|
||||||
FileUtils.mkdir_p(@storage_path)
|
FileUtils.mkdir_p(@storage_path)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -266,3 +266,7 @@ end
|
|||||||
def directory_listing_enabled?(url)
|
def directory_listing_enabled?(url)
|
||||||
Browser.get(url.to_s).body[%r{<title>Index of}] ? true : false
|
Browser.get(url.to_s).body[%r{<title>Index of}] ? true : false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def url_encode(str)
|
||||||
|
CGI.escape(str).gsub("+", "%20")
|
||||||
|
end
|
||||||
|
|||||||
@@ -1,35 +1,5 @@
|
|||||||
# encoding: UTF-8
|
# encoding: UTF-8
|
||||||
|
|
||||||
# Since ruby 1.9.2, URI::escape is obsolete
|
|
||||||
# See http://rosettacode.org/wiki/URL_encoding#Ruby and http://www.ruby-forum.com/topic/207489
|
|
||||||
if RUBY_VERSION >= '1.9.2'
|
|
||||||
module URI
|
|
||||||
extend self
|
|
||||||
|
|
||||||
def escape(str)
|
|
||||||
URI::Parser.new.escape(str)
|
|
||||||
end
|
|
||||||
alias :encode :escape
|
|
||||||
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if RUBY_VERSION < '1.9'
|
|
||||||
class Array
|
|
||||||
# Fix for grep with symbols in ruby <= 1.8.7
|
|
||||||
def _grep_(regexp)
|
|
||||||
matches = []
|
|
||||||
self.each do |value|
|
|
||||||
value = value.to_s
|
|
||||||
matches << value if value.match(regexp)
|
|
||||||
end
|
|
||||||
matches
|
|
||||||
end
|
|
||||||
|
|
||||||
alias_method :grep, :_grep_
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# This is used in WpItem::Existable
|
# This is used in WpItem::Existable
|
||||||
module Typhoeus
|
module Typhoeus
|
||||||
class Response
|
class Response
|
||||||
|
|||||||
@@ -100,9 +100,7 @@ class WpItem
|
|||||||
#
|
#
|
||||||
# @return [ void ]
|
# @return [ void ]
|
||||||
def path=(path)
|
def path=(path)
|
||||||
@path = URI.encode(
|
@path = path.gsub(/\$wp-plugins\$/i, wp_plugins_dir).gsub(/\$wp-content\$/i, wp_content_dir)
|
||||||
path.gsub(/\$wp-plugins\$/i, wp_plugins_dir).gsub(/\$wp-content\$/i, wp_content_dir)
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# @param [ WpItem ] other
|
# @param [ WpItem ] other
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ class WpPlugin < WpItem
|
|||||||
#
|
#
|
||||||
# @return [ void ]
|
# @return [ void ]
|
||||||
def forge_uri(target_base_uri)
|
def forge_uri(target_base_uri)
|
||||||
@uri = target_base_uri.merge(URI.encode(wp_plugins_dir + '/' + name + '/'))
|
@uri = target_base_uri.merge("#{wp_plugins_dir}/#{url_encode(name)}/")
|
||||||
end
|
end
|
||||||
|
|
||||||
def db_file
|
def db_file
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ class WpTheme < WpItem
|
|||||||
#
|
#
|
||||||
# @return [ void ]
|
# @return [ void ]
|
||||||
def forge_uri(target_base_uri)
|
def forge_uri(target_base_uri)
|
||||||
@uri = target_base_uri.merge(URI.encode(wp_content_dir + '/themes/' + name + '/'))
|
@uri = target_base_uri.merge("#{wp_content_dir}/themes/#{url_encode(name)}/")
|
||||||
end
|
end
|
||||||
|
|
||||||
# @return [ String ] The url to the theme stylesheet
|
# @return [ String ] The url to the theme stylesheet
|
||||||
|
|||||||
@@ -130,8 +130,6 @@ class WpVersion < WpItem
|
|||||||
def find_from_advanced_fingerprinting(target_uri, wp_content_dir, wp_plugins_dir, versions_xml)
|
def find_from_advanced_fingerprinting(target_uri, wp_content_dir, wp_plugins_dir, versions_xml)
|
||||||
xml = xml(versions_xml)
|
xml = xml(versions_xml)
|
||||||
|
|
||||||
# This wp_item will take care of encoding the path
|
|
||||||
# and replace variables like $wp-content$ & $wp-plugins$
|
|
||||||
wp_item = WpItem.new(target_uri,
|
wp_item = WpItem.new(target_uri,
|
||||||
wp_content_dir: wp_content_dir,
|
wp_content_dir: wp_content_dir,
|
||||||
wp_plugins_dir: wp_plugins_dir)
|
wp_plugins_dir: wp_plugins_dir)
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
require 'rubygems'
|
require 'rubygems'
|
||||||
|
|
||||||
version = RUBY_VERSION.dup
|
version = RUBY_VERSION.dup
|
||||||
if Gem::Version.create(version) < Gem::Version.create(1.9)
|
if Gem::Version.create(version) < Gem::Version.create(2.0)
|
||||||
puts "Ruby >= 1.9 required to run wpscan (You have #{version})"
|
puts "Ruby >= 2.0.0 required to run wpscan (You have #{version})"
|
||||||
exit(1)
|
exit(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class WpTarget < WebSite
|
|||||||
queue_count = 0
|
queue_count = 0
|
||||||
|
|
||||||
backups.each do |file|
|
backups.each do |file|
|
||||||
file_url = @uri.merge(URI.escape(file)).to_s
|
file_url = @uri.merge(url_encode(file)).to_s
|
||||||
request = browser.forge_request(file_url)
|
request = browser.forge_request(file_url)
|
||||||
|
|
||||||
request.on_complete do |response|
|
request.on_complete do |response|
|
||||||
|
|||||||
@@ -105,11 +105,6 @@ describe WpItem do
|
|||||||
@expected = 'plugins/readme.txt'
|
@expected = 'plugins/readme.txt'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'also encodes chars' do
|
|
||||||
@path = 'some dir with spaces'
|
|
||||||
@expected = 'some%20dir%20with%20spaces'
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#uri' do
|
describe '#uri' do
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ shared_examples 'WpTarget::WpConfigBackup' do
|
|||||||
# set all @config_backup_files to point to a 404
|
# set all @config_backup_files to point to a 404
|
||||||
before :each do
|
before :each do
|
||||||
config_backup_files.each do |backup_file|
|
config_backup_files.each do |backup_file|
|
||||||
file_url = wp_target.uri.merge(URI.escape(backup_file)).to_s
|
file_url = wp_target.uri.merge(url_encode(backup_file)).to_s
|
||||||
|
|
||||||
stub_request(:get, file_url).to_return(status: 404)
|
stub_request(:get, file_url).to_return(status: 404)
|
||||||
end
|
end
|
||||||
@@ -24,7 +24,7 @@ shared_examples 'WpTarget::WpConfigBackup' do
|
|||||||
expected = []
|
expected = []
|
||||||
|
|
||||||
config_backup_files.sample(1).each do |backup_file|
|
config_backup_files.sample(1).each do |backup_file|
|
||||||
file_url = wp_target.uri.merge(URI.escape(backup_file)).to_s
|
file_url = wp_target.uri.merge(url_encode(backup_file)).to_s
|
||||||
expected << file_url
|
expected << file_url
|
||||||
|
|
||||||
stub_request_to_fixture(url: file_url, fixture: fixtures_dir + '/wp-config.php')
|
stub_request_to_fixture(url: file_url, fixture: fixtures_dir + '/wp-config.php')
|
||||||
@@ -40,7 +40,7 @@ shared_examples 'WpTarget::WpConfigBackup' do
|
|||||||
expected = []
|
expected = []
|
||||||
|
|
||||||
config_backup_files.sample(2).each do |backup_file|
|
config_backup_files.sample(2).each do |backup_file|
|
||||||
file_url = wp_target.uri.merge(URI.escape(backup_file)).to_s
|
file_url = wp_target.uri.merge(url_encode(backup_file)).to_s
|
||||||
expected << file_url
|
expected << file_url
|
||||||
|
|
||||||
stub_request_to_fixture(url: file_url, fixture: fixtures_dir + '/wp-config.php')
|
stub_request_to_fixture(url: file_url, fixture: fixtures_dir + '/wp-config.php')
|
||||||
|
|||||||
Reference in New Issue
Block a user