Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Dosya yükleme modülleri, web uygulamalarındaki en zayıf halkalardan biridir. Küçük olduğunu düşündüğünüz hatalar da dahil olmak üzere yapılan herhangi bir hata, sunucu kontrolünün doğrudan bir siber saldırganın eline geçmesine neden olabilir. Bu nedenle yazılım geliştiricilerin en sık yapılan hataları ve meydana gelebilecek bazı saldırı yöntemlerini bilmesi gerekmektedir.

Peki istemci tarafında kurcalama nedir? Sitelerinizi ve kullanıcılarınızı güvende tutmak için bununla nasıl mücadele edebilirsiniz?

İstemci Tarafında Kurcalama Nedir?

İstemci tarafı kurcalama, bir bütün olarak web uygulaması saldırılarının temel konseptidir. Basitçe söylemek gerekirse, kullanıcıya gönderdiğiniz hiçbir veriye artık güvenemeyeceğiniz anlamına gelir. Ek olarak, istemci tarafında kurcalama, güvenli uygulama geliştirmenin temellerinden biridir. Karşılaştığınız dosya yükleme modülünü incelerseniz ve istemci tarafında kurcalamayı düşünürseniz, güvenemeyeceğiniz veriler şunları içerir:

instagram viewer

  • Yüklenen dosyanın adı.
  • Yüklenen dosyanın İçerik Türü.

Bu iki öğe nerede beyaz listeye alma fırsatınız var bir yazılım geliştiricisi olarak. Karşıya yüklenen dosyanın ad verisi, istemci tarafında kurcalanmış herhangi bir şey içerebilir. Yüklenen dosyanın Content-Type verileri ile saldırgan bir .exe dosyası yüklüyor olsa dahi bu dosya sistemde image/jpeg olarak görünebilir.

Dosya Uzantısı ve Beyaz Listeleme

Dosya yükleme modüllerini geliştirirken yapılacak ilk şey, dosya uzantısı için beyaz listeye alma işlemi. Örneğin, bir kullanıcı "muo.jpeg" adlı bir dosya yüklemek istiyor. Kullanıcının yüklemek istediği bu dosya uzantısının .jpeg olduğundan emin olmalısınız. Bunun için sistem yüklenen dosyayı kontrol etmeli ve izin verilen dosya uzantılarından biri olup olmadığına bakmalıdır. Bunu nasıl yapabileceğinizi anlamak için aşağıdaki basit PHP kodunu inceleyin:

$file_parts = yol bilgisi($dosyaadı);
anahtar($file_parts['uzantı'])
{
dava "jpg":
kırmak;

dava "yarasa": // Veya exe, dll vb.
kırmak;

dava "":
davaHÜKÜMSÜZ: // Dosya uzantısı yok
kırmak;
}

Bunu yukarıdakine benzer bir kod bloğu ile yapabileceğiniz gibi kullandığınız çatının sağladığı sınıfları ve fonksiyonları da kullanabilirsiniz.

Dosya adını nokta (.) karakterine göre ayrıştırarak dosya uzantısı verisi oluşturmamaya dikkat edin çünkü saldırgan bu kontrol adımını "muo.jpeg.php" gibi bir dosya adı ile atlayabilir.

İçerik Türü Bilgisi Nedir?

İçerik Türü bilgisi, her dosya yüklemesi için HTTP isteğinde gönderilen bir bilgi parçasıdır. İnternet tarayıcısı bu bilgiyi algılar ve gönderilen talebe ekler. Saldırgan, istemci tarafı kurcalama ile bilgileri değiştirmeye ve sunucu tarafı doğrulamalarını atlamaya çalışabilir. Bu aşamada, geliştiricilerin Content-Type bilgileri üzerinde doğrulamalar yapmak için bir kontrol mekanizmasına ihtiyacı vardır. Bu tek başına yeterli olmayacak; yine de geliştiricilerin dikkat etmesi gereken önemli bir konu.

Diyelim ki dosya uzantısını doğru kontrol edecek bir mekanizma kodluyorsunuz ve sadece .jpeg uzantılı dosyaları kabul ediyorsunuz. Bu önlem mekanizmasına ek olarak İçerik-Türü bilgisini anında kontrol edebilirsiniz. case ve yalnızca görüntü/jpeg bilgileri içeren dosyaları kabul edin; siber saldırılar

