CSRF Nasıl Tespit ve İstismar Edilir?

CSRF Nedir?

OWASP Top 10 listesinde bulunan açıkları anlatmaya devam ediyorum. Bugün o listede bulunan CSRF web açığından bahsedeceğim. “Siteler Arası İstek Sahtekârlığı” olarak tanımlanan CSRF açığı; kullanıcıların istekleri dışında işlemler yürütülmesidir. Uygulamaya giden isteklerin hangi kaynaktan ve nasıl gönderildiği ile ilgili denetime tutulmadığı için bu açık ortaya çıkıyor. Bu yazılımcının bilgisizliğinden ya da dikkatsizliğinden kaynaklanıyor olabilir. CSRF sayesinde kişilere istenilenin dışında sunucuya komut yollanmasını sağlayan kodlar gönderilebilir ya da siteye sanki o kullanıcıymış gibi erişerek işlem yapmasını sağlayabilir.

Bu güvenlik açığı, birçok web uygulamasında olduğu için oturum bilgisi son derece yaygındır. Uygulamaya giden isteklerin hangi kaynaktan ve nasıl gönderildiğinin kontrol edilmeyen sistemlerde bu açık meydana gelir. Saldırganların kullanıcının oturumuna erişebilmeleri için sadece phising saldırılarına gerek olmayabilir kullanıcının zararlı bağlantıya tıklaması yeterli olabilir.

 

 

Çoğu site tarayıcı istekleri, kullanıcının oturum çerezi, IP adresi, Windows etki alanı kimlik bilgileri vb. siteyle ilişkili tüm kimlik bilgilerini otomatik olarak içerir. Bu nedenle kullanıcı şu anda sitenin kimliğini doğruladıysa, sitenin mağdur tarafından gönderilen sahte talep ile mağdur tarafından gönderilen meşru bir talep arasında ayrım yapması mümkün olmayacaktır.

Örnek verecek olursak bir kullanıcının banka hesabını incelemekte olan birisinin aynı zamanda yan sekmede maillerini kontrol ettiğini düşünelim. Hedef kişi, saldırgan tarafından gönderilen zararlı bir bağlantıya tıkladığı zaman hedef kullanıcı mail sekmesinde olmasına rağmen saldırgan, hedefin yan sekmesinde açık bulunan banka sayfasına erişebilir. Çünkü hedefin banka sayfasındaki oturumu  aktif olduğu için saldırganın ihtiyacı olan bilgiler tarayıcıda mevcut durumdadır ya da saldırgan hedefin CSRF açığı bulunan bir hesabın kullanıcı şifresini değişmek için link gönderebilir. Şimdi DVWA üzerinde uygulamalı olarak anlatacağım.

 

DVWA’da Uygulamalı CSRF

 

DVWA’ya girip seviyeyi düşüğe getirdikten sonra CSRF sekmesine tıklıyoruz. Burada karşımıza şifre değiştirme sayfası çıkıyor. Burada şifre girip değiştirdiğimiz zaman DVWA’nın varsayılan şifresi “password” ile girdiğimiz şifre değişiyor. Kaynak kodunu incelediğimiz zaman gönderdiğimiz yeni şifreler hiçbir kontrol mekanizmasından geçmeden veritabanına yazılıyor. Bu da CSRF açığı olduğunu gösteriyor.

 

Şimdi şifre değiştirme yerine 6161 yazarak şifremi değiştiriyorum. Arama çubuğuna baktığım zaman password_new=6161&password_sonf=6161&Change gibi devam eden bir kısım görüyorum. Bu kısım bile açıkça CSRF olduğunun göstergesi. Devam edelim, şifrem başarıyla değiştikten sonra sayfa üzerinde sağ tık yapıp View Source diyerek diyerek sayfa kaynağına gidiyorum. İşlemin gerçekleştiği kod parçasını kopyalıyorum. 

Şimdi bir saldırgan gibi düşünüp bu kod parçasını not defterinde saldırıya hazır hale gelecek şekilde düzenliyorum ve html olarak kaydediyorum. Saldırganın genelde bu aşamadan sonra saldırının hemen farkedilmemesi için yapması gereken css koduyla sayfayı süsleyip hedef bağlantıya kurbanın sosyal mühendislik yöntemleriyle tıklamasını sağlamak. 

 

Burada açık bulunan linki form action etiketine ekledim ve yeni şifremin değerini “taha” olarak belirledim. Sayfadaki Tebrikler butonuna tıklandığı zaman “6161” olan şifrem, yeni belirlemiş olduğum şifre ile değişecek.

Bu kısımdan sonra siteye gidiyor ve şifre değiştiriliyor. Saldırgan, saldırının  anlaşılmaması için kullanıcıyı başka bir siteye de yönlendirebilir. Eğer bu aşamaları uygularken DVWA uygulamanızda sorun çıkarsa ip/dvwa/setup.php üzerinden veritabanınızı sıfırlayabilirsiniz.

 

CSRF Önlemleri 

 

Sistem tarafındaki önlemler:

  1. Kullanıcının sisteme gönderdiği talepler POST metoduyla alınmaya çalışılmalıdır.
  2. CSRF’yi önlemek için kullanıcıya rastgele üretilmiş eşsiz bir “token” bilgisi vermektir. CSRF Token olarak adlandırılan bu yöntem şu şekilde çalışır:

a. Web sunucusu bir token oluşturur. (Bu token işlem yapıldıkça yeniden üretilir.

b. Token, formda gizli bir bilgi olarak depolanır.

c. Kullanıcı POST işlemini gerçekleştirir.

d. Token bilgisi POST verilerine dahil edilir.

e. Web uygulaması, sistem tarafından oluşturulan tokeni, talepte gönderilen token ile karşılaştırır.

f. Eğer token verileri eşleşirse, isteğin gerçek kullanıcı tarafından gönderildiği anlaşılır ve istek onaylanır.

g. Eşleşme yoksa, istek reddedilir. Bu sayede kötü niyetli istekler engellenmiş olur.

Kullanıcı tarafındaki önlemler:

  • Çerezleri ve site verilerinizi düzenli olarak temizleyiniz.
  • Bilmediğiniz bağlantılara tıklamamalı. Maillerin kimden geldiğine dikkat etmelisiniz.

 

Kendi web sitenizde açığı aramak istiyorsanız bu videoyu izlemenizi tavsiye ederim.

About The Author

Reply