Web Zafiyetleri A01:2021
CSRF Nedir? Cross-Site Request Forgery
CSRF, kullanıcıların bilgisi dışında kötü amaçlı işlemler yapılmasını sağlayan saldırıdır. Bu yazıda CSRF'nin ne olduğunu ve korunma yöntemlerini öğreneceksiniz.
Dosya yükleme işlemlerinde karşılaşılan güvenlik riskleri ve korunma yolları

Dosya yükleme zafiyeti, bir Web uygulamasının kullanıcı tarafından dosya yükleyebildiği noktalarda, dosyanın yeterince doğrulanmamasından kaynaklı (Uzantı, içerik, vb…) oluşan güvenlik açığıdır. Günümüzde ise popülerliğini tam anlamıyla yitirmeyip çoğu zaman karşımıza çıkabilmektedir.

Bu güvenlik açığının en kritik etkileri, saldırganın Web uygulamasında yüklediği dosyanın içerisinde sistem hakkında bilgi alabileceği zararlı komutlar, hatta Web uygulaması üzerinden kendi makinelerine ters bağlantı sağlayıp sistemde komut yürütme zafiyetlerine kadar şekillendirilebilmektedir.
Örnek File Upload Saldırısı
Şimdi sizlerle örnek bir zafiyetli PHP Kaynak kodu inceleyelim.
<?php
if (isset ($_POST["uploads"])) {
$addr = $_FILES ['input_image']['tmp_name']
$fileName = basename($_FILES ["input_image"]["name"]);
if(!=empty($fileName)) {
if(!file_exists("upload")) {
mkdir("upload") } }
$path = "upload/".$fileName
echo "<pre>{$fileName} Yüklendi!</pre>"
}
?>
Yukarıdaki kod üzerinde görünen; Kullanıcıdan herhangi bir kısıtlama olmadan (Dosya tipi, dosya ismi, vb…) direkt olarak alınan dosya yeni bir dizin oluşturularak “uploads/” dizinin altına yüklenmektedir. Saldırganın alttaki yöntem ile dosyayı sisteme yüklediği halde zafiyeti tetikleyecektir.
POST /lab/file-upload/
Host: [Host]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryL9BSIP2OjyWPkyN4
Content-Length: 331
------WebKitFormBoundaryL9BSIP2OjyWPkyN4
Content-Disposition: form-data; name="input_image"; filename="vuln.php"
Content-Type: application/octet-stream
<?php echo system("id"); ?>
------WebKitFormBoundaryL9BSIP2OjyWPkyN4
Yukarıda görüldüğü üzere resim dosya uzantısı değiştirilerek “vuln.php” PHP uzantılı dosya haline getirilmiş ve sisteme yüklenip dosya içerisinde hedef sistemden “id” bilgisini getirecek kod yazılmıştır.
File Upload Zafiyeti Nasıl Önlenir?
Web uygulamanıza dosya yüklenmesi çok normal bir durumdur fakat gerekli önlemleri almazsanız durum kritikleşebilir. Bu yüzden aşağıdaki kuralları uygulamanız halinde daha güvenli hale getirebilirsiniz: