Web For Pentester – File Upload & LDAP & XML Attacks

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18

Okan KÖSE tarafından 3 Ocak 2021 tarihinde yazılmıştır.​

[TR] Web For Pentester – File Upload & LDAP & XML Attacks​




Web For Pentester serimizde son yazımıza geldik. Bu yazımızda File Upload & LDAP & XML Attacks örneklerini inceleyeceğiz.

FILE UPLOAD 1.Örnek

1705941397017.png




İlk örneğimizde, yüklenmesine izin verilen dosya türleri konusunda herhangi bir kısıtlama yoktur.

Bunun için phpinfo işlevi ile basit bir php kodu yüklemek yeterlidir.

“<?php phpinfo(); ?>” -> phpinfo.php

1705941414254.png


Yüklenen dosyanın üzerindeki url’den php kodumuzun sunucuda çalışıp çalışmadığını kontrol edebiliriz.

1705941422590.png

FILE UPLOAD 2.Örnek



İkinci örneğimizde de bir önceki php dosyamızı yüklemeye çalıştığımızda NO PHP yazısını görüyoruz.

1705941430426.png


Burada .php uzantılı dosyaların yüklenmesini engelleyen preg_match işlevi ile bir kontrol yapıldığını anlıyoruz.

phpinfo.php olan dosyamızı phpinfo.php.test olarak değiştirelim.

1705941438400.png


Ve böylelikle bu kontrolü atlatmış oluyoruz. Yüklenen dosya üzerindeki url’den kontrol ettiğimizde bir önceki örnek ile aynı sonucu alıyoruz.

1705941446827.png

LDAP 1.Örnek

Bir web uygulaması, kullanıcıların kurumsal bir yapı içindeki diğer kullanıcıların bilgilerini doğrulamasına veya aramasına izin vermek için LDAP kullanabilir. LDAP enjeksiyon saldırılarının amacı, uygulama tarafından yürütülecek bir sorguya LDAP arama filtresi meta karakterlerini enjekte etmektir.

LDAP sorguları mantık olarak SQL’e benzer.

1705941455462.png


İlk örneğimizi incelediğimizde URL’de username ve password değerlerini görüyoruz.

Bu ilk örnekte, kullanıcı adınızı ve şifrenizi kullanarak bir LDAP sunucusuna bağlanıyorsunuz. Bu durumda, kimlik bilgileriniz geçersiz olduğu için LDAP sunucusu kimliğinizi doğrulamaz. Bununla birlikte, bazı LDAP sunucuları NULL Bind'i yetkilendirir. Boş değerler gönderilirse, LDAP sunucusu bağlantıyı bağlamaya devam eder ve PHP kodu kimlik bilgilerinin doğru olduğunu düşünür. Bind'i 2 boş değerle elde etmek için, bu parametreyi sorgudan tamamen kaldırmanız gerekir.

1705941462041.png

LDAP 2.Örnek

1705941466887.png


LDAP söz dizim yapısı (cn=[INPUT]) şeklindedir. * karakteri LDAP’te sonu tamamlamak için kullanılır yani usarname kısmına ‘ hacke* ’ koyduğumuzda ‘ hacker ’ olarak tanındığımızı göreceksiniz. Bunun sebebi hacke ifadesinden sonra gelebilecek tüm ihtimalleri kabul edecek şekilde ayarlamış olmamız.

SQL Injection’da kullandığımız boolean(OR 1=1) mantığını kullanarak, herhangi bir şifre verip hacker olarak giriş yapabiliriz.

?name=hacker)(cn=*))%00&password=PwnlabMe

Burada hacker ifadesinden sonra gelen cn ifadesine ne verilirse verilsin kabul edecek şekilde ayarladık.

%00 ile de sonrasında gelen ifadeleri geçersiz kıldık.

1705941473579.png

XML 1.Örnek



İlk örneğimizde URL’de xml belirteci görüyoruz. XML belirtecinden sonra kendi oluşturduğumuz XML dosyasını verdiğimiz taktirde istediğimiz XML kodlarımızı çalıştırabiliriz. Eğer /etc/passwd dosyasını yazdırmak istersek aşağıdaki şekilde olacaktır.

<!DOCTYPE test [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><test>&xxe;</test>

Ve bu kullanacağımız XML dosyasını URL encoding yaptığımızda son hali aşağıdaki gibi olacaktr.

%3C!DOCTYPE%20test%20%5B%3C!ENTITY%20xxe%20SYSTEM%20%22file%3A%2F%2F%2Fetc%2Fpasswd%22%3E%5D%3E%3Ctest%3E%26xxe%3B%3C%2Ftest%3E

1705941481824.png

XML 2.Örnek



Bu örnekte kod, kullanıcının girişini bir XPath ifadesi içinde kullanır. XPath, bir XML belgesinden düğümleri seçen bir sorgu dilidir. XML belgesini bir veritabanı olarak ve XPath'i bir SQL sorgusu olarak hayal edin. Sorguyu değiştirebilirseniz, normalde erişiminizin olmaması gereken öğeleri görebiliriz.

Tıpkı SQL enjeksiyonu gibi, XPath de bunları deneyebiliriz.

‘ and ‘1’=’1

‘ or ‘1’=’0

‘ and ‘1’=’0

‘ or ‘1’=’1


XPath ifadesinin geri kalanını yorumlamak için bir NULL BYTE kullanabiliriz. Bunu %00 olarak kodlamanız gerekir. Sözdizimini düzgün bir şekilde tamamlamak için ayrıca ‘ ] ‘ eklememiz gerekir.

Yükümüz artık hacker ']%00 veya tüm sonuçları istiyorsak hacker’ or 1= 1]%00 gibi olmalıdır.

1705941492041.png




 
Geri
Üst