Path Traversal (Dizin Atlatma) Saldırıları
Path Traversal (Dizin Atlatma) atakları, uygulama parametrelerine eklenen özel istekler ile web sunucu tarafından erişime açılmamış, koruma altında bulunan dizinlere erişim sağlamaya izin veren bir zafiyettir. Bu zafiyet sayesinde saldırganlar normal durumda web üzerinden erişilmesi mümkün olmayan dizinlere erişim yaparak önemli dosyalara ulaşabilirler.
Saldırıdan Korunmak için : Uygulama parametreleri aracılığı ile gelen veriler ile bulundukları dizinlerin dışına çıkmaları engellenmelidir. “/../, /././ ././” gibi ifadeleri içeren isteklerin reddedilmesi gerekmektedir. Dosya adı seçiminde bir regex kullanılarak whitelist işlemi gerçekleştirilmesi mevcut risklerin en aza indirilmesi için uygun bir yöntem olabilir.
- ASP.NET tabanlı sistemlerde Server.MapPath() metodu, parametre içinde gelen ifadeyi alarak sistem üzerindeki fiziksel dizine eşler. Eğer bu fonksiyonun AspEnableParentPath özelliğinin değeri FALSE ise, webroot dizininin dışına çıkması engellenir.
- ASP.NET tabanlı sistemlerde Path.GetFileName() metodu parametre içinde gelen ifadeyi kontrol ederek sadece path içinde son dizin bölümleme işaretinden sonra gelen ifadeyi alır.
-Java tabanlı uygulamalarda ise getCanonicalPath() fonksiyonu kullanılarak dosya açma fonksiyonu daha güvenli hale getirilebilir.
- PHP tabanlı uygulamalarda ise güvenli hale getirmek için realpath(), basename() fonksiyonları kullanılabilir.