Dizin geçişi nedir?
Dizin geçişi (directory traversal veya path traversal), saldırganın bir uygulamanın erişmesi amaçlanan klasörün dışına çıkarak sunucudaki diğer dosyalara ulaşabildiği açıktır. Genellikle dosya yolunda ../ gibi üst dizine çıkan ifadeler kullanılır.
Açık, uygulamanın kullanıcı girdisini dosya yolu olarak doğrulamadan kullanmasından doğar. Sonuçta yapılandırma dosyaları, kaynak kod, anahtarlar veya sistem dosyaları okunabilir.
Nasıl çalışır?
Bir uygulama dosya adını parametreyle alıyorsa, saldırgan parametreye üst dizine çıkan yol bileşenleri ekleyebilir. Uygulama bu yolu birleştirip dosyayı açtığında, amaçlanan klasörün dışındaki bir dosya okunur. Kodlanmış veya çift kodlanmış karakterler basit filtreleri atlatmak için denenir.
Okuma yetkisi olan bir dizin geçişi, saldırgana veritabanı parolalarını içeren yapılandırma dosyalarını sunabilir. Yazma imkânı da varsa etki daha ciddi olur.
Sunucu ve hosting ortamında
Dosya indirme betikleri, görsel gösterme sayfaları, günlük görüntüleyiciler ve şablon seçiciler tipik hedeflerdir. Web sunucusu kullanıcısının okuyabildiği her dosya risk altındadır: uygulama yapılandırmaları, .env dosyaları ve yedekler gibi.
- Yapılandırma ve yedek dosyalarını web kök dizininin dışında tutun.
- Web sunucusu kullanıcısının erişebileceği alanı olabildiğince daraltın (open_basedir, hesap yalıtımı).