Bir ayar ya da parola dosyası indirilebiliyor
sec_exposed_envKısa cevap
Herkes sitenizden bir ayar ya da parola dosyası indirebiliyor, örneğin /.env. Bu dosyalar veritabanı parolalarını, API anahtarlarını, e-posta ve ödeme kimlik bilgilerini taşır. Erişimi hemen kapatın, ardından dosyadaki her gizli bilgiyi değiştirin: botlar /.env adresini gece gündüz ister; değerlerin çoktan kopyalandığını varsayın.
Neden önemli
.env internette en çok istenen yollardan biridir; otomatik tarayıcılar buldukları her alan adından bu dosyayı ister, çoğu zaman site yayına girdikten birkaç saat sonra. İçeriğiyle saldırgan veritabanınıza girebilir, sizin adınıza e-posta gönderebilir, bulut ya da ödeme hesaplarınıza fatura çıkarabilir veya oturum taklit edebilir. Açıktaki bir .htpasswd çevrimdışı kırılabilecek parola özetlerini verir.
Ardından gelen bir saldırı çoğu zaman sızdırılmış spam sayfaları, zararlı yazılım ve Google sonuçlarında "Bu site saldırıya uğramış olabilir" etiketi getirir; bunlar arama trafiğine gerçekten zarar verir. Tek güvenli yol hızla engellemek ve gizli bilgileri yenilemektir.
Glimana bunu nasıl tespit eder
Glimana HTTPS üzerinden /.env, /.env.backup, /.env.production ve /.htpasswd adreslerini ister ve yalnız ilk 2 KB'ı okur. Yanıt 200 ya da 206 ise, HTML sayfası değilse ve en az biri hassas görünen (KEY, SECRET, PASS, TOKEN, DB_, DATABASE, MAIL_, AWS_, STRIPE ya da API içeren) en az iki AD=değer satırı taşıyorsa env dosyası açıkta sayılır. .htpasswd, kullanıcı adı ve parola özeti satırları içeriyorsa sayılır. Var olmayan rastgele bir adresle aynı olan yanıtlar yok sayılır; her adrese aynı sayfayı veren siteler bu yüzden yanlış alarm üretmez. Sorun yalnız değişken adlarını gösterir, değerleri asla. Kritik; yeni bir bulgu ayrıca hemen uyarı e-postası gönderir.
Nasıl düzeltilir
Dikkat
Dosyayı engellemek yetmez: içindeki her değer ele geçirilmiş sayılmalıdır. Veritabanı parolasını, e-posta ve API anahtarlarını, ödeme ve bulut kimlik bilgilerini, OAuth gizli anahtarlarını değiştirin ve eskilerini her sağlayıcıda iptal edin. Laravel'de yeni bir APP_KEY herkesin oturumunu kapatır ve eski anahtarla şifrelenmiş veriyi okunamaz yapar; geçiş sürerken eski anahtarı APP_PREVIOUS_KEYS içinde tutun. CDN önbelleğinizi de boşaltın ve erişim kütüklerinde dosyanın daha önce indirilip indirilmediğine bakın.
- Glimana'da bulguyu bulun. Güvenlik sayfasını açın; bu kontrol Açıkta kalan dosyalar grubunda, son taramanın kanıtı başlığının altında. Aynı sorun Sorunlar › Bir ayar ya da parola dosyası indirilebiliyor altında da listelenir.
-
Düzeltmeyi platformunuzda uygulayın.
Web sunucusunun belge kökü proje klasörü değil
public/klasörü olmalıdır; o zaman.envkökün dışında kalır ve sunulamaz. Paylaşımlı barındırmada projenin tamamınıpublic_htmliçine kopyalamak yerine alan adını barındırma panelindenpublic/klasörüne yönlendirin..env.backupgibi artık kopyaları sunucudan tamamen silin.Sanal sunucu ayarında ya da
.htaccessiçinde/.well-known/(sertifika yenileme için gerekli) dışındaki tüm gizli dosyaları engelleyin:RewriteEngine OnveRewriteRule "(^|/)\.(?!well-known/)" - [F]. Apache'nin varsayılan ayarı.ht*dosyalarını engeller, ama yalnız o blok yerinde duruyorsa.serverbloğunda, diğer düzenli ifadelocationbloklarından önce:location ~ /\.(?!well-known) { deny all; }, ardındannginx -t && systemctl reload nginx. Nginx.htaccessdosyasını okumaz; Apache için yazılmış engelleme kuralları burada sizi korumaz.Sunucuyu düzeltirken anında kalkan olarak: Security › Security rules › Create rule › Custom rules, ifade
(starts_with(http.request.uri.path, "/.env")) or (starts_with(http.request.uri.path, "/.ht")), eylem Block. Ardından önbelleği boşaltın. Bu yalnız Cloudflare'den geçen istekleri kapsar; origin IP'nizi bilen herkes dosyaya yine ulaşabilir, sunucuyu da düzeltin. - Glimana'da kontrol edin. Güvenlik sayfasında Yeniden tara düğmesine basın (saatte en çok iki tarama) ya da pazar günkü haftalık taramayı bekleyin; kontrol geçince sorun kapanır.
Düzeltme nasıl doğrulanır
Düzelttikten sonra Güvenlik sayfasında Yeniden tara düğmesine basın (ya da pazar günkü haftalık taramayı bekleyin); kontrol geçtiği anda sorun kapanır.