Genel Bakış
Dizin listeleme (dizin tarama veya dizin gösterimi olarak da bilinir), bir web sunucusu; varsayılan dizin dosyası (örn. index.html, index.php) bulunmadığında ve dizin listeleme açıkça ya da örtük olarak etkinleştirildiğinde, o dizindeki tüm dosya ve alt dizinleri listeleyen bir HTML sayfası döndürecek şekilde yapılandırıldığında ortaya çıkar. Oluşturulan sayfa genellikle dosya adlarını, boyutlarını ve son değiştirilme zaman damgalarını içererek saldırgana sunucunun dosya sistemi yapısının ayrıntılı bir haritasını sunar.
Bu durum, bir yazılım hatası değil, güvenlik yanlış yapılandırması (CWE-548) olarak sınıflandırılır. Pek çok web sunucusu, dizin listelemeyi varsayılan olarak veya geliştirme aşamasında etkinleştirir; bu özellik üretim ortamlarında çoğunlukla farkında olmadan açık bırakılır.
Nasıl Çalışır?
Bir tarayıcı, sunucuda bir dizine çözümlenen bir URL isteğinde bulunduğunda, web sunucusu önce varsayılan bir belge arar. Herhangi bir belge bulunamazsa ve sunucu yapılandırması dizin listelemeye izin veriyorsa, sunucu bir otomatik dizin sayfası oluşturup döndürür; bu sayfa genellikle Index of /yol başlığını taşır. Saldırgan daha sonra şunları yapabilir:
- Listedeki bağlantıları takip ederek tüm dosya ve alt dizinleri yinelemeli biçimde sayımlamak.
- Kamuya açık olmayan yapılandırma dosyalarını (
.env,web.config,php.ini), yedek dosyaları (.bak,.sql,.zip) veya günlük dosyalarını indirmek. - Yazılım sürümlerini, çerçeve iç yapılarını veya dağıtım yapıtlarını tespit ederek saldırı yüzeyini önemli ölçüde daraltmak.
- Gizli yönetim uç noktalarını, düz dosyalarda saklanan API anahtarlarını veya web kök dizini altına yanlışlıkla yerleştirilmiş özel anahtarları keşfetmek.
- Elde edilen bilgileri diğer güvenlik açıklarıyla (örn. yol geçişi, LFI) birleştirerek daha derin saldırılar gerçekleştirmek.
Apache HTTP Server, dizin listelemeyi Options Indexes yönergesi aracılığıyla etkinleştirir. Nginx için autoindex on; kullanılır. Microsoft IIS, yapılandırmasında açılıp kapatılabilen bir "Dizin Tarama" özelliğine sahiptir.
Saldırganlar ve arama motorları açık dizinleri kolaylıkla keşfedebilir. Arama motorları bu dizinleri intitle:"index of" gibi sorgular altında dizinleyerek Google Dork aramaları yoluyla ifşa edilen dizinlerin bulunmasını son derece kolaylaştırır.
İş Etkisi
Dizin listelemenin doğrudan önem derecesi, hangi dosyaların ifşa edildiğine büyük ölçüde bağlıdır. En iyi ihtimalle saldırganlara keşif değeri sağlar; en kötü durumda kimlik bilgilerinin, kişisel verilerin veya fikri mülkiyetin anında ifşa edilmesine yol açar. Başlıca riskler şunlardır:
- Veri ihlali: Web kök dizininde saklanan veritabanı dökümleri, kullanıcı kayıtları veya API kimlik bilgilerinin ifşa edilmesi; GDPR, HIPAA, PCI DSS ve benzeri yönetmeliklere göre bildirimi zorunlu bir ihlal teşkil edebilir.
- Kimlik bilgisi ele geçirilmesi: Ortam dosyaları (
.env) çoğunlukla veritabanı parolalarını, gizli anahtarları ve üçüncü taraf API jetonlarını içerir. - Fikri mülkiyet kaybı: Kaynak kodu arşivleri veya yayınlanmamış içerikler doğrudan indirilebilir.
- İleri saldırıları kolaylaştırma: Dizin yapısının bilinmesi, saldırganlara hedefli enjeksiyon, geçiş veya kimlik doğrulama atlama saldırıları tasarlamalarında yardımcı olur.
- İtibar zararı: Dışarıdan kişiler veya gazeteciler tarafından keşfedilmesi önemli itibar hasarına neden olabilir.
Nasıl Düzeltilir?
-
Apache HTTP Server: İlgili
<Directory>bloğundan veya.htaccessdosyasındanIndexesseçeneğini kaldırın ya da olumsuzlayın:
Ayrıca global yapılandırmanın olumsuzlama bayrağı olmadanOptions -IndexesOptions Indexesiçermediğinden emin olun. -
Nginx:
autoindexseçeneğininoffolduğundan emin olun (varsayılan değer budur, ancak açıkça doğrulayın):autoindex off; -
Microsoft IIS: IIS Yöneticisi aracılığıyla (Siteler → siteyi seçin → Dizin Tarama → Devre Dışı Bırak) veya
web.configüzerinden "Dizin Tarama" özelliğini devre dışı bırakın:<system.webServer> <directoryBrowse enabled="false" /> </system.webServer> -
Varsayılan dizin dosyası ekleyin: Erişilebilir olması gereken her dizine bir
index.htmlveya eşdeğeri yerleştirerek sunucunun listeleme yerine o dosyayı döndürmesini sağlayın. Hiçbir şekilde erişilmemesi gereken dizinler için erişimi tamamen engelleyin. -
Dizin düzeyinde erişimi kısıtlayın: Var olması ancak taranmaması gereken dizinler için açık bir reddetme kuralı ekleyin:
# Apache <Directory /var/www/html/uploads> Options -Indexes Require all denied </Directory> - Hassas dosyaları web kök dizininin dışına taşıyın: Yapılandırma dosyaları, yedekler ve kimlik bilgisi depoları, listeleme ayarlarından bağımsız olarak asla kamuya açık belge kök dizininde bulunmamalıdır.
- Periyodik denetimler gerçekleştirin: Dağıtım ardışık düzenleri tarafından oluşturulanlar da dahil olmak üzere tüm sanal sunucuları ve alt dizinleri düzenli aralıklarla tarayarak dizin listelemenin devre dışı kaldığını doğrulayın.
Kaynaklar
- OWASP Top 10 A05:2021 – Güvenlik Yanlış Yapılandırması
- CWE-548: Dizin Listeleme Yoluyla Bilgi İfşası – MITRE
- OWASP WSTG – Dizin Listeleme ve Başvurulmayan Dosyaların Test Edilmesi
- Apache mod_autoindex Dokümantasyonu
- Nginx ngx_http_autoindex_module Dokümantasyonu
- Microsoft IIS – Dizin Tarama Yapılandırması