Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Canyoupwn.me ~

TR | URL Redirect

URL Redirect

URL Redirect (URL Yönlendirme), basit fakat önlem alınmadığı takdirde özellikle firmalar için büyük risklere sebep olan bir zafiyettir. Sistem tarafında kontrol sağlanmayan bir inputa saldırgan tarafından gönderilen zararlı siteye yönlendirme isteği ile zararlı sitenin kullanıcının karşısına çıkmasına yol açabilir.

Öncelikle bazı programlama dillerindeki güvensiz URL yönlendirmelerine örnekleri inceleyelim.

Aşağıdaki Java kodu URL parametresi ile gelen değeri direk olarak yönlendirme işlemine tabi tutar.

response.sendRedirect(request.getParameter("url"));

Benzer işlem PHP dilinde aşağıdaki gibi yapılabilir.

$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);

Aynı işlemin C#.NET ortamında kullanış şekli aşağıdaki gibidir.

string url = request.QueryString["url"];
Response.Redirect(url);

Bunlara ek olarak ASP.NET MVC 1 ve 2 sürümleri bu zafiyete oldukça elverişlidir. Eğer zafiyetten korunmak istiyorsanız sürümü en az 3 yaparak kendinizi koruma altına alabilirsiniz.

Eğer yönlendirilecek URL’in durumu ile ilgili doğrulama ya da ek denetim yöntemleri uygulanmazsa aşağıdaki gibi bir kod parçası saldırıya karşı savunmasız kalacaktır. Herhangi bir güvenlik önlemi alınmadığı takdirde bu gibi URL’ler ile birlikte sitenizin kullanıcılarını saldırgan tarafından kötü amaçlı sitelere yönlendirmiş olursunuz.

http://demo.com/demo.php?url=http://zararlı.com

Dikkatli olmayan bir kullanıcı orijinal siteye gittiğini sanarak linke tıklayarak farkında olmadan zararlı siteye girmiş olur.

Bu URL yönlendirme zafiyetinden korunmak için ve güvenli şekilde gerçekleştirmek için çeşitli önlemler alınabilir.

Öncelikli olarak gerekmedikçe bu yönlendirme işleminden kaçınılması gerekmektedir.

Kullanılmasının gerektiği durumlarda kullanıcılardan yönlendirme işleminde kullanılacak olan URL’in girişi için herhangi bir alan bırakılmamalıdır.

Bunun olduğu durumlarda ise alınan verilerin düzgün doğrulama işlemlerinden geçirilmesine özen gösterilmelidir.

Doğrulama işlemlerine ek olarak girilen URL’in uygulama içerisinde olup olmadığı ve o kullanıcının bu yönlendirmeye yetkisi var mı kontrol edilmelidir.

Bu doğrulama işlemi için güvenli URL yönlendirmelerin bir whitelist ya da regex şeklinde oluşturulup girişlerden gelen değerlerin bunlar ile karşılaştırması tercih edilebilir.

Son olarak bütün yönlendirme işlemlerinden önce kullanıcılara siteden ayrıldığına dair bir sayfaya yönlendirip bu durumu kabul etmeleri durumda yönlendirme işlemi gerçekleştirmeyi deneyebilirsiniz.

About Ali TONKAZ

Sakarya Üniversitesi