Yaygın Web Uygulama Saldırıları
Web uygulamaları, erişilebilirlikleri ve sıklıkla işledikleri hassas veriler nedeniyle saldırganlar tarafından giderek daha fazla hedef alınmaktadır.
Dizin Gezintisi
Genel bakış
Dizin geçişi, yol geçişi olarak da bilinir, bir saldırganın bir web uygulamasının amaçlanan dizin yapısı dışında depolanan dosyalara ve dizinlere erişmesine olanak tanıyan bir güvenlik açığıdır. Giriş parametrelerini değiştirerek, bir saldırgan hassas dosyalara erişmek için dosya sisteminde gezinebilir.
Nasıl Çalışır
Saldırı genellikle dizin ağacında yukarı doğru hareket etmek için (nokta-nokta-eğik çizgi) gibi dizileri kullanmayı içerir. Örneğin, bir web uygulamasının görüntülenecek bir dosyayı belirten bir URL parametresi varsa, örneğin:../
Bir saldırgan isteği şu şekilde değiştirebilir:
Bu istek , Unix tabanlı sistemlerdeki dosyaya erişmeye çalışır ve bu da kullanıcı hesaplarına ilişkin hassas bilgilerin ifşa edilmesine neden olabilir./etc/passwd
Önleme Stratejileri
- Giriş Doğrulaması:
- Kullanıcı girdilerinin sıkı doğrulamasını uygulayın. Yalnızca önceden tanımlanmış dosya adlarına izin verilen bir beyaz liste yaklaşımı kullanın.
- Geçerli dosya adı kalıplarını zorunlu kılmak için düzenli ifadeler kullanılabilir.
- Kanonik Yol Doğrulaması:
- Kullanıcı tarafından sağlanan dosya adlarının mutlak yolunu çözün ve beklenen temel dizinle başladığından emin olun.
- Yolları doğrulamak için PHP'deki veya diğer dillerdeki benzer fonksiyonları kullanın .
realpath()
- Erişim Kontrol Listeleri (ACL'ler):
- Kullanıcı rollerine göre erişimi sınırlamak için dosya ve dizinlere katı izinler ayarlayın.
- Hassas dosyalara web sunucusu üzerinden erişilemediğinden emin olun.
Dosya Dahil Etme Güvenlik Açıkları
Genel bakış
Dosya dahil etme güvenlik açıkları, bir uygulama kullanıcıların uygun doğrulama veya kısıtlamalar olmadan sunucunun dosya sisteminden dosya eklemesine izin verdiğinde ortaya çıkar. Bu, bir saldırganın yerel sunucudan dosya eklemesi anlamına gelen Yerel Dosya Dahil Etme (LFI) veya bir saldırganın harici sunuculardan dosya eklemesi anlamına gelen Uzak Dosya Dahil Etme (RFI) ile sonuçlanabilir.
Nasıl Çalışır
Kullanıcı tarafından belirtilen dosyaları içeren bir PHP uygulamasını düşünün:
Eğer bir saldırgan şuna benzer bir URL sağlarsa:
Bu, veritabanı kimlik bilgilerini içeren hassas yapılandırma dosyalarını eklemelerine olanak tanıyabilir.RFI senaryolarında, uzaktan dosya ekleme etkinleştirilirse, bir saldırgan şunları kullanabilir:
Bu, harici bir sunucuda barındırılan kötü amaçlı kodun çalıştırılmasına neden olur.
Önleme Stratejileri
- Beyaz Liste Dosya Adları:
- Dahil edilebilecek izin verilen dosyaların bir listesini tutun ve kullanıcı girdisini bu listeye göre doğrulayın.
- Keyfi girdilere izin vermek yerine dosya yolları için sabitler veya yapılandırma ayarları kullanın.
- Include İfadelerinde Kullanıcı Girişinden Kaçının:
- Kullanıcı tarafından sağlanan girdiyi doğrudan eklemek yerine, önceden tanımlanmış şablonları veya statik dosyaları kullanmayı düşünün.
- Kullanıcı girdisini sistem düzeyindeki komutlardan ayıran mantığı uygulayın.
- Hata İşleme:
- Kullanıcılara ayrıntılı hata mesajlarının gösterilmesini önlemek için sağlam hata işleme uygulayın.
- Hassas bilgilerinizi ifşa etmeden, hataları ayıklamak için güvenli bir şekilde günlüğe kaydedin.
Dosya Yükleme Güvenlik Açıkları
Genel bakış
Dosya yükleme güvenlik açıkları, bir uygulama kullanıcıların içeriklerinin veya türlerinin yeterli doğrulaması olmadan dosya yüklemesine izin verdiğinde ortaya çıkar. Bu, sunucuda kötü amaçlı dosyaların yürütülmesine yol açabilir ve veri ihlallerine veya sunucunun tehlikeye girmesine neden olabilir.
Nasıl Çalışır
Bir web uygulaması sıkı denetimler olmadan dosya yüklemelerini kabul ettiğinde, bir saldırgan zararsız bir dosya türü (örneğin, bir resim) olarak gizlenmiş bir betik yükleyebilir. Örneğin:
Yüklenen dosya türü doğru bir şekilde doğrulanmazsa , saldırgan web sunucusu üzerinden erişilerek çalıştırılabilen adlı bir PHP kabuk betiği yükleyebilir .upload.php
shell.php
Önleme Stratejileri
- Dosya Türü Doğrulaması:
- Kabul edilebilir türlerin (örneğin, , ) bulunduğu bir beyaz listeye göre hem dosya uzantılarını hem de MIME türlerini kontrol edin. '
.jpg ' '
.png'
- Yüklenen dosyaların gerçek içeriğini doğrulamak için PHP'dekine benzer fonksiyonları kullanın ' .
finfo_file()'
- Kabul edilebilir türlerin (örneğin, , ) bulunduğu bir beyaz listeye göre hem dosya uzantılarını hem de MIME türlerini kontrol edin. '
- İçerik Tarama:
- Yüklenen dosyaları işlemeden önce antivirüs yazılımları veya kütüphaneleri kullanarak kötü amaçlı yazılımlara karşı tarayın.
- Kötü amaçlı içeriklere karşı dosya tarama konusunda uzmanlaşmış hizmetleri kullanmayı düşünün.
- Yürütme İzinlerini Kısıtla:
- Yüklenen dosyaları yürütme izinleri olmayan dizinlerde (örneğin, web kökünün dışında) saklayın.
- Yüklenen dosyaları yeniden adlandırın ve öngörülebilir URL'ler üzerinden doğrudan erişimi önlemek için bunları benzersiz tanımlayıcılarla saklayın.
Komut Enjeksiyonu
Genel bakış
Komut enjeksiyonu güvenlik açıkları, saldırganların komut yürütme işlevlerine kötü amaçlı girdi enjekte ederek sunucuda keyfi komutlar yürütmesine olanak tanır. Bu, yetkisiz erişime, veri kaybına veya sistemin tamamen tehlikeye atılmasına yol açabilir.
Nasıl Çalışır
Bir web uygulamasının uygun bir temizleme işlemi yapmadan sistem komutlarında kullanıcı girdisini kullandığı bir senaryoyu ele alalım:
Bir saldırgan, şu tür girdiler sağlayarak bunu suistimal edebilir:
Bu hem ping komutunu çalıştırır hem de kabuk komutunun yorumlanması nedeniyle dizin içeriklerini listeler.
Önleme Stratejileri
- Giriş Dezenfeksiyonu:
- Kullanıcı girdilerini sistem komutlarında kullanmadan önce her zaman temizleyin ve doğrulayın.
- Kullanılan programlama diline özgü kaçış fonksiyonlarını kullanın (örneğin PHP'de).
escapeshellarg()
- Güvenli API'leri kullanın:
- Mümkün olduğunca doğrudan komut yürütmeyi soyutlayan üst düzey API'leri tercih edin.
- Örneğin, kabuk komutlarını doğrudan yürütmek yerine ağ istekleri için yerleşik kitaplıkları kullanın.
- En Az Ayrıcalık İlkesi:
- Uygulamaları işlevleri için gereken en az izinlerle çalıştırın.
- Başarılı saldırıların olası etkisini azaltmak için sistemle etkileşimde bulunan kullanıcılar ve işlemler için erişim haklarını sınırlayın.
Çözüm
Bu yaygın web uygulaması saldırılarını anlamak, güvenli uygulamalar geliştirmek için olmazsa olmazdır. Sağlam doğrulama tekniklerini, sıkı erişim kontrollerini uygulayarak ve yukarıda belirtilen en iyi uygulamaları takip ederek, kuruluşlar bu riskleri önemli ölçüde azaltabilir ve sistemlerini olası tehditlerden koruyabilir. Düzenli güvenlik değerlendirmeleri ve güncellemeleri de gelişen saldırı vektörlerine karşı güçlü bir güvenlik duruşunu sürdürmek için önemlidir.