9 Eylül 2016 Cuma

Web Uygulaması Güvenliği - Cross Site Request Forgery









Cross site request forgery (CSRF), gerçek tehlikesini XSS ile birleştiği takdirde gösterir. Buna rağmen, eğer sayfada başka bir açık yoksa CSRF açığını istismar etmek için sosyal mühendisliğe başvurulur.

Ve sosyal mühendislik dünyası, apayrı bir dünya...

Saldırının nasıl gerçekleştiğine örnek vermek için çok sevdiğim Ramiz'i kullanacağım:


Kendisi geçen hafta yeni bir 'Kelliğe Son!' ürünü kullanmaya başladı. Ramiz, bankasının web sayfasına gidiyor ve giriş yapıyor. Üstelik başka banka Ramiz'e kredi vermediğinden kendisi Dertli-Bank'ı kullanıyor.

Dertli-Bank'ın web sayfasında da CSRF açığı olduğunu hepimiz biliyoruz.

Ramiz güncel bakiyesinin 0.3 TL olduğunu öğrenmekle meşgulken, kendisine Facebook'tan bir bildirim geliyor. Facebook arkadaşının tatlı köpek videosu olduğunu iddia ettiği linke tıklıyor.

İşte 'Hack' tam da burada gerçekleşiyor:

Ramiz linke tıklar tıklamaz, saldırganın yapılandırdığı web sitesine yönlendirilir ve giriş yapmış olduğu web sitesindeki son 3 kuruşunu da hacker'a kaptırıyor.

Peki bütün bunlar nasıl oluyor...?

Saldırgan Ramiz'i bir hafta kadar takip ettikten sonra, Facebook arkadaşının hesabını ele geçiriyor, sonra da zararlı bir web sitesi yapılandırıyor.

Ramiz zararlı web sitesini ziyaret eder etmez, zararlı web sitesinde bulunan request, Ramiz'in oturumundan Dertli-Bank sunucusuna gönderiliyor.

İşi biraz daha tekniğe dökecek olursak,

Aşağıda yönetici parolasını değiştirmek için kullanılan web sayfasının kaynak kodundan bir kesit yer almaktadır:

Kaynak kod aşağıdaki gibi değiştirip başka bir web sayfası oluşturmakta kullanılır:

Böylelikle sayfada oturum açmış olan kişi zararlı sayfayı ziyeret ederse, kullanıcı parolası 'parola' değerine değiştirilmiş olacaktır. Kısacası: web sayfasında izin verilen yasal bir işlem, kullanıcının isteği dışında gerçekleşmiş olacaktır.

Yanlış yapılandırılmış web uygulamasının kaynak kodu aşağıdadır:


Web uygulamasının kaynak kodu aşağıdaki gibi değiştirildiğinde saldırı geçersiz olacaktır.


Her uygulama farklı olduğundan, her uygulamaya sıfırdan yaklaşılmalıdır. Bugün bu uygulamayı CSRF saldırılarına karşı güvenli yapan yöntem başka bir web uygulaması için geçerli olmayabilir.

Web uygulamalarında 'AntiForgeryToken’ kullanımı, web uygulamalarını CSRF saldırılarına karşı daha güvende yapacaktır.

Bir sonraki bölüm: Authentication Bypass
on 09 Eylül by Berk Cem Göksel |   Edit