Merge branch 'staging/electro-release' into feature/MSP-10656/unify-ssh-scanners
commit
2c13ff4038
|
@ -48,7 +48,8 @@ module Metasploit
|
|||
# These values should be #demodularized from subclasses of
|
||||
# `Metasploit::Credential::Private`
|
||||
validates :private_type,
|
||||
inclusion: { in: [ :password, :ntlm_hash, :ssh_key ] }
|
||||
inclusion: { in: [ :password, :ntlm_hash, :ssh_key ] },
|
||||
if: "private_type.present?"
|
||||
|
||||
# If we have no private we MUST have a public
|
||||
validates :public,
|
||||
|
|
|
@ -18,9 +18,6 @@ module Metasploit
|
|||
# @!attribute cred_details
|
||||
# @return [CredentialCollection] Collection of Credential objects
|
||||
attr_accessor :cred_details
|
||||
# @!attribute failures
|
||||
# @return [Array<Result>] Array of failing {Result results}
|
||||
attr_accessor :failures
|
||||
# @!attribute host
|
||||
# @return [String] The IP address or hostname to connect to
|
||||
attr_accessor :host
|
||||
|
@ -33,9 +30,6 @@ module Metasploit
|
|||
# @!attribute stop_on_success
|
||||
# @return [Boolean] Whether the scanner should stop when it has found one working Credential
|
||||
attr_accessor :stop_on_success
|
||||
# @!attribute successes
|
||||
# @return [Array<Result>] Array of successful {Result results}
|
||||
attr_accessor :successes
|
||||
|
||||
validates :connection_timeout,
|
||||
presence: true,
|
||||
|
@ -68,8 +62,6 @@ module Metasploit
|
|||
attributes.each do |attribute, value|
|
||||
public_send("#{attribute}=", value)
|
||||
end
|
||||
self.successes = []
|
||||
self.failures = []
|
||||
set_sane_defaults
|
||||
end
|
||||
|
||||
|
@ -88,8 +80,6 @@ module Metasploit
|
|||
# Attempt to login with every {Credential credential} in
|
||||
# {#cred_details}, by calling {#attempt_login} once for each.
|
||||
#
|
||||
# All {Result results} are stored in {#successes} and {#failures}.
|
||||
#
|
||||
# @yieldparam result [Result] The {Result} object for each attempt
|
||||
# @yieldreturn [void]
|
||||
# @return [void]
|
||||
|
@ -109,11 +99,9 @@ module Metasploit
|
|||
yield result if block_given?
|
||||
|
||||
if result.success?
|
||||
successes << result
|
||||
consecutive_error_count = 0
|
||||
break if stop_on_success
|
||||
else
|
||||
failures << result
|
||||
if result.status == :connection_error
|
||||
consecutive_error_count += 1
|
||||
total_error_count += 1
|
||||
|
|
|
@ -44,12 +44,10 @@ shared_examples_for 'Metasploit::Framework::LoginScanner::Base' do
|
|||
|
||||
it { should respond_to :connection_timeout }
|
||||
it { should respond_to :cred_details }
|
||||
it { should respond_to :failures }
|
||||
it { should respond_to :host }
|
||||
it { should respond_to :port }
|
||||
it { should respond_to :proxies }
|
||||
it { should respond_to :stop_on_success }
|
||||
it { should respond_to :successes }
|
||||
|
||||
context 'validations' do
|
||||
context 'port' do
|
||||
|
@ -238,14 +236,6 @@ shared_examples_for 'Metasploit::Framework::LoginScanner::Base' do
|
|||
)
|
||||
}
|
||||
|
||||
let(:failure) {
|
||||
::Metasploit::Framework::LoginScanner::Result.new(
|
||||
credential: pub_pri,
|
||||
proof: nil,
|
||||
status: :failed
|
||||
)
|
||||
}
|
||||
|
||||
before(:each) do
|
||||
login_scanner.host = '127.0.0.1'
|
||||
login_scanner.port = 22
|
||||
|
@ -270,27 +260,6 @@ shared_examples_for 'Metasploit::Framework::LoginScanner::Base' do
|
|||
my_scanner.scan!
|
||||
end
|
||||
|
||||
it 'adds the failed results to the failures attribute' do
|
||||
my_scanner = login_scanner
|
||||
my_scanner.should_receive(:valid!)
|
||||
my_scanner.should_receive(:attempt_login).once.with(pub_blank).and_return failure_blank
|
||||
my_scanner.should_receive(:attempt_login).once.with(pub_pub).and_return success
|
||||
my_scanner.should_receive(:attempt_login).once.with(pub_pri).and_return failure
|
||||
my_scanner.scan!
|
||||
expect(my_scanner.failures).to include failure_blank
|
||||
expect(my_scanner.failures).to include failure
|
||||
end
|
||||
|
||||
it 'adds the success results to the successes attribute' do
|
||||
my_scanner = login_scanner
|
||||
my_scanner.should_receive(:valid!)
|
||||
my_scanner.should_receive(:attempt_login).once.with(pub_blank).and_return failure_blank
|
||||
my_scanner.should_receive(:attempt_login).once.with(pub_pub).and_return success
|
||||
my_scanner.should_receive(:attempt_login).once.with(pub_pri).and_return failure
|
||||
my_scanner.scan!
|
||||
expect(my_scanner.successes).to include success
|
||||
end
|
||||
|
||||
context 'when stop_on_success is true' do
|
||||
before(:each) do
|
||||
login_scanner.host = '127.0.0.1'
|
||||
|
@ -307,7 +276,6 @@ shared_examples_for 'Metasploit::Framework::LoginScanner::Base' do
|
|||
my_scanner.should_receive(:attempt_login).once.with(pub_pub).and_return success
|
||||
my_scanner.should_not_receive(:attempt_login).with(pub_pri)
|
||||
my_scanner.scan!
|
||||
expect(my_scanner.failures).to_not include failure
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue