Dizin Gezinme (Directory Traversal) Açıkları Nedir?
Dizin Gezinme (Path Traversal veya Dot-Dot-Slash olarak da bilinir) açıkları, saldırganların bir web sunucusunun dosya sisteminde dizinler arasında gezinerek normalde erişmeleri gerekmeyen dosya veya dizinlere erişmelerini sağlayan güvenlik zafiyetleridir. Bu zafiyet genellikle, kullanıcıdan alınan girdinin (örneğin dosya adları veya yollar) yeterince doğrulanmaması veya temizlenmemesi sonucunda ortaya çıkar.
Nasıl Çalışır?
Saldırganlar, genellikle URL parametrelerinde veya form girdilerinde "../" (üst dizine çıkma) karakter dizilerini kullanarak sunucunun dosya yapısında yukarı doğru hareket etmeye çalışır. Amaç, web kök dizini dışındaki hassas dosyalara (örneğin, şifre dosyaları, yapılandırma dosyaları, sistem günlükleri) ulaşmaktır.
Örnekler:
Saldırganlar ayrıca, url kodlaması (%2e%2e%2f) veya unicode kodlaması (..%c0%af) gibi yöntemleri de kullanarak filtreleri atlatmaya çalışabilirler.
Potansiyel Etkiler:
Korunma Yöntemleri:
Bu tür zafiyetlerden korunmak için aşağıdaki önlemler alınmalıdır:
Örnek (PHP):
Zafiyetli Kod:
Güvenli Kod:
Dizin gezinme açıkları, basit ama etkili olabilen zafiyetlerdir. Girdi doğrulaması ve güvenli kodlama pratikleri ile kolayca önlenebilirler.
Dizin Gezinme (Path Traversal veya Dot-Dot-Slash olarak da bilinir) açıkları, saldırganların bir web sunucusunun dosya sisteminde dizinler arasında gezinerek normalde erişmeleri gerekmeyen dosya veya dizinlere erişmelerini sağlayan güvenlik zafiyetleridir. Bu zafiyet genellikle, kullanıcıdan alınan girdinin (örneğin dosya adları veya yollar) yeterince doğrulanmaması veya temizlenmemesi sonucunda ortaya çıkar.
Nasıl Çalışır?
Saldırganlar, genellikle URL parametrelerinde veya form girdilerinde "../" (üst dizine çıkma) karakter dizilerini kullanarak sunucunun dosya yapısında yukarı doğru hareket etmeye çalışır. Amaç, web kök dizini dışındaki hassas dosyalara (örneğin, şifre dosyaları, yapılandırma dosyaları, sistem günlükleri) ulaşmaktır.
Örnekler:
- Linux/Unix Sistemlerinde:
Kod:http://example.com/download.php?file=../../../../etc/passwd
- Windows Sistemlerinde:
Kod:http://example.com/showimage.asp?img=..\..\..\windows\system32\drivers\etc\hosts
Saldırganlar ayrıca, url kodlaması (%2e%2e%2f) veya unicode kodlaması (..%c0%af) gibi yöntemleri de kullanarak filtreleri atlatmaya çalışabilirler.
Potansiyel Etkiler:
- Hassas sistem dosyalarına veya uygulama yapılandırma dosyalarına erişim.
- Kayıtlı kullanıcı bilgileri veya şifreler gibi gizli verilere ulaşma.
- Uygulama veya sunucu üzerinde yetkisiz dosya işlemleri (okuma, yazma, silme).
- Tam bir sistem ele geçirme (diğer zafiyetlerle birleştirildiğinde).
Korunma Yöntemleri:
Bu tür zafiyetlerden korunmak için aşağıdaki önlemler alınmalıdır:
- Girdi Doğrulaması (Input Validation): Kullanıcıdan gelen tüm girdileri (özellikle dosya yolları için) beyaz liste (whitelist) yaklaşımıyla doğrulayın. Sadece izin verilen karakterlere ve dizinlere izin verin.
- Yol Normalleştirme (Path Canonicalization): Kullanıcı girdisini işlemeden önce, tüm ".." veya benzeri dizin manipülasyonlarını kaldırarak yolu normalleştirin.
- Dosya Sistemi Sınırlandırması: Web sunucusunun veya uygulamanın sadece belirli bir dizin içinde çalışmasını sağlamak için chroot ortamları veya sanal ortamlar kullanın.
- En Az Ayrıcalık Prensibi (Least Privilege): Uygulamanın veya web sunucusunun, işlemleri gerçekleştirmek için ihtiyaç duyduğu en az ayrıcalığa sahip olduğundan emin olun.
- Yapılandırma: Web sunucusu yapılandırmasında dizin listeleme (directory listing) özelliğini kapatın ve hassas dosyalara doğrudan erişimi engelleyin.
Örnek (PHP):
Zafiyetli Kod:
Kod:
<?php
$file = $_GET['file'];
include("/var/www/html/" . $file);
?>
Güvenli Kod:
Kod:
<?php
$file = basename($_GET['file']); // Yalnızca dosya adını alır
$allowed_files = ['page1.html', 'page2.html']; // Beyaz liste
if (in_array($file, $allowed_files)) {
include("/var/www/html/secure_pages/" . $file);
} else {
echo "Geçersiz dosya!";
}
?>
Dizin gezinme açıkları, basit ama etkili olabilen zafiyetlerdir. Girdi doğrulaması ve güvenli kodlama pratikleri ile kolayca önlenebilirler.