CSRF/XSRF (Cross-Site Request Forgery)


1- Önsöz
2- Cross Site Request Forgery Nedir?
3- Cross-Site Request Forgery Nerelerde Kullanılır? Ne İçin Kullanılır?
4. Nasıl Kullanılır? - Exploitlenir.
5- XSS ve CSRF Arasındaki Benzerlikler


1-Önsöz


XSRF / CSRF Güvenlik zaafiyetleri günümüzde bir çok yerde mevcuttur.Çok geniş kapsamlı bir açık olmakla birlikte, kullanımı da çok kolaydır aslında.Ama çoğu kimse karmaşık görüp hemen ipin ucunu bırakmışlardır..Çok yanlış çünki bu yolda devam ederken tüm Web Application türlerini öğrenmek bizim yararımıza olur.Tabi misyon dahilinde...
XSRF / CSRF Açıkları aslında aynıdır.Yani XSRF ve CSRF diye ayrılması kafamızı karıştırmasın ..


2- Cross Site Request Forgery Nedir?


Attacker bir web sitesinin kaynak koduna gömülü olan Javascript veya HTML Kodlarını uygun bir exploit haline getirip, kurbanın haberi olmadan session (oturum) bilgilerini elde etmesiyle olur..Bu açığı sadece kurbanın şifrelerini almak diye bakmayalım çünkü bu zaafiyet; para transferi, kredi kartı ++++++lıkları ve birçok kötü emellere alet edilip milletin emeğini çalabiliyor..Burada yapılan tek şey kurbana gönderdiğimiz linke tıklamasıdır. Kurban bunu yaparken olaylardan habersizdir.Tereyağından kıl çeker gibi bilgileri alır attacker.


3- Cross-Site Request Forgery Nerelerde Kullanılır? Ne İçin Kullanılır?


Bu zaafiyet bütün web applicationlarda bulunabilir.Yani ASP,PHP,HTML Sitelerde dahil olmak üzere...
Yukarıda bahsettiğim gibi session bilgilerini çalmak, kredi kartı bilgilerini çalmak ve bir çok kötü amel için kullanılır..


4. Nasıl Kullanılır? - Exploitlenir.


Zaafiyeti exploitleme basittir.Hemen bir örnekle devam edeyim;
Bir Web sayfası hayal edin.Bu Web Sayfasında session şifrelerini değiştirme dosyası olsun.; www.site.com/forum/passwordegistir.php şeklinde..Bu bir forum sitesi olarak düşünün.Siz foruma giriş yaptınız ve şifrenizi değiştirmek istiyorsunuz.Şifrenizi değiştirdiğiniz vakit;


https://www.site.com/forum/passwordde...sword=mahserat


Burada sizin şifreniz mahserat olarak değiştirilmiştir.Yani linkte göreceğiniz gibi burada bir XSRF/CSRF zaafiyeti mevcuttur...Hemen degistirdiğniz şifre linkinin kaynak koduna göz atalım..Kaynak kodundan <form></form> taglarını arayalım.;






Burada gördüğünüz gibi bilgiler GET methoduyla alınmış.GETPOST Methodu tercih edileceği yerde..
Daha sonra kullanıcıdan alınan veri passworddegistir.php dosyası aracılığıyla değiştirilir.


Şimdi biz bunu exloitleyelim, yani kullanılır hale getirelim; şimdi kaynak kodlarını tekrar alıyoruz bir notepad içerisine yapıştırıyoruz.Daha sonra action=”passworddegistir.php” dosyasının tam linkini belirliyoruz.Yani; action=”https://site.com/forum/passworddegistir.php” şeklinde.Daha sonra name=”sifre” kısmına şifremizi yazıyoruz; name=”12345” şeklinde.Değiştirdikten sonra kodlara tekrar göz atalım;






Evet tamamdır.Şimdi bunu .html uzantılı kaydediyoruz ve hostumuza atıyoruz.Sonrasında linki kurbana göndereceğiz..Burada devreye SM (Sosyal mühendislik) giriyor..Sosyal mühendislik bilginizin biraz olması gerekir.Mesela şöyle yedirebiliriz kurbana;


NOT: Kurbanın hoşlandığı tarz yolundan gidersiniz daha iyi sonuç alırsınız.Örnek olarak kurbanımız Play Station oynamayı seven biri biz kurbana bu linki Play Station uygulaması veya oyunu şeklinde yedirebiliriz.Örnek;


Merhaba kardeşim.
Bir Play Station uygulaması geliştirdim.Bir göz gezdirirmisin nasıl olmuş?
Uygulama: https://mahserat.com/dosya.html


Gibisinden bir SM Yöntemi ile yedirebilirsiniz..Burada dosya.html bizim exploitlediğimiz uygun hale getirdiğimiz kodlardır.Tıkladığı anda kurbanın şifresi 12345 olarak değişecek.


5- XSS ve CSRF Arasındaki Benzerlikler


CSRF Saldırısı XSS Saldırısında içine alan bir saldırı tipidir.Yani XSS’in olduğu yerde CSRF açığının olması %80 gibi bir orandır.