SWF Flash Dosyaları ve Saldırı Adımları

Dosya uzantısı ve İçerik Türü verileri, Adobe Flash Player gibi eklentileri destekleyen internet tarayıcıları için hiçbir şey ifade etmez. Bu oynatıcı için destek artık mevcut olmasa da, ilgili dosyaları birçok sisteme yüklemek hala mümkündür. Flash bir güvenlik riski olmaya devam etse de. İlgili önlemlerin alınmadığı bir sistemde, bir Flash dosyasını şu kodla çağırmak mümkündür: etiketi, uzantısından bağımsız olarak. Bu, başka bir ciddi güvenlik sorununa neden olacaktır.

Harekete geçmek için geliştiricilerin siber suçluların izleyebileceği yolları bilmesi gerekir. Bunun nasıl olabileceği aşağıda açıklanmıştır:

  1. Kötü niyetli saldırgan, hedef web sitesine "image.jpeg" adlı bir SWF (bir Adobe Flash dosya biçimi) yükler. Yükleme işlemi sırasında, saldırgan tarafından yüklenen dosyanın .jpeg uzantılı olduğu beyaz liste doğrulamasında onaylanır. İçerik Türü doğrulaması, istemci tarafı kurcalamayla atlanır. Tehdit aktörü tarafından yüklenen bu dosyanın "www (nokta) hedef-site (nokta) com/images/images.jpeg" adresine gittiğini hayal edin.
  2. Diyelim ki saldırganın saldırgan (nokta) com diye bir internet sitesi var. Saldırgan, bu web sitesindeki hedef siteye yüklenen image.jpeg dosyasını kullanarak çağırır. application/x-shockwave-flash tipi ataması ile etiketleyin.
  3. Masum bir kullanıcı, saldırgan (nokta) com'da oturum açar. Bu site www (dot) target-site (dot) com/images/image.jpeg adresindeki SWF dosyasını çağırır ve SWF'ye verilen komutları yürütür.
  4. Bu sayede siber saldırgan, normal kullanıcılar fark etmeden hedef site (nokta) com adresi için HTTP istek eylemleri oluşturabilir. Saldırgan bu isteklerle masum kullanıcının oturumunu kullanacak ve atlayacaktır. CSRF kontrolü.

Bu saldırı senaryosunu daha net anlamak için aşağıdaki kodun HTML'de olmasını düşünün. saldırgan (nokta) com tarafından kullanıcıya gönderilen içerik:

stil="yükseklik: 1 piksel; genişlik: 1 piksel;" veri="www.target-site.com/images/image.jpeg" tür="uygulama/x-shockwave-flash" allowscriptaccess="Her zaman" flashvars="c=oku&u=bir şey"

En iyi çözümlerden biri, dosya yükleme ile yüklenen dosyalara üzerinden erişmektir. farklı bir alt alan. Bahsedilen senaryoda statik dosyalara aynı domainden değil, farklı bir subdomain'den "http (colon)//file.target-site (nokta) com/images/image.jpeg" şeklinde erişebilirsiniz.

Başka bir çözüm eklemektir İçerik Eğilimi: ek Yüklemek istediğiniz dosyalara erişim için bir istek aldığınızda HTTP yanıtına bilgi.

Dosya Yükleme Güvenlik Açıkları için Önlem Alın

Kullanıcıların bir web sitesine yapabilecekleri herhangi bir dosya yüklemesi tehlikelidir, bu nedenle geliştiricilerin en çok dikkat etmesi gereken konulardan biridir. Saldırganlar böyle bir güvenlik açığı keşfederse site içerisinde bir kabuk açarak sunucudaki bilgileri kolaylıkla istismar edebilirler. Kullanıcılar tarafından yüklenen tüm dosyaları kontrol etmek, beyaz liste yöntemlerini uygulamak ve mümkünse yüklenen dizinin konumunu gizlemek hayati önem taşır.

Ve tabii ki, dosya modüllerini yüklemek için önerilen tüm önlemleri alsanız bile sitenizi korumak için atmanız gereken birçok ek adım vardır. HTTP güvenlik başlıklarını kullanmak, atabileceğiniz böyle bir adımdır.