Directory Traversal Vulnerabilitys Nedir?

Hakan Emir Genç
2 min readSep 25, 2020

--

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

Resources

https://portswigger.net/web-security/file-path-traversal

--

--

Hakan Emir Genç
Hakan Emir Genç

No responses yet