HACKING

Portswigger Directory Traversal Write-Up | Web Security Academy

Bu yazımda Portswigger Web Security Academy lablarından birisi olan Directory Traversal çözümünü yapacağım. Portswigger bilindiği üzere web güvenlik açıklarını öğrenmede ve pratik yapmada oldukça kaliteli herkes tarafından bilinen son derece güzel bir lab. Siber Güvenlik alanının web kısmına ilgisi olanlar mutlaka bu zafiyeti bilecektir. Bu yazıda bu güzel ortamda yer alan lablardan olan directory traversal çözümüne hemen başlayalım. İlk olarak directory traversal nedir sorusu ile başlayalım ve daha sonra lab çözümlerine geçelim.

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. Bu, uygulama kodu ve verileri, arka uç sistemler için kimlik bilgileri ve hassas işletim sistemi dosyalarını içerebilir. Bazı durumlarda, bir saldırgan sunucudaki rastgele dosyalara yazabilir, bu da onların uygulama verilerini veya davranışını değiştirmesine ve nihayetinde sunucunun tam kontrolünü ele geçirmesine izin verebilir.

File path traversal, simple case

Burada ürün resimlerinin görüntülenmesinde path traversal açığına karşı savunmasız bir alan bulunuyor. Sayfayı ziyaret edip bir ürüne tıklıyorum resmini açarak isteği yakalıyorum.

Görüldüğü gibi filename parametresi ile ürün resmi çekiliyor. Buraya payloadı girerek passwd dosyasını okuyacağım.

Hiçbir engel olmadığı için payload direk çalışarak dosyayı okumamızı sağladı.

File path traversal, traversal sequences blocked with absolute path bypass

Bu seviyede ise dizin geçişi yapmamızı engelleyen bir yapı bulunmaktadır fakat dizin geçişi yapmadan direkt olarak dosyayı okumamıza karşı gelecek bir engel bulunmamaktadır.

Sayfada yer alan ürünlerden bir tanesini seçip resmini açıyorum ve isteği yakalıyorum. Ardından payloadı dizin geçişi olmadan yazarak dosyayı okuyacağım.

Dizin geçişi yapmadan passwd dosyasını okuyabildik. Dizin geçişi yaptığımızda sonuç aşağıdaki gibi olmaktadır.

File path traversal, traversal sequences stripped non-recursively

Uygulama, kullanmadan önce kullanıcı tarafından sağlanan dosya adından yol geçiş dizilerini çıkarır. Burada dizin geçişi engelini aşmak için filtrelenen “..” ve “/” karakterlerini “….” ve “//” karakterleri ile değiştireceğim ve payloadı bu şekilde göndererek dosyayı okuyacağım.

Sayfada yer alan ürünlerden birinin resmini açıp isteği yakalıyorum.

Görüldüğü üzere karakterleri değiştirerek bu engeli de aşıyoruz.

File path traversal, traversal sequences stripped with superfluous URL-decode

Uygulama, yol geçiş dizilerini içeren girişi engeller. Ardından, kullanmadan önce girdinin URL kodunu çözme işlemini gerçekleştirir.

Yukarıda söylendiği üzere burada yer alan “/” karakterinin filtrelenmesi engelini aşmak için payloadı veya “/” karakterini url double url encode edeceğiz ve passwd dosyasını okuyacağız.

Sayfayı ziyaret ediyorum ve bir ürüne tıklıyorum daha sonra görseli açıp isteği yakalıyorum. Daha sonra payloadı girerek isteği göndereceğim.

Görüldüğü gibi encode etmeden payloadı denediğimde engelleniyorum. Şimdide payloadı encode ederek deneyelim. bunu için burpsuite içerisinde yer alan encode-decode özelliğini kullanacağım.

Görüldüğü gibi double-url encode tekniği ile engeli aşarak passwd dosyasını okuyabildik.

Tüm payloadı encode etmek yerine kesme işaretlerini encode ederek çözümü yapabiliriz.

File path traversal, validation of start of path

Yukarıda verilen bilgileri dikkate alarak sayfayı ziyaret edip bir ürün seçip ürün resmini açalım ve isteği yakalayalım.

Uygulama resmi açmak için /var/www/images yolunu kullanarak bu işlemi gerçekleştiriyor. Bizde payloadımızı bu yolu kullanarak gönderirsek passwd dosyasını okuyabiliriz.

Resim yolunu kullanarak passwd dosyasını okuyabildik.

File path traversal, validation of file extension with null byte bypass

Burada ise karşımıza dosya uzantısı engeli çıkıyor. Bunu aşmak nullbyte yani %00 karakterini kullanacağız. Dosyayı çağırırken dosya adı ve uzantısının öncesine nullbyte karakterini ekleyerek o kısıma kadar olan dosyanın okunmasını sağlayacağız.

Başarılı şekilde dosyayı okuyarak Portswigger Directory Traversal lab sonuna geldik. Bu lab içerisinde genel olarak directory traversal açığının nasıl oluştuğuna, dosya okuma aşamasında karşımıza çıkan engellere bu engelleri aşma tekniklerine odaklandık. Oldukça kaliteli ve öğretici olan Portswigger lablarının çözümüne devam edeceğim.

Başka yazılarda görülmek üzere.

Serdar Daşdemir

Cyber Security Specialist / Pentester

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu