Metasploit Dizi İşleme Desteği


OpenNetAdmin için exploit geliştirirken aynı parametre ile birden fazla değer gönderilmekteydi.

vars_post = {
      'xajax'       => 'window_submit',
      'xajaxargs[]' => 'tooltips',
      'xajaxargs[]' => 'ip%3D%3E;#{filter_bad_chars(cmd)};',
      'xajaxargs[]' => 'ping'
    }

Fakat Metasploit’te vars_post kullanılırken değerler hash olarak alındığı için yukarıdaki gibi gönderilmeye çalıştığında hata ile karşılaşılmaktaydı ve giden istek xajax=window_submit&xajaxargs%5B%5D=ping şeklinde gözükmekteydi.

client_request.rb dosyasında yapmış olduğum değişiklik ile post atılırken dizi işleme desteği eklenmiştir.

opts['vars_post'].each_pair do |var,val|
  var = var.to_s
  unless val.is_a?(Array)
    val = [val]
  end
  val.each do |v|
    v = v.to_s
    pstr << '&' if pstr.length > 0
    pstr << (opts['encode_params'] ? set_encode_uri(var) : var)
    pstr << '='
    pstr << (opts['encode_params'] ? set_encode_uri(v) : v)
  end
end

vars_post içerisinde gelen anahtar-değer çifti ‘var’ ve ‘val’ olarak alınmıştır. var string’e çevrilip val’ın dizi olup olmadığı kontrol edilmiştir. Eğer dizi değil ise diziye çevrilmiştir.

val dizisi v olarak döngüde kullanılıp gelen her değer string’e çevrilip anahtar ile birleştirilip “pstr” değişkenine atanmıştır.

Metasploit aşağıdaki gibi aynı parametre ile gönderilecek değerleri dizi olarak da kabul etmeye başlamıştır.

vars_post = {
      'xajax'          => 'window_submit',
      'xajaxargs[]' => ['tooltips', 'ip=>;#{cmd};', 'ping']
    }




Onur ER
Onur ER
Onur ER
comments powered by Disqus