Skip to content

Commit 2e7738c

Browse files
David MaloneyDavid Maloney
authored andcommitted
http and mssql now
1 parent 33f73a8 commit 2e7738c

File tree

4 files changed

+33
-95
lines changed

4 files changed

+33
-95
lines changed

lib/metasploit/framework/login_scanner/http.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,18 @@ def attempt_login(credential)
4646
result_opts = {
4747
credential: credential,
4848
status: Metasploit::Model::Login::Status::INCORRECT,
49-
proof: nil
49+
proof: nil,
50+
host: host,
51+
port: port,
52+
protocol: 'tcp'
5053
}
5154

55+
if ssl
56+
result_opts[:service_name] = 'https'
57+
else
58+
result_opts[:service_name] = 'http'
59+
end
60+
5261
http_client = Rex::Proto::Http::Client.new(
5362
host, port, {}, ssl, ssl_version,
5463
nil, credential.public, credential.private

lib/metasploit/framework/login_scanner/mssql.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ class MSSQL
3434

3535
def attempt_login(credential)
3636
result_options = {
37-
credential: credential
37+
credential: credential,
38+
host: host,
39+
port: port,
40+
protocol: 'tcp',
41+
service_name: 'mssql'
3842
}
3943

4044
begin

modules/auxiliary/scanner/http/http_login.rb

Lines changed: 10 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -141,36 +141,25 @@ def run_host(ip)
141141
)
142142

143143
scanner.scan! do |result|
144+
credential_data = result.to_h
145+
credential_data.merge!(
146+
module_fullname: self.fullname,
147+
workspace_id: myworkspace_id
148+
)
144149
case result.status
145150
when Metasploit::Model::Login::Status::SUCCESSFUL
146151
print_brute :level => :good, :ip => ip, :msg => "Success: '#{result.credential}'"
147-
do_report(ip, rport, result)
152+
credential_core = create_credential(credential_data)
153+
credential_data[:core] = credential_core
154+
create_credential_login(credential_data)
148155
:next_user
149156
when Metasploit::Model::Login::Status::UNABLE_TO_CONNECT
150157
print_brute :level => :verror, :ip => ip, :msg => "Could not connect"
151-
invalidate_login(
152-
address: ip,
153-
port: rport,
154-
protocol: 'tcp',
155-
public: result.credential.public,
156-
private: result.credential.private,
157-
realm_key: result.credential.realm_key,
158-
realm_value: result.credential.realm,
159-
status: result.status
160-
)
158+
invalidate_login(credential_data)
161159
:abort
162160
when Metasploit::Model::Login::Status::INCORRECT
163161
print_brute :level => :verror, :ip => ip, :msg => "Failed: '#{result.credential}'"
164-
invalidate_login(
165-
address: ip,
166-
port: rport,
167-
protocol: 'tcp',
168-
public: result.credential.public,
169-
private: result.credential.private,
170-
realm_key: result.credential.realm_key,
171-
realm_value: result.credential.realm,
172-
status: result.status
173-
)
162+
invalidate_login(credential_data)
174163
when Metasploit::Model::Login::Status::NO_AUTH_REQUIRED
175164
print_brute :level => :error, :ip => ip, :msg => "Failed: '#{result.credential}'"
176165
break
@@ -179,32 +168,5 @@ def run_host(ip)
179168

180169
end
181170

182-
def do_report(ip, port, result)
183-
service_data = {
184-
address: ip,
185-
port: port,
186-
service_name: 'http',
187-
protocol: 'tcp',
188-
workspace_id: myworkspace_id
189-
}
190-
191-
credential_data = {
192-
module_fullname: self.fullname,
193-
origin_type: :service,
194-
private_data: result.credential.private,
195-
private_type: :password,
196-
username: result.credential.public,
197-
}.merge(service_data)
198-
199-
credential_core = create_credential(credential_data)
200-
201-
login_data = {
202-
core: credential_core,
203-
last_attempted_at: DateTime.now,
204-
status: result.status
205-
}.merge(service_data)
206-
207-
create_credential_login(login_data)
208-
end
209171

210172
end

modules/auxiliary/scanner/mssql/mssql_login.rb

Lines changed: 8 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -53,57 +53,20 @@ def run_host(ip)
5353
windows_authentication: datastore['USE_WINDOWS_AUTHENT']
5454
)
5555

56-
service_data = {
57-
address: ip,
58-
port: rport,
59-
service_name: 'mssql',
60-
protocol: 'tcp',
61-
workspace_id: myworkspace_id
62-
}
63-
6456
scanner.scan! do |result|
57+
credential_data = result.to_h
58+
credential_data.merge!(
59+
module_fullname: self.fullname,
60+
workspace_id: myworkspace_id
61+
)
6562
if result.success?
66-
credential_data = {
67-
module_fullname: self.fullname,
68-
origin_type: :service,
69-
private_data: result.credential.private,
70-
private_type: :password,
71-
username: result.credential.public
72-
}
73-
74-
if datastore['USE_WINDOWS_AUTHENT']
75-
credential_data[:realm_key] = Metasploit::Model::Realm::Key::ACTIVE_DIRECTORY_DOMAIN
76-
credential_data[:realm_value] = result.credential.realm
77-
end
78-
credential_data.merge!(service_data)
79-
8063
credential_core = create_credential(credential_data)
64+
credential_data[:core] = credential_core
65+
create_credential_login(credential_data)
8166

82-
login_data = {
83-
core: credential_core,
84-
last_attempted_at: DateTime.now,
85-
status: Metasploit::Model::Login::Status::SUCCESSFUL
86-
}
87-
login_data.merge!(service_data)
88-
89-
create_credential_login(login_data)
9067
print_good "#{ip}:#{rport} - LOGIN SUCCESSFUL: #{result.credential}"
9168
else
92-
login_data = {
93-
address: ip,
94-
port: rport,
95-
protocol: 'tcp',
96-
public: result.credential.public,
97-
private: result.credential.private,
98-
realm_key: nil,
99-
realm_value: nil,
100-
status: result.status
101-
}
102-
if datastore['USE_WINDOWS_AUTHENT']
103-
login_data[:realm_key] = Metasploit::Model::Realm::Key::ACTIVE_DIRECTORY_DOMAIN
104-
login_data[:realm_value] = result.credential.realm
105-
end
106-
invalidate_login(login_data)
69+
invalidate_login(credential_data)
10770
print_status "#{ip}:#{rport} - LOGIN FAILED: #{result.credential} (#{result.status}: #{result.proof})"
10871
end
10972
end

0 commit comments

Comments
 (0)