Directory Traversal Vulnerabilitys Nedir?
Giriş
Merhaba bu yazımda, File Path olarakta bilinen Directory Traversal güvenlik açıklının temellerini açıklayacak,bunları nasıl bulup yararlanabileceğinizi ve yaygın engellerin nasıl aşılacağını açıklayacağım.
Directory Traversal Nedir?
Directory Traversal (file path traversal olarak da bilinir), bir saldırganın, bir uygulamayı çalıştıran sunucuda rastgele dosyaları okumasına olanak tanıyan bir web güvenlik açığıdır.
Bazı durumlarda, bir saldırgan, sunucudaki rastgele dosyalara yazarak, uygulama verilerini veya davranışını değiştirmesine ve nihayetinde sunucunun tam kontrolünü ele geçirmesine olanak sağlayabilir.
Directory Traversal ile rastgele dosyaları okumak
Satılık ürünlerin resimlerini gösteren bir alışveriş uygulamasını düşünün. Görüntüler, sayfaya aşağıdaki gibi bazı HTML’ler ile yüklenir:
<img src=”/loadImage?filename=218.png”>
LoadImage URL’si bir dosya adı parametresi alır ve belirtilen dosyanın içeriğini döndürür. Görüntü dosyalarının kendileri diskte /var/www/images/ konumunda saklanır. Bir görüntüyü döndürmek için, uygulama istenen dosya adını bu temel dizine ekler ve dosyanın içeriğini okumak için bir dosya sistemi API’si kullanır. Yukarıdaki durumda, uygulama aşağıdaki dosya yolundan okur:
/var/www/images/218.png
Uygulama, directory traversal saldırılarına karşı herhangi bir savunma uygulamaz, bu nedenle bir saldırgan, sunucunun dosya sisteminden rastgele bir dosya almak için aşağıdaki URL’yi talep edebilir:
https://insecure-website.com/loadImage?filename=../../../etc/passwd
Bu, uygulamanın aşağıdaki dosya yolundan okumasına neden olur:
/var/www/images/../../../etc/passwd
../ dizisi bir dosya yolunda geçerlidir ve dizin yapısında bir seviye yukarı çıkmak anlamına gelir. Üç ardışık ../ dizisi /var/www/images/ dosyasından dosya sistemi köküne yükselir ve bu nedenle gerçekte okunan dosya:
/etc/passwd
Unix tabanlı işletim sistemlerinde bu, sunucuda kayıtlı olan kullanıcıların ayrıntılarını içeren standart bir dosyadır.
Windows’ta hem ../ hem de ..\ geçerli dizin geçiş dizileridir ve standart bir işletim sistemi dosyasını almaya yönelik eşdeğer bir saldırı şöyle olur:
https://insecure-website.com/loadImage?filename=..\..\..\windows\win.ini
Directory Traversal güvenlik açıklarından yararlanmanın önündeki yaygın engeller
Kullanıcı girdisini dosya yollarına yerleştiren birçok uygulama, directory traversal saldırılarına karşı bir tür savunma uygular ve bunlar genellikle atlatılabilir.
Herhangi bir geçiş sırası kullanmadan bir dosyaya doğrudan başvurmak için dosya sistemi kökünden filename=/etc/passwd gibi mutlak bir yol kullanabilirsiniz.
https://insecure-website.com/loadImage?filename=/etc/passwd
Tek sıra çıkarıldığında (../) iç içe geçmiş sıralar (….//) kullanabilirsiniz.
https://insecure-website.com/loadImage?filename=....//....//....//etc/passwd
İnput filtresini atlamak için ..%c0%af veya ..%252f gibi çeşitli standart dışı kodlamalar kullanabilirsiniz.
https://insecure-website.com/loadImage?filename=..%252f..%252f..%252fetc/passwd
Bir uygulama, kullanıcı tarafından sağlanan dosya adının /var/www/images gibi beklenen temel klasörle başlamasını gerektiriyorsa, gerekli temel klasörü ve ardından uygun geçiş sıralarını eklemek mümkün olabilir.
https://insecure-website.com/loadImage?filename=/var/www/images/../../../etc/passwd
Bir uygulama, kullanıcı tarafından sağlanan dosya adının .png gibi beklenen bir dosya uzantısıyla bitmesini gerektiriyorsa, gerekli uzantıdan önce dosya yolunu etkili bir şekilde sonlandırmak için boş bayt kullanmak mümkün olabilir.
https://insecure-website.com/loadImage?filename=../../../etc/passwd%00.png