- Güvensiz Dosya Yükleme Zafiyetleri (Unrestricted File Upload)
Son kullanıcıya hizmet veren web uygulamalar kullanıcılara dosya yükleme yetkiside vermektedir. Yüklenen dosyalar, uygulamalar için önemli bir risk oluşturur. Birçok saldırıda ilk adım, saldırıya uğrayacak sisteme bir zararlı kod içeren ve sistemde komut çalıştırmasına imkan tanıyacak kodları içeren dosyayı yüklemektir. Güvensiz dosya yükleme aşaması, saldırganın ilk adımı atmasına yardımcı olur. Güvensiz dosya örneklerine .jsp, .php , .asp gibi doğrudan web servisi tarafından işlenebilecek dosya türleri örnek gösterilebilir. Bu güvenlik zafiyetleri web uygulamalardaki güvensiz ve yetersiz kod parametlerinin eklenmesiyle oluşur.
- Zayıf Korumalar ve Bypass Yöntemleri (Weak Protections and Bypassing Methods)
- Riskli Dosya Uzantıları Engellemek için Bypass Teknikleri
- Sunucu tarafında çalıştırılabilen veya istemci tarafında tehlikeli olabilecek eksik uzantıları bulma (örn. “.php5”, “.pht”, “.phtml”, “.shtml”, “.asa”, “.cer” , “.asax”, “.swf” veya “.xap”).
- Çift uzantılı dosyaları ayrıştırdığında veya “/” veya “;” gibi bir sınırlayıcıdan sonra hassas bir uzantı sağlayarak bunları çalıştırdığında bir web sunucusu yapılandırmasındaki hataları bulma karakterleri (örneğin, “file.jpg” dosyası PHP kodu içerdiğinde ve yüklendiğinde “/file.jpg/index.php”
- Apache’de, “.jpg”ye izin verildiğinde “file.php.jpg” gibi çift uzantı tekniği kullanılarak bir php dosyası yürütülebilir.
- IIS6’da (veya önceki sürümlerde), aşağıdaki iki yöntemden biri kullanılarak bir komut dosyası yürütülebilir:
- Yüklenmesine izin verilmeyen uzantıdan sonra ve izin verilen uzantıdan önce noktalı virgül karakteri ekleyerek (ör. “file.asp;.jpg”) bir komut dosyasının uzantısını (ör. “.asp”) izin verilen bir uzantıya (ör. “.txt”) yeniden adlandırarak, adı komut dosyasının uzantısıyla biten bir klasörde (ör. “folder.asp\file.txt”). Windows’ta bir dosya yükleyici ve ADS (Alternate Data Stream) kullanarak bir dizin oluşturmak mümkündür. Bu yöntemde, “::$Index_Allocation” veya “:$I30:$Index_Allocation” ile biten bir dosya adı, dosya yükleyicinin bir dosya yerine bir dizin oluşturmasını sağlar (örn. bir dizin).
- Büyük/küçük harfe duyarlı kuralları (örneğin, “file.aSp” veya “file.PHp3”) atlamak için birkaç harfi büyük harf biçimlerine değiştirmek.
- Windows 8.3 özelliğini kullanarak, mevcut dosyaları kısa adlarını kullanarak değiştirmek mümkündür (örneğin, “web.config”, “web~1.con” ile değiştirilebilir veya “.htaccess”, “HTACCE~1” ile değiştirilebilir)
- Dosya yükleme işlemi sırasında diğer yararlı karakterlere dönüştürülen karakterleri bulma. Örneğin, PHP’yi IIS üzerinde çalıştırırken, “>”, “<” ve çift tırnak ” karakterleri sırasıyla “?”, “*” ve “.” mevcut dosyaları değiştirmek için kullanılabilecek karakterler (ör. “web<<“, “web.config” dosyasının yerini alabilir).Normal bir dosya yükleme isteğinde dosya adına çift tırnak karakteri eklemek için, “Content-Disposition” başlığındaki dosya adı tek tırnak kullanmalıdır (örneğin, “web.config” dosyasının yerine filename=’web”config’) ).
- Uzantı algılama tekniklerindeki hataları bulma. Bir web sunucusu, sağlanan dosya adındaki ilk noktadan (“.”) sonraki ilk uzantıyı kullanabilir veya hiç veya birden fazla nokta karakteri olmadığında (örneğin, “file.txt.jpg.php”) uzantıyı algılamak için hatalı bir algoritma kullanabilir.
- Yasak bir uzantıdan sonra ve izin verilen bir uzantıdan önce boş karakter (0x00) gibi kontrol karakterlerinin kullanılması bir baypasa neden olabilir. Bu yöntemde, dosyalar kaydedilirken Null karakterinden sonraki tüm dizeler atılacaktır. Kapsamlı bir test için bir dosya yükleme talebinde boş karakterin hem URL kodlu hem de kodu çözülmüş sürümü denenmelidir.
- Tehlikeli uzantıların yerini aldığında koruma mekanizmasındaki hatalar. Örneğin, bu işlevsellikten geçtikten sonra “file.p.phphp”, “file.php” olarak değiştirilebilir.
- Riskli Dosya Uzantıları Engellemek için Bypass Teknikleri
- Uygulama Zafiyetleri Son kullanıcı ihtiyaçlarının karşılanmasına yönelik hazırlanan hazır web yazılımları zafiyetli kodlar içerebilir bu zafiyetli kod parçacıkları web shell ataklarına neden olabilir.