Skip to content

Commit ded500a

Browse files
committed
Use send_request
1 parent 6984e52 commit ded500a

File tree

1 file changed

+11
-24
lines changed
  • lib/metasploit/framework/login_scanner

1 file changed

+11
-24
lines changed

lib/metasploit/framework/login_scanner/http.rb

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -198,8 +198,9 @@ def send_request(opts)
198198
cli_ssl = opts['ssl'] || ssl
199199
cli_ssl_version = opts['ssl_version'] || ssl_version
200200
cli_proxies = opts['proxies'] || proxies
201-
username = opts['username'] || ''
202-
password = opts['password'] || ''
201+
username = opts['credential'] ? opts['credential'].public : ''
202+
password = opts['credential'] ? opts['credential'].private : ''
203+
realm = opts['credential'] ? opts['credential'].realm : nil
203204
context = opts['context'] || { 'Msf' => framework, 'MsfExploit' => framework_module}
204205

205206
res = nil
@@ -214,6 +215,11 @@ def send_request(opts)
214215
password
215216
)
216217
configure_http_client(cli)
218+
219+
if realm
220+
cli.set_config('domain' => credential.realm)
221+
end
222+
217223
begin
218224
cli.connect
219225
req = cli.request_cgi(opts)
@@ -227,13 +233,13 @@ def send_request(opts)
227233
res
228234
end
229235

236+
230237
# Attempt a single login with a single credential against the target.
231238
#
232239
# @param credential [Credential] The credential object to attempt to
233240
# login with.
234241
# @return [Result] A Result object indicating success or failure
235242
def attempt_login(credential)
236-
237243
result_opts = {
238244
credential: credential,
239245
status: Metasploit::Model::Login::Status::INCORRECT,
@@ -249,32 +255,13 @@ def attempt_login(credential)
249255
result_opts[:service_name] = 'http'
250256
end
251257

252-
http_client = Rex::Proto::Http::Client.new(
253-
host, port, {'Msf' => framework, 'MsfExploit' => framework_module}, ssl, ssl_version,
254-
proxies, credential.public, credential.private
255-
)
256-
257-
configure_http_client(http_client)
258-
259-
if credential.realm
260-
http_client.set_config('domain' => credential.realm)
261-
end
262-
263258
begin
264-
http_client.connect
265-
request = http_client.request_cgi(
266-
'uri' => uri,
267-
'method' => method
268-
)
269-
270-
response = http_client.send_recv(request)
259+
response = send_request('credential'=>credential, 'uri'=>uri, 'method'=>method)
271260
if response && response.code == 200
272261
result_opts.merge!(status: Metasploit::Model::Login::Status::SUCCESSFUL, proof: response.headers)
273262
end
274-
rescue ::EOFError, Errno::ETIMEDOUT, Rex::ConnectionError, ::Timeout::Error => e
263+
rescue Rex::ConnectionError => e
275264
result_opts.merge!(status: Metasploit::Model::Login::Status::UNABLE_TO_CONNECT, proof: e)
276-
ensure
277-
http_client.close
278265
end
279266

280267
Result.new(result_opts)

0 commit comments

Comments
 (0)