🔴🔵 Red vs Blue #6: Web Shell Yükleme (RCE) vs WAF & Dosya Bütünlük Denetimi (FIM) Web uygulamalarındaki profil fotoğrafı yükleme, belge ekleme veya dosya içe aktarma işlevleri; doğru yapılandırılmadığında sunucunun kontrolünü tamamen saldırgana teslim eden en kritik kapılardan biridir. Saldırganlar, sınırsız dosya yükleme zafiyetlerini (Unrestricted File Upload) kullanarak sunucuya zararlı komut çalıştırıcılar (Web Shell) yüklemeyi ve Uzaktan Kod Çalıştırma (RCE) elde etmeyi hedefler. 🔴 Kırmızı Takım (Red Team): Güvenlik Kontrollerini Atlama ve Web Shell Enjeksiyonu Saldırganlar basit uzantı veya içerik filtrelerini baypas etmek için katmanlı teknikler kullanır: Uzantı / MIME Type Spoofing: Zararlı bir .php veya .aspx dosyasını HTTP isteğinde Content-Type: image/jpeg olarak değiştirerek veya çift uzantı (shell.jpg.php, shell.php;.jpg) teknikleriyle filtreleri yanıltır. Magic Byte Manipülasyonu: Dosyanın en başına geçerli bir resim imzası (örneğin JPEG için FF D8 FF) ekleyip altına zararlı PHP/ASP kodunu gizleyerek yüzeysel içerik taramalarını aşar. Obfuscation (Karmaşıklaştırma): Antivirüs ve WAF imzalarına takılmamak için Web Shell kodunu Base64, rot13 veya dinamik fonksiyon çağrılarıyla gizler. RCE Ele Geçirme: Yüklenen zararlı dosya web sunucusu üzerinden çağrıldığı an web servisinin yetkileriyle (ör. www-data) sunucuda doğrudan komut koşturulur. 🔵 Mavi Takım (Blue Team): Sıkı Filtreleme, Dizin Yetkisizleştirme ve FIM Zırhı Mavi Takım, dosya yükleme alanlarını katmanlı güvenlik (Defense in Depth) felsefesiyle korur: Sunucu Tarafı Sıkı Beyaz Liste (Server-Side Whitelist): Kara liste (blacklist) yaklaşımı yerine sadece kesin ihtiyaç duyulan uzantılara (.jpg, .png, .pdf) izin verilir. Yüklenen dosya adı rastgele bir kimlikle (UUID) yeniden adlandırılır. Magic Bytes ve İçerik Doğrulaması: Dosya uzantısına veya HTTP başlığına bakılmaksızın dosyanın ilk baytları (Magic Bytes) ve gerçek yapısı sunucu tarafında doğrulanır. Kod Çalıştırma Yetkisini Kaldırma (No-Exec): Yüklenen dosyaların tutulduğu dizinlerde (/uploads/) kod çalıştırılması (PHP, ASP, CGI execution) web sunucusu seviyesinde tamamen engellenir veya dosyalar web root dışındaki güvenli bir depolama alanına (örneğin izole S3 bucket) kaydedilir. WAF ve FIM (File Integrity Monitoring): Web Application Firewall zararlı payload taşıyan istekleri keser. FIM çözümleri (ör. Wazuh, Tripwire) ise web dizininde izinsiz oluşturulan veya değiştirilen her PHP/ASP dosyasını anında tespit ederek otomatik izolasyon başlatır. ---- Saldırgan ve Savunma Tarafı Kod Nüansı: // RED TEAM: Karmaşıklaştırılmış Basit Bir PHP Web Shell Kodu <?php @eval(base64_decode($_POST['cmd'])); ?> // BLUE TEAM: Nginx Konfigürasyonu ile Yükleme Dizininde Kod Çalıştırmayı Engelleme location /uploads/ { location ~ \.(php|php5|phtml|php7|aspx)$ { deny all; } } ---- Özet Karşılaştırma Red Team Amacı: Dosya yükleme mekanizmalarını atlatıp sunucuya Web Shell yerleştirmek ve RCE ile sunucu yetkilerini ele geçirmek. Zayıflık: Sadece istemci tarafı (client-side JavaScript) kontrollerine güvenilmesi, kara liste yöntemi kullanılması veya yükleme dizininde kod çalıştırma izinlerinin açık bırakılması. Blue Team Çözümü: Server-Side Whitelist + Magic Byte Kontrolü + Upload Dizininde Execution Kapatma + FIM (Dosya Bütünlük İzleme). O zaman Mustafa soruyor: Şirketinizdeki veya projelerinizdeki web uygulamalarında kullanıcıların dosya yüklediği dizinlerde kod çalıştırma (execution) yetkileri kapalı mı? Web dizinlerinize izinsiz bir script yüklendiğinde bunu anında fark edecek bir FIM (Dosya Bütünlük Denetimi) altyapınız var mı? Düşüncelerinizi yorumlarda paylaşın! 👇 Okuduğunuz için teşekkürler! Kendinize, verilerinize ve dijital zırhınıza çok iyi bakın! 🌼