spacer.png, 0 kB
Bilgi için: bilgi at bilgiguvenligi gov tr   

 

spacer.png, 0 kB
spacer.png, 0 kB
Directory Listing (Dizin Listeleme) Yazdır E-posta
Emre SÜREN, TÜBİTAK BİLGEM   
18.06.2011

Directory Listing, bir web uygulamasının sahip olduğu dizin bilgilerinin tarayıcıda listelenmesi özelliğidir.

Standartlara uygun olarak geliştirilmiş web uygulamalarında, listelemesi yapılabilecek dizinlerin sadece istemciyi ilgilendiren kaynakları, bir başka deyişle sayfa arayüz kodlarını (html, jsp, asp, php gibi) ve kaynaklarını (css,  javascript, resim gibi) içermesi beklenir. Daha kötü bir senaryoda ise bu dizinlerin yapılandırma ayarlarını, bağlantı bilgilerini ve hatta servis katmanların kaynak kodlarını içeriyor olması düşünülebilir. Gerçek hayatta iki durumla da sıklıkla karşılaşılır. Bu özelliğin unutularak aktif bırakıldığı durumlarda,  güvenlik  dizinlerin içeriğine göre tehlikeli boyutlara ulaşabilir. Ticari bir uygulama söz konusuysa, en azından kaynak kodların ele geçirilmesi durumundan bahsedilebilir. 

Aslında directory listing özelliği uzun bir süre için web uygulama sunucularında ön tanımlı aktif olarak geliyordu. Mesela Tomcat Web Container 2011 yılında 7 sürümündedir ve 5 serisine kadar olan tüm sürümlerde bu özellik aktifti. Diğer taraftan, bu durum birçok web uygulama geliştiricisi için de debug (kod ayıklama) aracı olarak kullanılmaktaydı. Yazılımcılar uygulamalarını test ederken, bu özelliği kullanarak tarayıcı üzerinden servlet isimlerine bakabiliyorlardı. Artık directory listing güvenlik zafiyeti olarak değerlendirildiği için, bu özellik ön tanımlı olarak pasif geliyor.

Directory listing özelliği aktif olan bir sunucuda, uygulamanın tarayıcıda çağrılması sonucu karşılaşacağımız ekran görüntüsü aşağıdaki gibi olacaktır. Tarayıcıda uygulamanın her hangi bir alt dizini değil, doğrudan domain ismi çağrılmıştır. Bu durumda uygulama sunucusu üzerinde ana sayfa olarak ne tanımlıysa o sayfanın görüntülenmesi beklenir. İşte tam bu noktada directory listing devreye girer. Eğer web uygulamanız için bir anasayfa ismi tanımladınız fakat tanımlı bu dosya kök dizinde yoksa dizinleriniz aşağıdaki gibi listelenecektir. Burada üç bilgi; dizin ismi, boyut ve son güncellenme zamanı verilmektedir. Aşağıda görüldüğü gibi kök dizinde (Directory Listing For /) dizin dosya ayırımı yapmaksızın ne varsa listelenmiştir.  

resim-1.jpg
Resim 1 - Dizin listelemesi için örnek ekran görüntüsü  

Buradaki örnek basitlik ve en üst dizin olması açısından ana sayfa olarak verildi, ama diğer bilinen dizinlerin çağrılması durumunda da dizin listelemesi yapılabilecektir. Örnek: http://localhost:8080/tomcat-directory-listing/serbest

Tomcat Web Container için Directory Listing

Tomcat java tabanlı uygulamalarda web (jsp/servlet) container olarak kullanılır. Yazının devamında anlatılacaklar Tomcat 5 sürümünde olan kullanıcılar için bu özelliği kapatma, sonrası kullanıcılar için ise ihtiyaç halinde aktifleştirme olarak kullanılabilir. Uygulama tarafına bakarsak, istemci ile alakalı kodlar WebContent dizininin altındadır.

resim-2.jpg
Resim 2 - Örnek projenin dizin yapısı

Bu uygulamanın ana sayfası web.xml konfigürasyon dosyasında aşağıdaki gibi tanımlanmıştır.

resim-3.jpg
Resim 3 - Ana sayfa tanımı

Tarayıcıda uygulama çağrıldığında, sunucu tarafından ana sayfa olarak WebContent altında index.html yada index.jsp dosyaları aranır. Herhangi biri bulunursa anasayfanın içeriği görüntülenecektir, aksi durumda directory listing aktif ise dizinler listelenecek, pasifse 404 kodlu sayfa bulunamadı hata mesajını içeren bir sayfa verilecektir.

Directory listing özelliği nasıl pasif yapılır sorusunun cevabı, aşağıdaki servlet tanımıdır.

resim-4.jpg
Resim 4 - Directory Listing özelliğini kontrol eden konfigürasyon

Çözüm iki farklı şekilde yapılabilir. Uygulama bazında directory listing özelliğini pasif etmek için Tomcat’e ait olan web.xml dosyası içerisinde tanımlı olan default isimli servlet override edilir. Bunun için uygulamanın kendi web.xml dosyası içerisinde yukarıdaki servlet tanımı aynen yapılır. Bu çözüm local bir çözümdür yani sunucuda çalışan diğer uygulamaları etkilemeyecektir.

İkinci çözüm ise, sunucuda çalışan tüm uygulamaların directory listing özelliğinin pasif edilmesi durumudur. Bunun için her uygulamanın web.xml dosyasında local işlemler yapmak yerine, sadece Tomcat'e ait web.xml (global) dosyasında değişiklik yapmak yetecektir. Burada tanımlı olan default isimli servletin listings parametresi false olarak değiştirilir. Bu özellik Tomcat 5'e kadar true, sonrası sürümlerde false olarak ön tanımlıdır.

Görüldüğü gibi Tomcat Web Container için directory listing özelliği sadece bir parametre ile kontrol edilir. Default isimli servlet'in listings parametresinin değerini değiştirmek yada override edebilmek gibi basit ve esnek çözümlerle directory listing kontrol edilebilir.

Referanslar

[1] http://tomcat.apache.org/tomcat-5.5-doc/default-servlet.html


Favori olarak ekle (1) | Görüntüleme sayısı: 1292

Bu yazıya ilk yorumu yazın

Sadece kayıtlı kullanıcılar yorum yazabilir.
Lütfen sisteme giriş yapın veya kayıt olun.

 
spacer.png, 0 kB
spacer.png, 0 kB
Copyright 2012 TÜBİTAK-BİLGEM. Sitenin teknik altyapısında Joomla kullanılmıştır. Yazar ve site referans gösterilmeden alıntı yapılamaz. Görüşleriniz
spacer.png, 0 kB