Skip to content

Commit b74813b

Browse files
David MaloneyDavid Maloney
authored andcommitted
mysql and pop3 now
1 parent 2e7738c commit b74813b

File tree

4 files changed

+27
-73
lines changed

4 files changed

+27
-73
lines changed

lib/metasploit/framework/login_scanner/mysql.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ class MySQL
2323

2424
def attempt_login(credential)
2525
result_options = {
26-
credential: credential
26+
credential: credential,
27+
host: host,
28+
port: port,
29+
protocol: 'tcp',
30+
service_name: 'mysql'
2731
}
2832

2933
# manage our behind the scenes socket. Close any existing one and open a new one

lib/metasploit/framework/login_scanner/pop3.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ class POP3
2626
def attempt_login(credential)
2727
result_options = {
2828
credential: credential,
29-
status: Metasploit::Model::Login::Status::INCORRECT
29+
status: Metasploit::Model::Login::Status::INCORRECT,
30+
host: host,
31+
port: port,
32+
protocol: 'tcp',
33+
service_name: 'pop3'
3034
}
3135

3236
disconnect if self.sock

modules/auxiliary/scanner/mysql/mysql_login.rb

Lines changed: 8 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -56,46 +56,20 @@ def run_host(ip)
5656
connection_timeout: 30
5757
)
5858

59-
service_data = {
60-
address: ip,
61-
port: rport,
62-
service_name: 'mysql',
63-
protocol: 'tcp',
64-
workspace_id: myworkspace_id
65-
}
66-
6759
scanner.scan! do |result|
60+
credential_data = result.to_h
61+
credential_data.merge!(
62+
module_fullname: self.fullname,
63+
workspace_id: myworkspace_id
64+
)
6865
if result.success?
69-
credential_data = {
70-
module_fullname: self.fullname,
71-
origin_type: :service,
72-
private_data: result.credential.private,
73-
private_type: :password,
74-
username: result.credential.public
75-
}
76-
credential_data.merge!(service_data)
77-
7866
credential_core = create_credential(credential_data)
67+
credential_data[:core] = credential_core
68+
create_credential_login(credential_data)
7969

80-
login_data = {
81-
core: credential_core,
82-
last_attempted_at: DateTime.now,
83-
status: Metasploit::Model::Login::Status::SUCCESSFUL
84-
}
85-
login_data.merge!(service_data)
86-
87-
create_credential_login(login_data)
8870
print_good "#{ip}:#{rport} - LOGIN SUCCESSFUL: #{result.credential}"
8971
else
90-
invalidate_login(
91-
address: ip,
92-
port: rport,
93-
protocol: 'tcp',
94-
public: result.credential.public,
95-
private: result.credential.private,
96-
realm_key: nil,
97-
realm_value: nil,
98-
status: result.status)
72+
invalidate_login(credential_data)
9973
print_status "#{ip}:#{rport} - LOGIN FAILED: #{result.credential} (#{result.status}: #{result.proof})"
10074
end
10175
end

modules/auxiliary/scanner/pop3/pop3_login.rb

Lines changed: 9 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,17 @@ def run_host(ip)
7171
)
7272

7373
scanner.scan! do |result|
74+
credential_data = result.to_h
75+
credential_data.merge!(
76+
module_fullname: self.fullname,
77+
workspace_id: myworkspace_id
78+
)
7479
case result.status
7580
when Metasploit::Model::Login::Status::SUCCESSFUL
7681
print_brute :level => :good, :ip => ip, :msg => "Success: '#{result.credential}' '#{result.proof.to_s.gsub(/[\r\n\e\b\a]/, ' ')}'"
77-
do_report(result)
82+
credential_core = create_credential(credential_data)
83+
credential_data[:core] = credential_core
84+
create_credential_login(credential_data)
7885
next
7986
when Metasploit::Model::Login::Status::UNABLE_TO_CONNECT
8087
print_brute :level => :verror, :ip => ip, :msg => "Could not connect"
@@ -83,49 +90,14 @@ def run_host(ip)
8390
end
8491

8592
# If we got here, it didn't work
86-
invalidate_login(
87-
address: ip,
88-
port: rport,
89-
protocol: 'tcp',
90-
public: result.credential.public,
91-
private: result.credential.private,
92-
realm_key: result.credential.realm_key,
93-
realm_value: result.credential.realm,
94-
status: result.status
95-
)
93+
invalidate_login(credential_data)
9694
end
9795
end
9896

9997
def service_name
10098
datastore['SSL'] ? 'pop3s' : 'pop3'
10199
end
102100

103-
def do_report(result)
104-
service_data = {
105-
address: rhost,
106-
port: rport,
107-
service_name: service_name,
108-
protocol: 'tcp',
109-
workspace_id: myworkspace_id
110-
}
111-
112-
credential_data = {
113-
module_fullname: self.fullname,
114-
origin_type: :service,
115-
private_data: result.credential.private,
116-
private_type: :password,
117-
username: result.credential.public,
118-
}.merge(service_data)
119101

120-
credential_core = create_credential(credential_data)
121-
122-
login_data = {
123-
core: credential_core,
124-
last_attempted_at: DateTime.now,
125-
status: result.status
126-
}.merge(service_data)
127-
128-
create_credential_login(login_data)
129-
end
130102

131103
end

0 commit comments

Comments
 (0)