31 Ocak 2014

Doğrulanmayan yönlendirme ve iletme açıklığı

Posted by: Fırat Celal Erdik 31 Ocak 2014
İlgili açıklık OWASP listesinde en sık karşılaşılan web uygulama güvenlik açıklıkları listesinde 10. sırada bulunmaktadır. Unvalidated Redirect ve Unvalidated Forward işlemleri birbirinden farklı iki durumdur. Temelde redirect işleminde uzak bir uygulamaya erişim gerçekleştirilirken, forwarding işleminde local uygulamanın bir dosyasına erişim söz konusudur.

Doğrulanmamış yönlendirmeler ile mevcut uygulama parametreleri değiştirilerek uygulamanın farklı içeriklere yönlendirilmesi sağlanılabilmektedir. Zararlı yazılım bulaştırma veya sosyal mühendislik yöntemleri kullanılarak çeşitli saldırılar gerçekleştirilebilir. Temelde kullanıcı girdilerinin kontrolsüz kullanımından kaynaklanmaktadır. Girdilerin önceden oluşturulmuş bir whitelist içeriği ile kıyaslanarak yönlendirme işlemine tabi tutulması gerekmektedir.
Test edilen bir web uygulamasının ilgili açıklığı barındırıp barındırmadığının tespiti için temelde bakılması gereken noktalar aşağıdaki gibidir.

1.  Kaynak koda erişim mümkünse mevcut parametrelerin yaptığı yönlendirme için bir whitelist oluşuturulup oluşturulmadığı incelenebilir. Sadece whitelist içersindeki bağlantılara yönlendirme gerçekleştirilsin gibi bir geliştirme yok ise uygulama açıklığı barındırdığı söylenebilir.
2.     Uygulama crawl edilerek http response kodları incelenerek redirect yapılan bölümler tespit edilebilir. En sık kullanılan yönlendirme http response kodu 302’dir. 300-307 arasındaki kodlardan herhangi biride kullanılabilmektedir. İlgili http response kodlarından biriyle karşılaşılması durumunda farklı girdiler sisteme sağlanarak açıklık test edilebilir.
3.     Kod denetimi yapılmadan doğrudan uzak bir göz ile uygulama test edilmekte ise doğrudan mevcut tüm parametreler için yönlendirme veya forwarding yapılıp yapılmadığı incelenmeli. Bu şekilde açıklığı barındıran parametreler tespit edilebilir.

Aşağıdaki URL üzerindeki ‘r’ parametresinin ilgili açıklığı üzerinde barındırıp barındırmadığının tespiti için referans gösterilen bağlantı değiştirilerek yönlendirmenin yapılıp yapılmadığı tespit edilebilir.

URL: http://testphp.vulnweb.com/redir.php?r=http://www.networkpentest.net/

Doğrulanmamış bir yönlendirmeye açık bir uygulama aşağıdaki gibi farklı bir uygulamaya yönlendirme gerçekleşecektir. Biz örneğimizde networkpentest.net domainine yönlendirdik.



Bu tarz açıklıklar istismar edilerek kullanıcıların çeşitli zararlı yazılımlar içeren sitelere yönlendirilmeleri sağlanabilir. Bu şekilde zararlı yazılımların kullanıcı bilgisayarlarına bulaştırılarak sistemler ele geçirilebilir.  Veya çeşitli sosyal mühendislik saldırıları(eposta, sosyal paylaşım siteleri vs.) ile kullanıcılara bu bağlantılar ziyaret ettirilerek NTLM auth. benzeri kimlik doğrulama ekranları çıkarılarak kullanıcı hesaplarının girilmesi sağlanabilir.
Örneğimizde masum kullanıcı testphp.vulnweb.com sitesine girdiğini düşünerek karşılaştığı uyarı ve kullanıcı hesabı talep eden sayfalara güvenerek çeşitli bilgilerini paylaşabilirler. Veya sistemine zararlı bulaştırabilir. Benzer bir durum aşağıda gerçekleştirilmiştir.

URL: http://testphp.vulnweb.com/redir.php?r=http://www.saldirgandomain.com/givemeyourpass



 Bağlantısı ziyaret edildiğinde testphp.vulnweb.com uygulamasından bağımsız bir uygulamanın kullanıldığı görülebilir.

Bu şekilde bir saldırı ile kullanıcıdan domain kullanıcı adı ve parolası talep edilebilir. Buraya kadarki bahsedilenler doğrulanmayan bir girdinin uygulamada yönlendirme(redirect) işlemi gerçekleştirme işlemine değinildi. Birde uygulamanın belli bir parameter ile forward(iletme) işlemini gerçekleştiren uygulama parametrelerinin mevcut olduğu doğrulanmayan iletimlerin sebep olduğu güvenlik açıklıkları mevcuttur. Burada ki işlem yönlendirmenin aksine uygulamanın parametre olarak aldığı dosyaya iletilmesi işlemidir.  Aşağıdaki örnekte ilgili bağlantı uygulamayı index.php dosyasına iletilmektedir.


URL: http://testphp.vulnweb.com/forward.php?r=index.php

Bu bağlantı gerekli erişim kontrollerinin sağlanılmamış olması durumunda kimlik doğrulama gerektiren sayfalara yetkisiz erişimlere sebep olabilmektedir.

Manipule URL: http://testphp.vulnweb.com/forward.php?r=admin.php

Aşağıdaki gibi bir kullanım ile uygulama üzerindeki admin.php dosyası çağrılarak uygulamanın admin paneline erişim elde edilebilir.

Bu türdeki güvenlik açıklıklarını önlemek için olabildiğince redirect ve forwarding işlemleri kullanılmamaya çalışılmalıdır. Kullanılması gerekmesi durumunda whitelist benzeri bir listedeki bağlantılara yönlendirme gerçekleştirilmeli bunun dışındakiler için farklı bir eyleme tabi(anasayfaya yönlendirme,hata mesajı vs.) tutulmalıdır. Forwarding işlemlerinde ise kullanıcıların erişmeye çalıştığı sayfaların yetkilendiri dahilinde olup olmadığı control edilmeli aksi durumda kimlik doğrulama işlemine tabi tutulmalıdırlar.
Makalelerin kötüye kullanım kullanıcının sorumluluğundadır. | networkpentest.net. Blogger tarafından desteklenmektedir.