Metasploit Exploit Geliştirme - 3


HTTP istekleri göndermek

Modül yazarken HTTP istekleri göndermemiz ve cevabını alıp ayrıştırmamız gerekebilir. HTTP istekleri gönderebilmek için include Msf::Exploit::Remote::HttpClient satırı modüle eklenmelidir.

send_request_cgi({
	'method'   => 'GET',
	'uri'      => '/index.php',
	'vars_get' => {
		'parametre1' => 'test1',
		'parametre2' => 'test2'
	}
})

Yukarıdaki örnekte örnek bir GET isteği gösterilmiştir. Örneğin test/index.php gibi bir url oluşturulamaya çalıştığımızda / işaretleri bazen çift konulabilmekte veya eksik kalabilmektedir. Bu durum sık yapılan hatalardandır. Güvenli şekilde url oluşturabilmek için normalize_uri kullanılır.

1 – Çalışan uygulama bir dizin altında çalıştığı zaman bunu belirtmek için TARGETURI datastore’a kaydedilir.

register_options(
	[
		OptString.new('TARGETURI', [true, 'Varsayılan Dizin', '/uygulama/'])
	], self.class)


res = send_request_cgi({
	'method'   => 'GET',
	'uri'      => normalize_uri(target_uri, 'admin', 'login.php'),
				# "/uygulama/admin/login.php" döndürür.
	'vars_get' => {
		'parametre1' => 'test1',
		'parametre2' => 'test2'
	}
})

Örnek bir POST isteği de alttaki gibidir.

res = send_request_cgi({
	'method'   => 'POST',
	'uri'      => normalize_uri(uri, 'admin', 'login.php'),
	'vars_post' => {
		'parametre1' => 'test1',
		'parametre2' => 'test2'
	}
})

HTTP Response ayrıştırma

Gelen response objesini res değişkenine atadık.

data = res.body

ile response’un body kısmını alabiliriz. HTTP yanıtını string olarak almak istersek

raw_res = res.to_s

ile alabiliriz.

Nokogiri kütüphanesi ile HTTP response’unu parçalayarak istediğimiz kısımı alabiliriz.

html = res.get_html_document
greeting = html.at('div')

Örnekte div tag’ı olan yerler bulunmuştur.

https://github.com/rapid7/metasploit-framework/wiki/How-to-parse-an-HTTP-response

surum = res.body.scan(/Version  = "(.*?)"/).flatten.first.to_s

Yukarıdaki örnekte Version = “2.3.4” geçen yer response içerisinde bulunarak 2.3.4 değeri surum değişkenine atanmıştır.

Burp Suite ile çalışma

Burp Suite, HttpClient kullanarak bir modül geliştirirken HTTP trafiğini incelemek veya değiştirmek içinde kullanışlı bir araçtır. Bunu yapmak için:

  1. Burp Suite’i çalıştırın.
  2. Çalışmak istediğininiz modülü use ile seçin.
  3. set Proxies HTTP:127.0.0.1:8080
  4. Modül çalıştırıldığında HTTP trafiğinine müdahale edebilmelidir.




Onur ER
Onur ER
Onur ER
comments powered by Disqus