HELLO v3!!!
This commit is contained in:
62
spec/lib/finders/dynamic_finder/version/body_pattern_spec.rb
Normal file
62
spec/lib/finders/dynamic_finder/version/body_pattern_spec.rb
Normal file
@@ -0,0 +1,62 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe WPScan::Finders::DynamicFinder::Version::BodyPattern do
|
||||
module WPScan
|
||||
module Finders
|
||||
module Version
|
||||
# Needed to be able to test the below
|
||||
module Rspec
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
let(:finder_module) { WPScan::Finders::Version::Rspec }
|
||||
let(:finder_class) { WPScan::Finders::Version::Rspec::BodyPattern }
|
||||
let(:finder_config) { { 'pattern' => /aaa/i } }
|
||||
let(:default) { { 'confidence' => 60 } }
|
||||
|
||||
before { described_class.create_child_class(finder_module, :BodyPattern, finder_config) }
|
||||
after { finder_module.send(:remove_const, :BodyPattern) }
|
||||
|
||||
describe '.create_child_class' do
|
||||
context 'when no PATH and CONFIDENCE' do
|
||||
it 'contains the expected constants to their default values' do
|
||||
# Doesn't work, dunno why
|
||||
# expect(finder_module.const_get(:BodyPattern)).to be_a described_class
|
||||
# expect(finder_class.is_a?(described_class)).to eql true
|
||||
# expect(finder_class).to be_a described_class
|
||||
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when CONFIDENCE' do
|
||||
let(:finder_config) { super().merge('confidence' => 50) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::CONFIDENCE).to eql finder_config['confidence']
|
||||
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATH' do
|
||||
let(:finder_config) { super().merge('path' => 'changelog.txt') }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::PATH).to eql finder_config['path']
|
||||
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#passive, #aggressive' do
|
||||
# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec
|
||||
end
|
||||
end
|
||||
78
spec/lib/finders/dynamic_finder/version/comment_spec.rb
Normal file
78
spec/lib/finders/dynamic_finder/version/comment_spec.rb
Normal file
@@ -0,0 +1,78 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe WPScan::Finders::DynamicFinder::Version::Comment do
|
||||
module WPScan
|
||||
module Finders
|
||||
module Version
|
||||
# Needed to be able to test the below
|
||||
module Rspec
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
let(:finder_module) { WPScan::Finders::Version::Rspec }
|
||||
let(:finder_class) { WPScan::Finders::Version::Rspec::Comment }
|
||||
let(:finder_config) { { 'pattern' => /some version: (?<v>[\d\.]+)/i } }
|
||||
let(:default) { { 'xpath' => '//comment()', 'confidence' => 60 } }
|
||||
|
||||
before { described_class.create_child_class(finder_module, :Comment, finder_config) }
|
||||
after { finder_module.send(:remove_const, :Comment) }
|
||||
|
||||
describe '.create_child_class' do
|
||||
context 'when no PATH and CONFIDENCE' do
|
||||
it 'contains the expected constants to their default values' do
|
||||
# Doesn't work, dunno why
|
||||
# expect(finder_module.const_get(:Comment)).to be_a described_class
|
||||
# expect(finder_class.is_a?(described_class)).to eql true
|
||||
# expect(finder_class).to be_a described_class
|
||||
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
|
||||
expect(finder_class::XPATH).to eql default['xpath']
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when CONFIDENCE' do
|
||||
let(:finder_config) { super().merge('confidence' => 30) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::CONFIDENCE).to eql finder_config['confidence']
|
||||
|
||||
expect(finder_class::XPATH).to eql default['xpath']
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATH' do
|
||||
let(:finder_config) { super().merge('path' => 'file.txt') }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::PATH).to eql finder_config['path']
|
||||
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
expect(finder_class::XPATH).to eql default['xpath']
|
||||
end
|
||||
end
|
||||
|
||||
context 'when XPATH' do
|
||||
let(:finder_config) { super().merge('xpath' => '//comment()[contains(. "aa")]') }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::XPATH).to eql finder_config['xpath']
|
||||
|
||||
expect(finder_class::PATH).to eql nil
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#passive, #aggressive' do
|
||||
# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,51 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe WPScan::Finders::DynamicFinder::Version::ConfigParser do
|
||||
module WPScan
|
||||
module Finders
|
||||
module Version
|
||||
# Needed to be able to test the below
|
||||
module Rspec
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
let(:finder_module) { WPScan::Finders::Version::Rspec }
|
||||
let(:finder_class) { WPScan::Finders::Version::Rspec::ConfigParser }
|
||||
let(:finder_config) { { 'key' => 'some-key', 'path' => 'file.json' } }
|
||||
let(:default) { { 'pattern' => /(?<v>\d+\.[\.\d]+)/, 'confidence' => 70 } }
|
||||
|
||||
before { described_class.create_child_class(finder_module, :ConfigParser, finder_config) }
|
||||
after { finder_module.send(:remove_const, :ConfigParser) }
|
||||
|
||||
describe '.create_child_class' do
|
||||
context 'when CONFIDENCE' do
|
||||
let(:finder_config) { super().merge('confidence' => 30) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::KEY).to eql finder_config['key']
|
||||
expect(finder_class::CONFIDENCE).to eql finder_config['confidence']
|
||||
expect(finder_class::PATH).to eql finder_config['path']
|
||||
|
||||
expect(finder_class::PATTERN).to eql default['pattern']
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATTERN' do
|
||||
let(:finder_config) { super().merge('pattern' => /another pattern/i) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::KEY).to eql finder_config['key']
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::PATH).to eql finder_config['path']
|
||||
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#passive, #aggressive' do
|
||||
# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,78 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe WPScan::Finders::DynamicFinder::Version::HeaderPattern do
|
||||
module WPScan
|
||||
module Finders
|
||||
module Version
|
||||
# Needed to be able to test the below
|
||||
module Rspec
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
let(:finder_module) { WPScan::Finders::Version::Rspec }
|
||||
let(:finder_class) { WPScan::Finders::Version::Rspec::HeaderPattern }
|
||||
let(:finder_config) { { 'header' => 'Location' } }
|
||||
let(:default) { { 'confidence' => 60 } }
|
||||
|
||||
before { described_class.create_child_class(finder_module, :HeaderPattern, finder_config) }
|
||||
after { finder_module.send(:remove_const, :HeaderPattern) }
|
||||
|
||||
describe '.create_child_class' do
|
||||
context 'when no PATH and CONFIDENCE' do
|
||||
it 'contains the expected constants to their default values' do
|
||||
# Doesn't work, dunno why
|
||||
# expect(finder_module.const_get(:HeaderPattern)).to be_a described_class
|
||||
# expect(finder_class.is_a?(described_class)).to eql true
|
||||
# expect(finder_class).to be_a described_class
|
||||
|
||||
expect(finder_class::HEADER).to eql finder_config['header']
|
||||
|
||||
expect(finder_class::PATTERN).to eql nil
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when CONFIDENCE' do
|
||||
let(:finder_config) { super().merge('confidence' => 50) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::HEADER).to eql finder_config['header']
|
||||
expect(finder_class::CONFIDENCE).to eql finder_config['confidence']
|
||||
|
||||
expect(finder_class::PATTERN).to eql nil
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATH' do
|
||||
let(:finder_config) { super().merge('path' => 'index.php') }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::HEADER).to eql finder_config['header']
|
||||
expect(finder_class::PATH).to eql finder_config['path']
|
||||
|
||||
expect(finder_class::PATTERN).to eql nil
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATTERN' do
|
||||
let(:finder_config) { super().merge('pattern' => /Version: (?<v>[\d\.]+)/i) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::HEADER).to eql finder_config['header']
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
|
||||
expect(finder_class::PATH).to eql nil
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#passive, #aggressive' do
|
||||
# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,78 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe WPScan::Finders::DynamicFinder::Version::JavascriptVar do
|
||||
module WPScan
|
||||
module Finders
|
||||
module Version
|
||||
# Needed to be able to test the below
|
||||
module Rspec
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
let(:finder_module) { WPScan::Finders::Version::Rspec }
|
||||
let(:finder_class) { WPScan::Finders::Version::Rspec::JavascriptVar }
|
||||
let(:finder_config) { { 'pattern' => /some version: (?<v>[\d\.]+)/i } }
|
||||
let(:default) { { 'xpath' => '//script[not(@src)]', 'confidence' => 60 } }
|
||||
|
||||
before { described_class.create_child_class(finder_module, :JavascriptVar, finder_config) }
|
||||
after { finder_module.send(:remove_const, :JavascriptVar) }
|
||||
|
||||
describe '.create_child_class' do
|
||||
context 'when no PATH and CONFIDENCE' do
|
||||
it 'contains the expected constants to their default values' do
|
||||
# Doesn't work, dunno why
|
||||
# expect(finder_module.const_get(:JavascriptVar)).to be_a described_class
|
||||
# expect(finder_class.is_a?(described_class)).to eql true
|
||||
# expect(finder_class).to be_a described_class
|
||||
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
|
||||
expect(finder_class::XPATH).to eql default['xpath']
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when CONFIDENCE' do
|
||||
let(:finder_config) { super().merge('confidence' => 30) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::CONFIDENCE).to eql finder_config['confidence']
|
||||
|
||||
expect(finder_class::XPATH).to eql default['xpath']
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATH' do
|
||||
let(:finder_config) { super().merge('path' => 'file.html') }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::PATH).to eql finder_config['path']
|
||||
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
expect(finder_class::XPATH).to eql default['xpath']
|
||||
end
|
||||
end
|
||||
|
||||
context 'when XPATH' do
|
||||
let(:finder_config) { super().merge('xpath' => '//script') }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
expect(finder_class::XPATH).to eql finder_config['xpath']
|
||||
|
||||
expect(finder_class::PATH).to eql nil
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#passive, #aggressive' do
|
||||
# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,90 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe WPScan::Finders::DynamicFinder::Version::QueryParameter do
|
||||
module WPScan
|
||||
module Finders
|
||||
module Version
|
||||
# Needed to be able to test the below
|
||||
module Rspec
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
let(:finder_module) { WPScan::Finders::Version::Rspec }
|
||||
let(:finder_class) { WPScan::Finders::Version::Rspec::QueryParameter }
|
||||
let(:finder_config) { { 'files' => %w[f1 f2] } }
|
||||
let(:default) { { 'pattern' => /(?:v|ver|version)\=(?<v>\d+\.[\.\d]+)/i, 'confidence_per_occurence' => 10 } }
|
||||
|
||||
before { described_class.create_child_class(finder_module, :QueryParameter, finder_config) }
|
||||
after { finder_module.send(:remove_const, :QueryParameter) }
|
||||
|
||||
describe '.create_child_class' do
|
||||
context 'when no XPATH, PATTERN and CONFIDENCE_PER_OCCURENCE ' do
|
||||
it 'contains the expected constants to their default values' do
|
||||
expect(finder_class::FILES).to eql finder_config['files']
|
||||
|
||||
expect(finder_class::PATTERN).to eql default['pattern']
|
||||
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']
|
||||
expect(finder_class::XPATH).to eql nil
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when XPATH' do
|
||||
let(:finder_config) { super().merge('xpath' => '//xpath') }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::FILES).to eql finder_config['files']
|
||||
expect(finder_class::XPATH).to eql finder_config['xpath']
|
||||
|
||||
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']
|
||||
expect(finder_class::PATTERN).to eql default['pattern']
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATTERN' do
|
||||
let(:finder_config) { super().merge('pattern' => /pattern/i) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::FILES).to eql finder_config['files']
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
|
||||
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']
|
||||
expect(finder_class::XPATH).to eql nil
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when CONFIDENCE_PER_OCCURENCE' do
|
||||
let(:finder_config) { super().merge('confidence_per_occurence' => 30) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::FILES).to eql finder_config['files']
|
||||
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql finder_config['confidence_per_occurence']
|
||||
|
||||
expect(finder_class::PATTERN).to eql default['pattern']
|
||||
expect(finder_class::XPATH).to eql nil
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATH' do
|
||||
let(:finder_config) { super().merge('path' => 'file.html') }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::FILES).to eql finder_config['files']
|
||||
expect(finder_class::PATH).to eql finder_config['path']
|
||||
|
||||
expect(finder_class::CONFIDENCE_PER_OCCURENCE).to eql default['confidence_per_occurence']
|
||||
expect(finder_class::XPATH).to eql nil
|
||||
expect(finder_class::PATTERN).to eql default['pattern']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#passive, #aggressive' do
|
||||
# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec
|
||||
end
|
||||
end
|
||||
78
spec/lib/finders/dynamic_finder/version/xpath_spec.rb
Normal file
78
spec/lib/finders/dynamic_finder/version/xpath_spec.rb
Normal file
@@ -0,0 +1,78 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe WPScan::Finders::DynamicFinder::Version::Xpath do
|
||||
module WPScan
|
||||
module Finders
|
||||
module Version
|
||||
# Needed to be able to test the below
|
||||
module Rspec
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
let(:finder_module) { WPScan::Finders::Version::Rspec }
|
||||
let(:finder_class) { WPScan::Finders::Version::Rspec::Xpath }
|
||||
let(:finder_config) { { 'xpath' => "//div/h3[@class='version-number']" } }
|
||||
let(:default) { { 'pattern' => /\A(?<v>\d+\.[\.\d]+)/, 'confidence' => 60 } }
|
||||
|
||||
before { described_class.create_child_class(finder_module, :Xpath, finder_config) }
|
||||
after { finder_module.send(:remove_const, :Xpath) }
|
||||
|
||||
describe '.create_child_class' do
|
||||
context 'when no PATH and CONFIDENCE' do
|
||||
it 'contains the expected constants to their default values' do
|
||||
# Doesn't work, dunno why
|
||||
# expect(finder_module.const_get(:Xpath)).to be_a described_class
|
||||
# expect(finder_class.is_a?(described_class)).to eql true
|
||||
# expect(finder_class).to be_a described_class
|
||||
|
||||
expect(finder_class::XPATH).to eql finder_config['xpath']
|
||||
|
||||
expect(finder_class::PATTERN).to eql default['pattern']
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when CONFIDENCE' do
|
||||
let(:finder_config) { super().merge('confidence' => 30) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::XPATH).to eql finder_config['xpath']
|
||||
expect(finder_class::CONFIDENCE).to eql finder_config['confidence']
|
||||
|
||||
expect(finder_class::PATTERN).to eql default['pattern']
|
||||
expect(finder_class::PATH).to eql nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATH' do
|
||||
let(:finder_config) { super().merge('path' => 'file.txt') }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::XPATH).to eql finder_config['xpath']
|
||||
expect(finder_class::PATH).to eql finder_config['path']
|
||||
|
||||
expect(finder_class::PATTERN).to eql default['pattern']
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
end
|
||||
end
|
||||
|
||||
context 'when PATTERN' do
|
||||
let(:finder_config) { super().merge('pattern' => /Version: (?<v>[\d\.]+)/i) }
|
||||
|
||||
it 'contains the expected constants' do
|
||||
expect(finder_class::XPATH).to eql finder_config['xpath']
|
||||
expect(finder_class::PATTERN).to eql finder_config['pattern']
|
||||
|
||||
expect(finder_class::PATH).to eql nil
|
||||
expect(finder_class::CONFIDENCE).to eql default['confidence']
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#passive, #aggressive' do
|
||||
# Handled in spec/lib/finders/dynamic_finder/plugin_version_spec
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user