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']
}