LYK — Web Uygulama Güvenliği ve Güvenli Kod Geliştirme (8.gün)

Bir önceki yazı için tıklayın.

Dosya Yükleme Zafiyeti

Tarayıcı dosya yüklemeleri yaparken Content-Type:image/jpeg yada Content-Type: application/php gibi headerlar ile sunucuya dosya tipini gönderir. Yazılımcı gelen dosya tipini kontrol etmeksizin erişime izin verirse zafiyet açığa çıkar. Hiçbir kontrol yapılmamış olan bir profil fotoğrafı yükleme alanına, php dosyası yükleyelim. Php dosyasında 
<?php echo system ($_GET['x']);?> kodu olsun. Girdi kontrolü yapılmamış sitede adres çubuğunda site.com/resimler/dosya.php?x=ls yazdığımızda resimler dizinin içindeki dosyaları listelemiş oluruz. Burada yaptığımız, sitede shell açmaktır. Site içerisinde terminal komutları kullanarak istediğimizi yapabilir duruma geldik. 
Burada ilk akla gelen php uzantılı dosyaları engellemek olabilir. Fakat kesin çözüm değildir.

Dosya Yükleme Saldırılarından Nasıl Korunabiliriz?

Alınan img dosyası Imgick kütüphanesine eklenebilir. Bu fonksiyon gelen dosyayı img formatına çevirir. Aynı şekilde mp3 ve pdf gibi formatlar içinde kütüphaneler mevcuttur. İmkan varsa gelen dosyalar farklı bir sunucuda tutulabilir. Resimler için kullanılan sunucuda sadece apache çalışır olup, php olmazsa o sunucuda php kodu çalıştırılamaz.

Bir sonraki yazı için tıklayın.