Bir PHP / Apache / Linux bağlamda, neden tam chmod 777 tehlikelidir?

3 Cevap php

3 Cevap

İşte bir senaryo:

  1. Kullanıcıların yükleyebilirsiniz korunmasız dizin var.
  2. Bir kabuk ve kabuk komut dosyası içinde bir system() çağrı vardır bir php dosyası: Onlar iki dosya yükleyin.
  3. onlar sadece kabuk komut yürütmek için neden kendi tarayıcınızda url ziyaret ederek tarih php komut dosyası erişmek.

Bu dizin 777 ise, o (komut olarak yürütmek ne php kullanıcı apache dahil) herkes onu çalıştırmak anlamına gelir! Yürütmek bit dizin içinde bu dizindeki ve muhtemelen dosyalar ayarlı değilse, o zaman bir şey yapacağını yukarıdaki adım 3.

yorumlarından edit: fark PHP dosyanın izinleri değil, linux kullanıcı apache (ya da ne olursa olsun apache dizi olması ile bir linux sistem çağrısı olarak çalıştırılacak PHP dosyası içinde system() çağrısı ) olarak çalıştırmak, ve bu yürütme bit konularda EKSİKSİZ yerdir.

İşte izinleri gelince minimalizm takip etmek çok iyi bir genel nedeni vardır, ancak bir lamba host bağlamında, akla kolayca geldiğini kaçıdır

  • Bir hosting platformu üzerinde, ev sahibi paylaşan diğer kullanıcılar artık okuyabilir ve komut yazmak.
  • Özel bir host, allık süreçler okuma / yazma ve yanlışlıkla dosyaları silebilirsiniz. rm -rf / çalışırken bunun sonuçları bir hata var kullanıcı kimse olarak arka planda çalışan özel bir günlük bir süreç var diyelim. Pek kimse yazma izinlerine sahip olmalıdır ama bu rouge süreç şimdi onunla dosyalarınızı alacak herhangi bir dosya olmazdı çünkü Şimdi genellikle bu zararsız olacaktır.
  • Web sitenizin tahrif etmek, birisi sadece, herhangi bir kullanıcı olarak erişebilir hatta kimse veya bazı tür kukla hesabı söylemek gerekiyor. Genellikle, saldırganın o bazı hasar yapabilir yer almak için bir başka kullanıcı düzeyi eskalasyon saldırı yapmak gerekir. Bu gerçek bir tehdittir. Bazı kritik olmayan hizmetler sahte hesaplara altında çalışıyor olabilir ve bir açığını içerebilecek.

O bir hesaba kırmak için sadece gerekli, çünkü bu büyük ölçüde zararlı aktivite için web sitenizin açığı profilini artırır.

Herhangi bir giriş ile sisteme erişen herkes okumak için onları değiştirmek gibi sayfalarınıza onlar istediğimizi yapabiliriz "böylece Bana kredi kartı bilgi veriniz Bu web sitesi gerçekten çok güvensizdir."

DÜZENLEME: (yorumlarınıza açıklığa kavuşturmak ve çözmek için)

Birçok sunucu hayatta birden fazla amacı var. Onlar birden fazla hizmet çalıştırın. Eğer dikkatle her benzersiz bir kullanıcı atama ve buna göre dosya izinlerini yöneterek birbirinden bu hizmetleri izole ederseniz, evet, birisi bir hesabın kimlik bilgilerini ödün eğer sıcak su hala, ama onlar yapabileceği hasar o bir hizmet sınırlıdır . Eğer sadece tek bir jenerik hesabınız varsa ve 777 tüm dosya sistemini ayarlayın, bir tehlikeye hesap makinesinin her şeyi tehlikeye atar.

Sunucu sadece Apache / PHP çalışan adanmış ve hayatta başka hiçbir amaca hizmet ve Apache / PHP çalıştırıldığı altında yalnızca bir hesabı tehlikeye bir hesap taviz tüm makine sahip olarak iyi olduğunu sahip, mevcut ise Başvurunuzun bakış noktası (hala PHP çalıştırmak için kullanılan hesabın sistem korumalı dosyaları ve non-yazılabilir olması gerektiği halde ... o hala sadece bir yönetici hesabı / root için mümkün olmalıdır).

Onlar bir dosyayı yazabilirsiniz, ve çalıştırılabilir ise, bunlar makine (yürütülebilir veya script) üzerinde yürüten bir şeyle değiştirmek ve o çalıştırılabilir programlar PHP'nin shell_exec kullanabilirsiniz. Eğer shell_exec izin vermek için yapılandırılmış ediyorsanız, onlar da sizin yapılandırmasını değiştirebilirsiniz