Skip to content

Commit fdd3234

Browse files
committed
Explicitly register SSL option as true, add proof logging to pfSense Login
1 parent b5ef4cd commit fdd3234

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

lib/metasploit/framework/login_scanner/pfsense.rb

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,12 @@ def query_csrf_magic
3535

3636
res = send_request(request_params)
3737

38-
if res.nil? || res.code != 200
39-
return { status: :failure, error: 'Unknown response from GET request' }
38+
if res.nil?
39+
return { status: :failure, error: 'Did not receive response to a GET request' }
40+
end
41+
42+
if res.code != 200
43+
return { status: :failure, error: "Unexpected return code from GET request - #{res.code}" }
4044
end
4145

4246
# CSRF Magic Token and Magic Value are inlined as JavaScript in a <script> tag.
@@ -88,13 +92,13 @@ def attempt_login(credential)
8892
login_result = try_login(credential.public, credential.private, csrf_magic[:result])
8993

9094
if login_result[:result].nil?
91-
result_options.merge!(status: ::Metasploit::Model::Login::Status::UNABLE_TO_CONNECT)
95+
result_options.merge!(status: ::Metasploit::Model::Login::Status::UNABLE_TO_CONNECT, proof: 'Unable to connect to pfSense')
9296
return Result.new(result_options)
9397
end
9498

9599
# 200 is incorrect result
96100
if login_result[:result].code == 200 || login_result[:result].body.include?('Username or Password incorrect')
97-
result_options.merge!(status: ::Metasploit::Model::Login::Status::INCORRECT)
101+
result_options.merge!(status: ::Metasploit::Model::Login::Status::INCORRECT, proof: 'Username or Password incorrect')
98102
return Result.new(result_options)
99103
end
100104

@@ -103,7 +107,7 @@ def attempt_login(credential)
103107
Result.new(result_options)
104108

105109
rescue ::Rex::ConnectionError => _e
106-
result_options.merge!(status: ::Metasploit::Model::Login::Status::UNABLE_TO_CONNECT)
110+
result_options.merge!(status: ::Metasploit::Model::Login::Status::UNABLE_TO_CONNECT, proof: 'Unable to connect to pfSense')
107111
return Result.new(result_options)
108112
end
109113
end

modules/auxiliary/scanner/http/pfsense_login.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def initialize(info = {})
2929
register_options(
3030
[
3131
Msf::OptString.new('TARGETURI', [true, 'The base path to the pfSense application', '/']),
32+
OptBool.new('SSL', [ true, 'Negotiate SSL/TLS for outgoing connections', true ]),
3233
Opt::RPORT(443),
3334
], self.class
3435
)
@@ -47,7 +48,11 @@ def process_credential(credential_data)
4748
create_credential_login(credential_data)
4849
return { status: :success, credential: credential_data }
4950
else
50-
error_msg = "#{credential_data[:address]}:#{credential_data[:port]} - LOGIN FAILED: #{credential_combo} (#{credential_data[:status]})"
51+
if credential_data[:proof]
52+
error_msg = "#{credential_data[:address]}:#{credential_data[:port]} - LOGIN FAILED: #{credential_combo} (#{credential_data[:status]} : #{credential_data[:proof]})"
53+
else
54+
error_msg = "#{credential_data[:address]}:#{credential_data[:port]} - LOGIN FAILED: #{credential_combo} (#{credential_data[:status]})"
55+
end
5156
vprint_error error_msg
5257
invalidate_login(credential_data)
5358
return { status: :fail, credential: credential_data }

0 commit comments

Comments
 (0)