
Directory Traversal Açığı Nedir? Sunucu Dosyaları Nasıl Korunur?
Directory Traversal açığı nedir, nasıl çalışır ve sunucu dosyaları güvenli biçimde nasıl korunur? Riskler, önlemler ve pratik kontroller.

Cenk ŞEKERCİ
Operasyon Yöneticisi
Bir web uygulamasında dosya indirme, görsel gösterme veya belge önizleme özelliği varsa, arka planda dosya yolu işleniyor olabilir. Directory Traversal Açığı Nedir? Sunucu Dosyaları Nasıl Korunur? sorusu tam da burada önem kazanır; çünkü küçük bir dosya yolu hatası, sunucudaki hassas dosyaların açığa çıkmasına neden olabilir.
İçindekiler
- Directory Traversal Açığı Nedir
- Directory Traversal Açığı Nedir Ne İşe Yarar
- Directory Traversal Açığı Ne İşe Yarar
- Sunucu Dosyaları Nasıl Korunur
- Directory Traversal Risklerini Azaltan Kontrol Listesi
- Sıkça Sorulan Sorular
- İlgili İçerikler
Directory Traversal Açığı Nedir
Directory traversal açığı, web uygulamasının kullanıcıdan aldığı dosya yolu veya dosya adı bilgisini güvenli biçimde doğrulamaması sonucu ortaya çıkan bir güvenlik zafiyetidir. Saldırgan, dizin yapısında yukarı çıkmayı hedefleyen özel yol ifadeleriyle yetkisi olmayan dosyalara erişmeye çalışabilir.
Bu açık genellikle dosya indirme, profil resmi görüntüleme, log okuma, PDF önizleme veya tema dosyası çağırma gibi özelliklerde görülür. Sorun, uygulamanın “hangi dosyanın istenebileceğini” net biçimde sınırlamamasından kaynaklanır.
Directory traversal, yalnızca eski sistemlerde görülen bir problem değildir. Modern framework kullanan uygulamalarda bile yanlış dosya yolu birleştirme, eksik yetki kontrolü veya hatalı sunucu yapılandırması nedeniyle oluşabilir.
Uyarı: Directory traversal bilgisi savunma, test ve farkındalık amacıyla ele alınmalıdır. Yetkisiz sistemlerde deneme yapmak hukuki ve etik açıdan yanlıştır.
Directory Traversal Nasıl Ortaya Çıkar?
Bu açık çoğunlukla uygulamanın kullanıcı girdisini doğrudan dosya sistemine aktarmasıyla oluşur. Örneğin bir uygulama, file parametresinden gelen değeri kontrol etmeden sunucudaki bir klasörle birleştirirse risk doğar.
Riskli durumlar şunlardır:
- Dosya adının kullanıcıdan doğrudan alınması
- Dosya yolunun beyaz listeyle sınırlandırılmaması
- Yetki kontrolünün yalnızca arayüzde yapılması
- Uygulama kullanıcısının gereğinden fazla dosya okuma iznine sahip olması
- Hata mesajlarında gerçek dosya yollarının gösterilmesi
Directory Traversal ve Path Traversal Aynı Şey Mi?
Evet, pratikte directory traversal ve path traversal çoğu zaman aynı zafiyeti ifade eder. İkisi de dosya yolu manipülasyonu üzerinden yetkisiz dosya erişimini anlatır.
| Terim | Anlamı | Kullanım Alanı |
|---|---|---|
| Directory Traversal | Dizinler arasında yetkisiz gezinme | Web güvenliği raporları |
| Path Traversal | Dosya yolunun manipüle edilmesi | OWASP, güvenlik testleri |
| File Path Manipulation | Dosya yolu girdisinin kötüye kullanılması | Kod inceleme süreçleri |
Bu terimler farklı bağlamlarda kullanılsa da savunma yaklaşımı benzerdir: kullanıcı girdisini sınırlamak, dosya erişimini kontrol etmek ve sunucu izinlerini minimumda tutmak.
Directory Traversal Açığı Nedir Ne İşe Yarar
Directory traversal açığı, saldırgan açısından sunucudaki erişilmemesi gereken dosyaları okumaya veya uygulama yapısı hakkında bilgi toplamaya yarayabilir. Savunma açısından ise bu açık, dosya erişim kontrollerinin doğru tasarlanıp tasarlanmadığını test etmek için önemli bir göstergedir.
Buradaki “ne işe yarar” ifadesi saldırıyı teşvik etmek için değil, açığın etkisini anlamak için değerlendirilmelidir. Çünkü riskin neye yol açabileceği bilinmeden doğru önlem almak zordur.
Hangi Dosyalar Risk Altında Olabilir?
Directory traversal açığı bulunan bir sistemde erişim kapsamı, sunucu izinlerine ve uygulama yapılandırmasına bağlıdır. Her açık aynı etkiyi doğurmaz; bazıları yalnızca belirli belge klasörlerini etkilerken bazıları daha kritik dosyalara ulaşma riski doğurabilir.
| Riskli Dosya Türü | Olası Etki | Risk Seviyesi |
|---|---|---|
| Yapılandırma dosyaları | Veritabanı bağlantı bilgileri açığa çıkabilir | Yüksek |
| Log dosyaları | Kullanıcı aktiviteleri veya hata detayları görülebilir | Orta-Yüksek |
| Yedek dosyalar | Eski kodlar, veri çıktıları veya gizli bilgiler sızabilir | Yüksek |
| Sistem dosyaları | Sunucu yapısı hakkında bilgi edinilebilir | Yüksek |
| Medya ve belge klasörleri | Özel dokümanlar ifşa olabilir | Orta |
Bu nedenle dosya erişimi yalnızca uygulama koduyla değil, işletim sistemi ve web sunucusu izinleriyle de sınırlandırılmalıdır.
Directory Traversal Neden Tehlikelidir?
Tehlike, açığın tek başına basit görünmesine rağmen zincirleme güvenlik sorunlarına kapı açabilmesidir. Hassas bir yapılandırma dosyasının okunması, daha büyük bir veri ihlalinin ilk adımı olabilir.
Directory traversal şu sonuçlara yol açabilir:
- Gizli yapılandırma bilgilerinin sızması
- Uygulama kaynak kodunun okunması
- Log dosyalarından kullanıcı verisi elde edilmesi
- Sistem dizin yapısının öğrenilmesi
- Başka açıklara zemin hazırlanması
Bilgi Kutusu: Bir zafiyetin kritikliği yalnızca “dosya okunabiliyor mu?” sorusuyla ölçülmez. Okunan dosyanın içeriği, sistemdeki yetkiler ve ağ mimarisi de risk seviyesini belirler.
Directory Traversal Açığı Ne İşe Yarar
Directory traversal açığı, güvenlik ekipleri için uygulamanın dosya erişim mantığını test etmeye yarar. Saldırganlar ise bu açığı yetkisiz bilgi toplamak için kötüye kullanabilir. Bu yüzden konu, etik test süreçlerinde kontrollü biçimde ele alınmalıdır.
Bir güvenlik testinde amaç, sistemin dosya yolunu nasıl işlediğini ve izin sınırlarını aşıp aşmadığını görmektir. Burada önemli olan, testlerin yalnızca izinli sistemlerde ve belirlenmiş kapsam içinde yapılmasıdır.
Savunma Açısından Kullanım Senaryoları
Directory traversal kontrolleri, özellikle yazılım geliştirme ve sızma testi süreçlerinde önemlidir. Yeni bir dosya indirme özelliği eklendiğinde yalnızca “çalışıyor mu?” diye bakmak yeterli değildir; “hangi dosyaları çağırabiliyor?” sorusu da yanıtlanmalıdır.
| Senaryo | Kontrol Edilmesi Gereken Nokta | Önerilen Yaklaşım |
|---|---|---|
| Dosya indirme özelliği | Kullanıcı yalnızca yetkili dosyasını indirebiliyor mu? | ID tabanlı erişim |
| Görsel gösterimi | Dosya adı manipüle edilebiliyor mu? | Beyaz liste |
| Belge önizleme | Dosya yolu doğrudan mı kullanılıyor? | Güvenli dosya eşleştirme |
| Log görüntüleme paneli | Rol bazlı erişim var mı? | Yetki kontrolü |
| Tema/şablon çağırma | Dinamik yol kullanımı güvenli mi? | Sabit dizin sınırı |
Bu kontroller geliştirme aşamasında yapılırsa, canlı sistemde daha az güvenlik borcu oluşur.
Saldırı Yüzeyini Büyüten Hatalar
Bazı yazılım alışkanlıkları directory traversal riskini artırır. Özellikle hızlı geliştirme sırasında dosya yolu denetimleri sonradan eklenmek üzere ertelenirse, açık üretim ortamına taşınabilir.
Sık görülen hatalar:
- Dosya adını URL parametresinden doğrudan almak
- Kullanıcıya gerçek sunucu yolunu hata mesajında göstermek
uploads,backups,logsgibi klasörleri web kök dizinine yakın tutmak- Dosya uzantısı kontrolünü tek başına yeterli sanmak
- Uygulama kullanıcısına geniş okuma izni vermek
İpucu: Dosya erişiminde kullanıcıya dosya yolu değil, sistem içinde tanımlı bir dosya kimliği göstermek daha güvenlidir. Uygulama, bu kimliği arka planda güvenli dosya kaydıyla eşleştirmelidir.
Sunucu Dosyaları Nasıl Korunur
Sunucu dosyalarını korumanın temel yolu, kullanıcı girdisini dosya sistemiyle doğrudan ilişkilendirmemek ve erişim kontrollerini katmanlı kurmaktır. Güvenli tasarım, yalnızca kod seviyesinde değil; web sunucusu, işletim sistemi, loglama ve dağıtım süreçlerinde de uygulanmalıdır.
Directory traversal riskini azaltmak için tek bir yöntem yeterli değildir. Girdi doğrulama, yetki kontrolü, dosya izinleri ve güvenli mimari birlikte çalışmalıdır.
Güvenli Dosya Erişimi İçin Temel Önlemler
Aşağıdaki tablo, en etkili savunma yöntemlerini pratik biçimde özetler:
| Önlem | Ne Sağlar? | Öncelik |
|---|---|---|
| Beyaz liste kullanımı | Sadece izinli dosya veya uzantılar çağrılır | Yüksek |
| Dosya yolu yerine ID kullanımı | Kullanıcı gerçek yolu göremez | Yüksek |
| Canonical path kontrolü | Yolun beklenen dizin dışına çıkması engellenir | Yüksek |
| Minimum yetki prensibi | Uygulama yalnızca gerekli dosyaları okuyabilir | Yüksek |
| Web kökü dışında depolama | Hassas dosyalar doğrudan çağrılamaz | Orta-Yüksek |
| Detaylı hata mesajını kapatma | Dosya yapısı ifşa edilmez | Orta |
| Güvenlik testleri | Zafiyet canlıya çıkmadan yakalanır | Yüksek |
Bu önlemler birlikte uygulandığında, bir katmandaki hata diğer katman tarafından sınırlandırılabilir.
Kod Tarafında Dikkat Edilecekler
Kod yazarken dosya yolu birleştirme işlemleri dikkatli ele alınmalıdır. Kullanıcı girdisi dosya adı gibi görünse bile, aslında farklı dizinlere yönlendirme amacı taşıyabilir.
Güvenli yaklaşım için:
- Kullanıcıdan gelen değeri doğrudan dosya yolu yapmayın.
- Dosya erişimini veritabanındaki kayıtlarla eşleştirin.
- İzin kontrolünü her dosya isteğinde yeniden yapın.
- Yalnızca beklenen uzantılara izin verin.
- Dosya yolunu normalize edip izinli dizin içinde kaldığını doğrulayın.
- Hassas dosyaları web erişimine kapalı dizinlerde saklayın.
Sunucu ve Yetki Ayarları
Uygulama kodu güvenli olsa bile sunucu izinleri hatalıysa risk devam eder. Web uygulamasının çalıştığı kullanıcı hesabı, tüm sistem dosyalarını okuyabilecek yetkiye sahip olmamalıdır.
| Katman | Yanlış Uygulama | Güvenli Uygulama |
|---|---|---|
| İşletim sistemi | Geniş okuma izinleri | Minimum yetki |
| Web sunucusu | Hassas klasörleri yayınlamak | Erişim kısıtlaması |
| Uygulama | Dosya yolunu parametreden almak | ID tabanlı dosya erişimi |
| Loglama | Gerçek yolları kullanıcıya göstermek | Güvenli hata mesajı |
| Depolama | Yedekleri public klasörde tutmak | İzole yedek alanı |
Bu tablo özellikle küçük ekipler için faydalıdır; çünkü güvenlik kontrolleri yalnızca geliştiriciye bırakıldığında gözden kaçan alanlar oluşabilir.
Directory Traversal Risklerini Azaltan Kontrol Listesi
Directory traversal riskini azaltmak için düzenli kontrol listesiyle ilerlemek, hem geliştirme hem de bakım süreçlerinde hataları azaltır. Bu kontroller yeni özellik geliştirilirken, canlıya çıkış öncesinde ve periyodik güvenlik taramalarında uygulanmalıdır.
Aşağıdaki liste pratik bir başlangıç noktasıdır:
- Dosya indirme ve görüntüleme endpoint’leri listelendi mi?
- Kullanıcı girdisi dosya yoluna doğrudan ekleniyor mu?
- Dosyalar kullanıcı, rol veya abonelik bazlı yetkiyle korunuyor mu?
- Dosya yolu yerine dosya ID’si kullanılıyor mu?
- Hata mesajlarında gerçek dizin yapısı gizleniyor mu?
- Uygulama kullanıcısının dosya izinleri sınırlandırıldı mı?
- Public klasörde yedek, log veya konfigürasyon dosyası var mı?
- CI/CD sürecinde statik kod analizi yapılıyor mu?
- Web sunucusunda hassas dizinlere erişim kapalı mı?
- Güvenlik testleri düzenli olarak tekrarlanıyor mu?
Uyarı: Sadece uzantı kontrolü yapmak güvenli kabul edilmez. Dosya adının sonu güvenli görünse bile yol manipülasyonu farklı dizinlere erişim denemesi oluşturabilir.
Sıkça Sorulan Sorular
Directory traversal açığı nedir?
Directory traversal açığı, web uygulamasının kullanıcıdan aldığı dosya adı veya dosya yolu bilgisini yeterince doğrulamaması nedeniyle oluşan bir güvenlik zafiyetidir. Bu açık, yetkisiz kişilerin uygulamanın normalde eriştirmemesi gereken dosyaları okumaya çalışmasına neden olabilir. Özellikle dosya indirme, belge görüntüleme ve medya servis etme özelliklerinde görülür. Riskin büyüklüğü, sunucu izinlerine ve erişilebilen dosyaların hassasiyetine bağlıdır.
Directory traversal ile path traversal arasında fark var mı?
Directory traversal ve path traversal çoğu kaynakta aynı zafiyeti anlatmak için kullanılır. İkisi de dosya yolu manipülasyonu yoluyla yetki dışı dosyalara erişme riskini ifade eder. “Directory traversal” daha çok dizinler arasında gezinme fikrine vurgu yapar; “path traversal” ise dosya yolunun manipüle edilmesini anlatır. Savunma yöntemleri açısından önemli bir fark yoktur.
Directory traversal açığı hangi uygulamalarda görülür?
Bu açık, dosya işleyen hemen her web uygulamasında görülebilir. Dosya indirme sayfaları, fatura görüntüleme sistemleri, profil fotoğrafı servisleri, belge arşivleri, tema dosyası çağıran yapılar ve log görüntüleme panelleri riskli alanlardır. Özellikle kullanıcıdan gelen dosya adı doğrudan sunucu dosya sistemiyle birleştiriliyorsa dikkat edilmelidir.
Directory traversal açığı nasıl önlenir?
Açığı önlemek için dosya yolları kullanıcı girdisine göre doğrudan oluşturulmamalıdır. Bunun yerine dosya ID’si, beyaz liste, canonical path kontrolü ve rol bazlı yetkilendirme kullanılmalıdır. Hassas dosyalar web kök dizini dışında saklanmalı, uygulama minimum dosya okuma izniyle çalıştırılmalıdır. Hata mesajları da gerçek dosya yollarını göstermeyecek şekilde düzenlenmelidir.
Sadece dosya uzantısı kontrolü yeterli mi?
Hayır, yalnızca dosya uzantısı kontrolü yeterli değildir. Bir dosya adı güvenli bir uzantıyla bitiyor gibi görünse bile yol manipülasyonu farklı dizinlere erişim denemesi oluşturabilir. Güvenli yaklaşımda uzantı kontrolüne ek olarak dizin sınırı, dosya kimliği eşleştirmesi, yetki kontrolü ve normalize edilmiş yol doğrulaması birlikte uygulanmalıdır.
Directory traversal açığı veri sızıntısına yol açar mı?
Evet, erişilen dosyaların içeriğine bağlı olarak veri sızıntısına yol açabilir. Yapılandırma dosyaları, yedekler, loglar veya kullanıcı belgeleri okunabiliyorsa risk yüksek kabul edilir. Bazı durumlarda saldırgan yalnızca sistem yapısını öğrenir; bazı durumlarda ise veritabanı bağlantı bilgileri gibi kritik bilgiler açığa çıkabilir.
Web sunucusu ayarları bu açığı engeller mi?
Web sunucusu ayarları riski azaltır ancak tek başına yeterli değildir. Nginx, Apache veya benzeri sunucularda hassas dizinleri kapatmak, public olmayan dosyaları yayınlamamak ve erişim kuralları koymak önemlidir. Yine de uygulama kodu hatalıysa açık devam edebilir. En güvenli yaklaşım, uygulama ve sunucu katmanlarını birlikte korumaktır.
Directory traversal testi kimler tarafından yapılmalı?
Directory traversal testi, yetkili güvenlik uzmanları, yazılım ekipleri veya kurumun izin verdiği sızma testi ekipleri tarafından yapılmalıdır. Test kapsamı önceden belirlenmeli, üretim ortamında veri bütünlüğünü bozacak işlemlerden kaçınılmalıdır. Yetkisiz sistemlerde test yapmak doğru değildir ve hukuki sonuçlar doğurabilir.
Log dosyaları neden risklidir?
Log dosyaları çoğu zaman hata detayları, IP adresleri, istek parametreleri, kullanıcı işlemleri ve bazen hassas teknik bilgiler içerir. Directory traversal açığıyla loglara erişilmesi, saldırganın uygulama davranışını analiz etmesine yardımcı olabilir. Bu nedenle loglar web erişimine kapalı tutulmalı ve hassas veri içermeyecek şekilde yapılandırılmalıdır.
Directory traversal riskini azaltmak için en pratik ilk adım nedir?
En pratik ilk adım, uygulamadaki tüm dosya indirme ve görüntüleme noktalarını listelemektir. Ardından bu noktalarda kullanıcı girdisinin dosya yoluna doğrudan eklenip eklenmediği kontrol edilmelidir. Dosya yolu yerine ID tabanlı erişim modeline geçmek, birçok riski hızlıca azaltır. Sonrasında sunucu izinleri ve hata mesajları gözden geçirilmelidir.
İlgili İçerikler
- Web Uygulama Güvenliği Kontrol Listesi
- SQL Injection Nedir ve Nasıl Önlenir?
- XSS Açığı Nedir? Kalıcı ve Yansıtılmış XSS Farkları
- Sunucu Güvenliği İçin Temel Yapılandırma Önerileri
- OWASP Top 10 Nedir? Web Güvenliği İçin Başlangıç Rehberi
Directory traversal, küçük bir dosya yolu hatası gibi görünse de etkisi sunucu güvenliğinin merkezine kadar uzanabilir. Dosya erişimini ID tabanlı tasarlamak, yetkileri sınırlamak ve hassas dosyaları web erişiminden ayırmak güçlü bir başlangıç sağlar. Daha güvenli bir altyapı için uygulama kodu, sunucu yapılandırması ve düzenli güvenlik testleri birlikte ele alınmalıdır.
Netlen'i Google'da Takip Edin
En güncel rehberlerimize, duyurularımıza ve teknik içeriklerimize Google üzerinden öncelikli ulaşmak için Netlen'i tercih ettiğiniz kaynaklar arasına ekleyin.
Bu yazıyı paylaşın

Yazar Hakkında
Cenk ŞEKERCİ
Operasyon Yöneticisi
Bulut teknolojileri, ağ altyapıları ve veri merkezi operasyonları üzerine çalışıyorum. Öğrendiğim yeni teknolojileri ve sahada karşılaştığım gerçek deneyimleri anlaşılır şekilde paylaşmayı seviyorum.
Yorumlar
Bu yazı hakkında okuyucu yorumları


