Update checkcodes and bug fixes

This commit is contained in:
adfoster-r7
2026-04-22 13:20:20 +01:00
parent 5942122b9a
commit 3bee31ff5e
20 changed files with 53 additions and 32 deletions
@@ -63,13 +63,16 @@ class MetasploitModule < Msf::Exploit::Remote
return unless res && (html = res.get_html_document)
if (version = html.at('//input[@name = "version"]/@value'))
version = version.value
vprint_status("Nagios XI version: #{version}")
if Rex::Version.new(version) <= target[:version]
return CheckCode::Appears("Version #{version} appears to be vulnerable")
end
end
CheckCode::Safe("Version #{version} is not vulnerable")
return CheckCode::Safe("Version #{version} is not vulnerable") if version
CheckCode::Unknown('Could not determine Nagios XI version')
end
def exploit
@@ -73,6 +73,8 @@ class MetasploitModule < Msf::Exploit::Remote
marker_one = "Basic realm=\"NETGEAR "
marker_two = "\""
model = data[/#{marker_one}(.*?)#{marker_two}/m, 1]
return CheckCode::Unknown('Could not determine NETGEAR model') if model.nil?
vprint_status("Router is a NETGEAR router (#{model})")
model_numbers = ['DGN2200v1', 'DGN2200v2', 'DGN2200v3', 'DGN2200v4']
if model_numbers.include?(model)
@@ -83,7 +85,7 @@ class MetasploitModule < Msf::Exploit::Remote
end
else
print_error('Router is not a NETGEAR router')
return CheckCode::Safe('Router is not a NETGEAR router')
return CheckCode::Safe('NETGEAR router not detected')
end
end
@@ -71,6 +71,8 @@ class MetasploitModule < Msf::Exploit::Remote
marker_one = "Basic realm=\"NETGEAR "
marker_two = "\""
model = scrape(data, marker_one, marker_two)
return CheckCode::Unknown('Could not determine NETGEAR model') if model.nil?
vprint_status("Router is a NETGEAR router (#{model})")
if model == 'R7000' || model == 'R6400'
print_good("Router may be vulnerable (NETGEAR #{model})")
@@ -87,7 +87,7 @@ class MetasploitModule < Msf::Exploit::Remote
return CheckCode::Safe("Oracle EBS version #{version} detected.")
end
CheckCode::Detected('Oracle EBS detected, but the version could not be determined from the response.')
CheckCode::Unknown('Oracle EBS detected, but the version could not be determined')
end
def exploit
@@ -57,7 +57,7 @@ class MetasploitModule < Msf::Exploit::Remote
end
def check
return CheckCode::Unknown('Login failed, please check credentials') unless login(datastore['EMAIL'], datastore['PASSWORD'])
return Exploit::CheckCode::Unknown('Login failed, please check credentials') unless login(datastore['EMAIL'], datastore['PASSWORD'])
@logged_in = true
@@ -77,7 +77,7 @@ class MetasploitModule < Msf::Exploit::Remote
rescue SessionCookieError
return Exploit::CheckCode::Detected('Pretalx detected, failed to get session cookie - check your credentials')
rescue DebugError
return Exploit::Checkcode::Detected('Failed to check if debug mode is enabled')
return Exploit::CheckCode::Detected('Failed to check if debug mode is enabled')
end
def exploit
@@ -76,16 +76,19 @@ class MetasploitModule < Msf::Exploit::Remote
'uri' => '/login.php'
)
if !res || !res.get_html_document
return Exploit::CheckCode::Unknown('Could not check rConfig version')
end
if res.get_html_document.at('div[@id="footer-copyright"]').text.include? 'rConfig Version 3.9'
print_good('rConfig version 3.9 detected')
return Exploit::CheckCode::Appears('The target appears to be vulnerable')
elsif res.get_html_document.at('div[@id="footer-copyright"]').text.include? 'rConfig'
print_status('rConfig detected, but not version 3.9')
return Exploit::CheckCode::Detected('The target service was detected')
return Exploit::CheckCode::Unknown('Could not retrieve the rConfig login page')
end
footer = res.get_html_document.at('div[@id="footer-copyright"]')
return Exploit::CheckCode::Unknown('Could not find version information on the login page') unless footer
if footer.text.include? 'rConfig Version 3.9'
print_good('rConfig version 3.9 detected')
return Exploit::CheckCode::Appears('rConfig version 3.9 was detected')
elsif footer.text.include? 'rConfig'
print_status('rConfig detected, but not version 3.9')
return Exploit::CheckCode::Detected('rConfig was detected but not version 3.9')
end
Exploit::CheckCode::Safe('rConfig was not detected')
end
@@ -87,7 +87,7 @@ class MetasploitModule < Msf::Exploit::Remote
return CheckCode::Unknown('Could not determine the target version')
end
CheckCode::Safe('The target is not vulnerable')
CheckCode::Safe('Samsung NVR not detected')
end
def exploit
@@ -92,7 +92,7 @@ class MetasploitModule < Msf::Exploit::Remote
end
def check
leak_admin_creds ? CheckCode::Vulnerable('The target is vulnerable') : CheckCode::Safe('The target is not vulnerable')
leak_admin_creds ? CheckCode::Vulnerable('Successfully leaked admin credentials via SSRF') : CheckCode::Safe('Could not leak admin credentials via SSRF')
end
def exploit
@@ -118,7 +118,7 @@ class MetasploitModule < Msf::Exploit::Remote
end
print_error("#{datastore['USERNAME']} doesn't have the right to >>Package Update<<")
print_status("Please try with another user account!")
CheckCode::Safe('The target is not vulnerable')
CheckCode::Detected("Version #{version} may be vulnerable, but user '#{datastore['USERNAME']}' lacks Package Updates permissions")
end
def exploit
@@ -71,6 +71,7 @@ class MetasploitModule < Msf::Exploit::Remote
'method' => "GET",
'uri' => "/zport/acl_users/cookieAuthHelper/login_form"
})
return Exploit::CheckCode::Unknown('No response received from the target') unless res
return Exploit::CheckCode::Appears('The target appears to be vulnerable') if res.body =~ /<p>Copyright &copy; 2005-20[\d]{2} Zenoss, Inc\. \| Version\s+<span>3\./
return Exploit::CheckCode::Detected('The target service was detected') if res.body =~ /<link rel="shortcut icon" type="image\/x\-icon" href="\/zport\/dmd\/favicon\.ico" \/>/
@@ -415,7 +415,8 @@ class MetasploitModule < Msf::Exploit::Remote
# @config = { 'hardware' => nil, 'software' => nil, 'serial' => nil, 'ssh_user' => nil, 'ssh_port' => nil, 'ssh_wan_access' => nil, 'ssh_service_enabled' => nil }
res = get_configuration
return CheckCode::Unknown('Could not retrieve the target configuration') if res.nil? || res.code != 200
return CheckCode::Unknown('No response received from the target') if res.nil?
return CheckCode::Unknown('Could not retrieve the target configuration') if res.code != 200
begin
process_configuration(res)
@@ -80,7 +80,7 @@ class MetasploitModule < Msf::Exploit::Remote
version = ::Regexp.last_match(1)
end
return CheckCode::Safe if version.blank?
return CheckCode::Unknown('Could not determine AlienVault version') if version.blank?
if version >= '4.7.0'
return CheckCode::Safe("AlienVault version #{version} is not vulnerable")
@@ -70,9 +70,14 @@ class MetasploitModule < Msf::Exploit::Remote
end
hid_res = parse_discovered_response res
unless hid_res
vprint_error 'Unexpected response from target'
return CheckCode::Unknown('Unexpected response from target')
end
if hid_res[:mac].eql? ''
vprint_error 'Malformed response'
return CheckCode::Safe
return CheckCode::Unknown('Received malformed response from target')
end
@mac = hid_res[:mac]
@@ -70,7 +70,7 @@ class MetasploitModule < Msf::Exploit::Remote
if res.blank?
vprint_status 'No reply from server'
return CheckCode::Safe
return CheckCode::Unknown('No reply received from the transcode server')
end
vprint_status "Received response: #{res}"
@@ -64,10 +64,12 @@ class MetasploitModule < Msf::Exploit::Remote
# check if it's a valid port number (1-65534)
if bpd_port && bpd_port >= 1 && bpd_port <= 65535
Exploit::CheckCode::Detected
Exploit::CheckCode::Detected('Target service detected on expected port')
else
Exploit::CheckCode::Safe
Exploit::CheckCode::Safe('Target did not return a valid port number')
end
ensure
disconnect(s1) if s1
end
def execute_command(cmd, opts = {})
@@ -100,7 +100,7 @@ class MetasploitModule < Msf::Exploit::Remote
return Exploit::CheckCode::Safe
end
else # No response
return Exploit::CheckCode::Safe
return Exploit::CheckCode::Unknown('No response received from the target')
end
# Retry with the good node_id
@@ -224,8 +224,8 @@ class MetasploitModule < Msf::Exploit::Remote
end
CheckCode::Safe
rescue StandardError
return CheckCode::Safe
rescue StandardError => e
return CheckCode::Unknown("Unable to determine: #{e.class} - #{e.message}")
end
def brute_exploit(target_addrs)
@@ -87,7 +87,9 @@ class MetasploitModule < Msf::Exploit::Remote
model = sys_description.scan(/Crestron Electronics (AM-100|AM-101)/).flatten.first
case model
when 'AM-100', 'AM-101'
return CheckCode::Vulnerable
return CheckCode::Vulnerable("Detected vulnerable #{model} device")
when nil
return CheckCode::Unknown("SNMP sysDescr did not match a known vulnerable model: #{sys_description}")
else
# TODO: insert description check for other vulnerable models (that I don't have)
# In the meantime, we return 'safe'.
@@ -95,15 +95,15 @@ class MetasploitModule < Msf::Exploit::Remote
ssh = Net::SSH.start(rhost, username, opts)
end
rescue Rex::ConnectionError
return CheckCode::Safe
return CheckCode::Unknown('Connection failed')
rescue Net::SSH::Disconnect, ::EOFError
return CheckCode::Safe
return CheckCode::Unknown('Disconnected during SSH negotiation')
rescue Timeout::Error
return CheckCode::Safe
return CheckCode::Unknown('Connection timed out')
rescue Net::SSH::AuthenticationFailed
return CheckCode::Safe
return CheckCode::Detected('SSH service detected but authentication failed')
rescue Net::SSH::Exception
return CheckCode::Safe
return CheckCode::Unknown('SSH error occurred')
end
CheckCode::Detected('SSH service detected.')
@@ -92,7 +92,7 @@ class MetasploitModule < Msf::Exploit::Remote
'uri' => '/'
})
rescue ::Rex::ConnectionError
return Exploit::CheckCode::Safe
return Exploit::CheckCode::Unknown('Connection failed')
end
fingerprints = targets.collect { |t| t['Fingerprint'] }