Asp.NET Core – Open Redirection Attacts

Merhaba,

Bu içeriğimiz bir Asp.NET Core uygulamasında Open Redirection Attacts olarak isimlendirilen saldırının nasıl ve hangi şekillerle gerçekleştirildiğini inceleyecek ve korunma yöntemlerini irdeleyeceğiz.

Open Redirection Attacts Saldırısı Nedir?
Open Redirection Attacts, kullanıcıların yönlendirildiği operasyonlarda kötü niyetli kişiler tarafından farkında olmaksızın yanıltıcı adreslere yönlendirilerek kullanıcı bilgilerinin çalınmasını amaçlayan bir saldırı çeşitidir. Genellikle kullanıcının yetkisiz erişim sağlamaya çalıştığı sayfalar tarafından login sayfasına yönlendirilerek yapılan giriş işlemi neticesinde tekrar ilgili sayfaya otomatik yönlendirilmesi durumlarında meydana gelmektedir. Saldırgan bu sayfaların bir modelini oluşturarak kullanıcıya bir şekilde ulaştırabilir ve kullanıcının verilerini bu model üzerinden elde edebilir.

Bunun için hepsiburada.com sitesinden gerçek hayata dair bir örnek verebiliriz.
Asp.NET Core - Open Redirection Attacts
Yandaki görseli incelerseniz eğer herhangi bir ürünü beğenebilmeniz için oturumunuzun açık olması gerektiğinden dolayı sizi giriş sayfasına yönlendirmektedir. URL’e bakarsanız ‘ReturnUrl’ query string değerini görürsünüz. Burada hangi üründen login sayfasına geldiğinize dair url bilgisi tutulmaktadır ve giriş başarılı olduğu taktirde yine o sayfaya yönlendirme işlemi yapılmaktadır.

İşte burada kötü niyetli kişi devreye girmekte ve geri dönüş değeri tasarımsal açıdan hepsiburada.com login sayfasıyla birebir aynı olan kendi tasarladığı siteye kullanıcıyı yönlendirecek şöyle bir link eriştirmektedir.

https://www.hepsiburada.com/uyelik/giris?ReturnUrl=https%3A%2F%2Fwww.hepsiburada1.com%2Fyuzuklerin-efendisi-yuzuk-kardesligi-j-r-r-tolkien-p-KMETIS0016%23likeProduct

Bu linki kâh çekici bir içeriğe sahip mail üzerinden kâh forumlarda yahut bloglarda yaptığı herhangi bir paylaşım üzerinden hepsiburada.com kullanıcılarına eriştirilebilir. Saldırgan bir şekilde ağını kurup gerekli tertibatı gösterdikten sonra avın ağa yakalanmasını beklemeye çekilecek, sabredecektir.

Eğer ki ağa takılan bir kurban olurda linke tıklarsa bundan sonraki süreç şöyle seyredecektir. Kurban ilgili link üzerinden hepsiburada.com oturumunu açtığı taktirde ‘hepsiburada1.com’ isimli siteye yönlendirilecek ve kullanıcıdan tekrardan kullanıcı adı ve şifre istenecektir. Haliyle tasarım birebir aynı olacağından dolayı kullanıcı tekrardan giriş bilgilerini yazacak ve kötü niyetli kullanıcıya farkında olmaksızın oturum bilgilerini teslim etmiş olacaktır. Tabi kötü niyetli kişi bu süreçte herhangi bir şüpheye yer bırakmazcasına kurbanı gerçek siteye yönlendirecek, ee zaten bir önceki girişte oturum bilgileri esasen doğru olacağı için kullanıcı hiçbir şeyden habersiz internet gezintisine devam edecektir..

Geçmiş olsun…

Bu saldırı kötü niyetli kişi tarafından sitedeki işleyiş üzerindeki bir mekanizmaya yapılan manevratik hamle ile gerçekleştirileceğinden dolayı neticede oluşacak veri kaybının yahut kullanıcıya yansıtılacak ekonomik bir zararın sorumlusu büyük oranda sitenin sahibi ve geliştiricileri olacaktır. Evet, büyük oranda site tarafı olacaktır lakin bu durum kullanıcıların her önlerine gelen maildeki veya sayfadaki linke tıklamanın sorumsuzluğunun meşruluğu anlamına gelmemekte, internette gezerken bilinçli olmanın ve belirli bir seviyede internet okur yazarlığının şart olduğunu göstermektedir.

Dolayısıyla bu saldırıya karşı gerekli önlemi web geliştiricileri almalı ve kullanıcılara gönül rahatlığıyla işlem yapabilecekleri bir ortam sunmalıdırlar. Tabi kullanıcılarda bahsedilen gerekli nitelikler için çabalamalı ve internetteki her güvenliğin bir zaafiyeti olabileceğini düşünerek ona göre kişisel bilgilerini paylaşmalı ve popüler dahi olsa bildiği ve kullanmayı tercih ettiği web sitelerine bir yerden ya da mailden yönlendirme olmaksızın direkt olarak tarayıcı adres çubuğundan manuel olarak erişim sağlamalıdır. Yaşayan bilir lakin yaşamayanların kulağına küpe olsun 🙂

Open Redirection Attacts Saldırısına Karşı Nasıl Önlem Alınır?
Esasında bir saldırıya tespit edilenden ziyade aklınıza gelen -makul oldukça- tüm önlemleri almanız gerekmektedir. Şahsen sizlere bu saldırıya karşı iki yöntem sunacak olsamda sizler tabii ki kullandığınız web teknolojisinin yahut mimarisinin sizlere sunmuş olduğu yapıları veya kütüphaneleri kullanabilir ya da third party kütüphanelerle hayaliniz doğrultusunda muazzam önlemler alabilirsin.

İlk olarak alacağınız önlem ‘ReturnUrl’ dönüş parametresinin barındırdığı değerin kesinlikle web uygulamasıyla aynı origin’e sahip olup olmadığını doğrulamanız gerekmektedir. Bunu onlarca farklı yöntemle gerçekleştirebileceğiniz gibi Asp.NET Core MVC uygulamalarında ‘Url.IsLocalUrl’ kontrolüyle gerçekleştirebilirsiniz.

        public IActionResult Login(string ReturnUrl)
        {
            if (Url.IsLocalUrl(ReturnUrl))
                return Redirect(ReturnUrl);
            return Redirect("/");
        }

İkinci alternatif yol ise Two Factor Authentication ile iki aşamalı doğrulama yapılarak kullanıcı girişlerinin gerçekleştirilmesidir. Kötü niyetli kişi her ne kadar kullanıcı bilgilerini elde etmiş olsa dahi web uygulamasında oturumu açabilmek için artık kullanılan ikinci aşamadaki doğrulama teknolojisine göre kullanıcının email ya da telefonunu elde etmesi gerekmektedir. Haliyle bu durum kullanıcıyı kaçırmaktan başka çare bırakmayacağı için kötü niyetli kişinin işini oldukça zorlaştırmaktadır.

Konuya dair inceleme için Two Factor Authentication yöntemlerinden biri olan Google & Microsoft Authenticator İle Two Factor Authentication başlıklı yazımı okuyabilirsiniz.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*