CSRF Zafiyeti Nedir, Nasıl Kapatılır?

İnternet, Webmaster
csrf logo
Csrf – Cross Site Request Forgery
  1. Csrf Nedir ?
  2. Csrf ile Neler Yapılabilir ?
  3. Nasıl Gerçekleştirilir ?
  4. Exploiting
  5. Xss ve Csrf Aynı Şey midir ?
  6. Korunma Yöntemleri
    1. Post Modülü Kullanma
    2. Captcha Kullanımı
————————————————————–
Csrf Nedir ?
CSRF, açılımı Cross Site Reference Forgery olan, günümüzde; kodlayıcının, kodlama bilgisi yetersizliğinden kaynaklanan bir güvenlik zafiyetidir. Cross-Site Request Forgery (Csrf – Xsrf – Cross Site Reference Forgery Olarakta
Bilinir) Günümüzde, kodlama bilgisizliğinden kaynaklanan yaygın bir güvenlik zafiyetidir. Site yetkilisinin haberi olmaksızın güvenlik açığını istismar ederek çalışır. Saldırganın herhangi bir web sayfasına yerleştirdiği Js veya Html kodlarıyla yetkilinin oturum bilgilerini çalma olayıdır. Üstte de belirttiğimiz gibi, yetkilinin haberi olmaksızın yapılan bir işlemdir. Bu olayda önemli olan, saldırganın kurban için kodladığı web sayfasını kurban’ın açmasıdır. kurban web sayfasını açtığı takdirde, session (Oturum) bilgileri – saldırganın kurnazlığına bağlıdır biraz da – saniyeler içerisinde kurbana fark ettirmeden değiştirilebilir.

Zafiyetin kaynaklandığı bölümü kullanma becerisi tamamen korsanın meziyetli yahut akıl dolu zekâsına kalmıştır, birçok senaryo uydurulabilir ve kurban bunların her birini kolayca yutabilecek düzeyde bir insansa, işlemi kolay bir biçimde gerçekleştirebilir.

Csrf ile Neler Yapılabilir?
Yetkilinin oturum bilgilerini kurnaz bir biçimde ele geçirdikten sonra korsan, kurbanı tamamen sistemden saf dışı ederek sisteme dahil olur ve kontrol mekanizmasını elinde tutar. Örneğin, sistem içerisinde bir banka sitesi barındırıyorsa ve csrf zafiyeti kullanılarak banka yetkilisinin bilgileri alınmış ise, pek çok kötü şey yapılabilir. Yahut sistem önemsiz bir yer de olsa, bilgilerin çalınması ve kurbanın saf dışı bırakılması burada önemli bir kaidedir.

3. Nasıl Gerçekleştirilir?
Daha önceden de belirtildiği üzere, bu zafiyet korsanın gerçekleştirdiği işlemler sonucunda aktif olur ve sisteme tekrar giriş sağlayıp başarısız oluncaya dek sistem kurbanının bu durumdan haberi olmaz. Nasıl gerçekleştiği konusu işin biraz çetrefilli, biraz da öğrenmeniz gereken konusudur. Bilinçli olduğunuz vakit bu tür saldırıların önüne kolayca geçebilmeniz mümkündür.
Bir site hayal edelim.
DemoVuln.Com/Passwd.php
Bu sayfa, bir sitenin kullanıcı şifresini değiştirmeye yarayan sayfa olsun. Kullanıcının şifresini değiştirdiğini düşünürsek, php dilinde, get methodu ile yazılmış bir sayfada tepki enter tuşuna basıldığı vakit şu şekilde gerçekleşecektir:
DemoVuln.Com/Passwd.php?pass=yenisifre
Görüldüğü üzere url direkt olarak yansıdı ve yeni şifremiz “yenisifre” olarak tarayıcıda dahi belirdi. Bu, en basit php yazma methodudur ve günümüzde pek az kullanıcı tarafından kullanılır. Yine de, konuyu anlamanız açısından en basit yoldan anlatmak istiyorum. Biraz daha açıp, kaynak kodlarımıza göz gezdirdiğimizde, şöyle bir şey çıkar karşımıza.
<Form Method="Get" Action="Passwd.php">
<Input Type="Text" Name="pass" />
<Input Type="Submit" Name="Submit" Value="Submit" />
</Form>
Şimdi dilerseniz kodları da sizlerin anlaması açısından biraz daha açalım.
* Tarayıcı, sunucudan öncelikle “get” methodu ile bilgileri çekiyor.
* Passwd.php adlı dosya çalışıyor.
* Form, Passwd.php dosyasına göre hareket ederek verileri çekiyor. Passwd.php sayfasından alınan, yani input type’a gönderilen şifre bizim database’îmizde değiştiriliyor.
3.1. Exploiting
Exploiting aşaması biraz daha korsanı ilgilendiren bir konu, zafiyetin exploit edilmesi, yani bir kod dizinine uyarlanıp kullanıcının bir şekilde kandırılması olarak kullanabiliriz exploiting konusunu, bu zafiyette. Örneğin, temiz, güzel bir web sayfası yaratarak ve hedef kullanıcımızı bu web sayfasına yönlendirerek bu işi kolayca halledebiliriz. Bu konuyu biraz daha kısa kesmeyi düşünüyorum zira korsan tarafını ilgilendirdiğinden bizim için pek de alakalı olmayacak konular ve kodlar içerecek. Öğrenmek isteyenler belli mecralarda bu zafiyetin korsan tarafından ayrıntılı olarak nasıl kullanılabildiğini kolayca öğrenebilirler.
4. Cross Site Scripting ve Cross Site Request Forgery Aynı Şey midir ?
Elbette, değildir. XSS, yani Cross Site Scripting‘de yetkiliyle ilgilenilmez, yani bire bir herhangi bir hedef yoktur. Sistemdeki zafiyet, bire bir herhangi birini oltaya getirmeye gerek kalmaksızın sömürülebilir. Ancak CSRF zafiyetinde bire bir, sistemde yetkili bir hedef bulmak gereklidir. CSRF, kurbanın uyanık olacağı, korsanın ise kurnaz olacağı yahut olması gerektiği bir yöntemdir ve iki tarafın da belli başlı ön hazırlıklar yapmasını gerektirir. XSS’de ise, söylediğimiz gibi tamamen sistemdeki zafiyeti herhangi bir kaynak bulmaksızın, yararlanılabilir. Son not olarak kaynak kodlarında XSS zafiyeti bulunan her sistemin aynı zamanda CSRF zafiyeti içermesinin yüksek bir ihtimal olduğunu da not düşelim.
5. CSRF zafiyetinden Korunma Yöntemleri
5.1. Post Modülü Kullanma
Günümüzde belli başlı küçük sistemlerde işe yarasa da, yine de küçük sistemler için hayat kurtarıcı bir methoddur. Saldırgan “get” modülü yerine “post” modülü kullanıldığında tarayıcı üzerinde şifrenin değiştiğini göremeyince işin başarısız olduğunu zannedebilir. Ancak bu sadece yeni yetme saldırganlar için geçerlidir ve derine inen pek çok uzman saldırgan da vardır. Bu gibi durumlarda post methodu yetersiz kalır ve yeni şeyler aramak zorunda kalırsınız.
5.2. Captcha Kullanımı

Captcha kullanımı sadece korsandan değil aynı zamanda bot ve zararlı yazılımlardan da sisteminizi koruyan bir yöntemdir ve bu tür durumlarda kullanılması önemlidir.



Comments

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.