Class: Metasploit::Framework::LoginScanner::AdvantechWebAccess

Inherits:
HTTP
  • Object
show all
Defined in:
lib/metasploit/framework/login_scanner/advantech_webaccess.rb

Constant Summary collapse

DEFAULT_PORT =
80
PRIVATE_TYPES =
[ :password ]
LOGIN_STATUS =

Shorter name

Metasploit::Model::Login::Status

Constants inherited from HTTP

HTTP::AUTHORIZATION_HEADER, HTTP::DEFAULT_HTTP_NOT_AUTHED_CODES, HTTP::DEFAULT_HTTP_SUCCESS_CODES, HTTP::DEFAULT_REALM, HTTP::DEFAULT_SSL_PORT, HTTP::LIKELY_PORTS, HTTP::LIKELY_SERVICE_NAMES, HTTP::REALM_KEY

Instance Attribute Summary

Attributes inherited from HTTP

#digest_auth_iis, #evade_header_folding, #evade_method_random_case, #evade_method_random_invalid, #evade_method_random_valid, #evade_pad_fake_headers, #evade_pad_fake_headers_count, #evade_pad_get_params, #evade_pad_get_params_count, #evade_pad_method_uri_count, #evade_pad_method_uri_type, #evade_pad_post_params, #evade_pad_post_params_count, #evade_pad_uri_version_count, #evade_pad_uri_version_type, #evade_shuffle_get_params, #evade_shuffle_post_params, #evade_uri_dir_fake_relative, #evade_uri_dir_self_reference, #evade_uri_encode_mode, #evade_uri_fake_end, #evade_uri_fake_params_start, #evade_uri_full_url, #evade_uri_use_backslashes, #evade_version_random_invalid, #evade_version_random_valid, #http_password, #http_success_codes, #http_username, #keep_connection_alive, #kerberos_authenticator_factory, #method, #ntlm_domain, #ntlm_send_lm, #ntlm_send_ntlm, #ntlm_send_spn, #ntlm_use_lm_key, #ntlm_use_ntlmv2, #ntlm_use_ntlmv2_session, #uri, #user_agent, #vhost

Instance Method Summary collapse

Methods inherited from HTTP

#authentication_required?, #send_request

Instance Method Details

#attempt_login(credential) ⇒ Result

Attempts to login to Advantech WebAccess.

Parameters:

Returns:

  • (Result)

    A Result object indicating success or failure



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/metasploit/framework/login_scanner/advantech_webaccess.rb', line 60

def (credential)
  result_opts = {
    credential: credential,
    status: Metasploit::Model::Login::Status::INCORRECT,
    proof: nil,
    host: host,
    port: port,
    protocol: 'tcp'
  }

  begin
    result_opts.merge!((credential.public, credential.private))
  rescue ::Rex::ConnectionError => e
    # Something went wrong during login. 'e' knows what's up.
    result_opts.merge!(status: LOGIN_STATUS::UNABLE_TO_CONNECT, proof: e.message)
  end

  Result.new(result_opts)
end

#check_setupObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/metasploit/framework/login_scanner/advantech_webaccess.rb', line 13

def check_setup
  uri = normalize_uri("#{uri}broadWeb/bwRoot.asp")

  res = send_request({
    'method' => 'GET',
    'uri'    => uri
  })

  if res && res.body =~ /Welcome to Advantech WebAccess/i
    return true
  end

  false
end

#do_login(user, pass) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/metasploit/framework/login_scanner/advantech_webaccess.rb', line 28

def (user, pass)
  uri  = normalize_uri("#{uri}broadweb/user/signin.asp")

  res = send_request({
    'method' => 'POST',
    'uri'    => uri,
    'vars_post' =>
      {
        'page'     => '/',
        'pos'      => '',
        'remMe'    => '',
        'submit1'  => 'Login',
        'username' => user,
        'password' => pass
      }
  })

  unless res
    return {status: LOGIN_STATUS::UNABLE_TO_CONNECT, proof: 'Connection timed out for signin.asp'}
  end

  if res.headers['Location'] && res.headers['Location'] == '/broadweb/bwproj.asp'
    return {status: LOGIN_STATUS::SUCCESSFUL, proof: res.body}
  end

  {status: LOGIN_STATUS::INCORRECT, proof: res.body}
end