Sitenin kaynak kod deposu herkese açık
sec_exposed_gitKısa cevap
Sitenizden /.git/ gibi bir sürüm denetim klasörünün dosyaları indirilebiliyor. Dizin listeleme kapalı olsa bile ücretsiz araçlar bu dosyalardan tüm kaynak kodu ve commit geçmişini, bir zamanlar commit edilmiş her parola ve anahtarla birlikte yeniden oluşturur. Klasörü engelleyin, siteyi onsuz yükleyin ve deponun herhangi bir yerinde geçen her gizli bilgiyi değiştirin.
Neden önemli
Kaynak kod saldırgana sitenizin tam olarak nasıl çalıştığını gösterir: yönetim yolları, veritabanı sorguları, dosya yükleme işleyicileri, özel eklentiler ve hataları. Geçmiş daha da ileri gider: yıllar önce koddan silinmiş bir parola eski commit'lerde hâlâ durur. Açıktaki .git klasörleri internet ölçeğinde taranır ve sitenin tamamen ele geçirilmesinde sık görülen bir başlangıç noktasıdır.
Bir .DS_Store dosyası (macOS Finder'ın oluşturduğu) kod içermez ama bulunduğu klasördeki dosyaların adlarını listeler; bu da yedeklere ve gizli yönetim betiklerine işaret edebilir. Glimana bunu aynı önem düzeyiyle bu kontrol altında bildirir. Bunların hiçbiri sıralamayı doğrudan etkilemez; ardından gelen bir saldırı etkiler.
Glimana bunu nasıl tespit eder
Glimana HTTPS üzerinden /.git/HEAD, /.git/config, /.svn/entries ve /.DS_Store adreslerini ister ve her birinin yalnız ilk 2 KB'ını okur. Yanıt 200 ya da 206 ise ve içerik gerçek biçimdeyse dosya açıkta sayılır: HEAD için ref: refs/heads/…, config için [core] bölümü, Subversion entries biçimi ya da ikili .DS_Store başlığı. HTML sayfalar ve rastgele var olmayan bir adresle aynı yanıtlar yok sayılır. Glimana orada durur, depo nesnelerini indirmez. Açıkta bir depo Kritiktir ve anında uyarı e-postası da gönderir; yalnız dosya adlarını sızdıran tek başına bir .DS_Store Ortadır.
Nasıl düzeltilir
Dikkat
.git klasörünü sunucudan kaldırmak sızıntıyı durdurur ama geri almaz. Kodun ve tüm geçmişinin kopyalandığını varsayın: yalnız güncel dosyalarda değil, geçmişin herhangi bir yerinde geçen her kimlik bilgisini yenileyin ve artık başkalarının da bildiği zayıflıklar için kodu gözden geçirin.
- 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 › Sitenin kaynak kod deposu herkese açık altında da listelenir.
-
Düzeltmeyi platformunuzda uygulayın.
Siteyi web kökünün içinde
git cloneya dagit pullçalıştırarak yayına almayın. Bunun yerine sürüm denetim verisi olmayan bir kopya yükleyin, örneğinrsync -a --exclude='.git' --exclude='.DS_Store' ./ user@server:/var/www/site/. Sunucuda pull yapmanız şartsa depoyu web kökünün dışında tutun ve web kökünüpublic/gibi bir alt klasöre yönlendirin. Artık Finder dosyalarınıfind /var/www/site -name .DS_Store -deleteile silin.Sanal sunucu ayarında ya da
.htaccessiçinde:RewriteEngine OnveRewriteRule "(^|/)\.(?!well-known/)" - [F]. Bu, sertifika yenileme için/.well-known/yolunu açık bırakırken.git,.svn,.DS_Storeve diğer tüm gizli dosyaları engeller.serverbloğunda, diğer düzenli ifadelocationbloklarından önce:location ~ /\.(?!well-known) { deny all; }, ardındannginx -t && systemctl reload nginx.Geçici kalkan olarak: Security › Security rules › Create rule › Custom rules, ifade
(http.request.uri.path contains "/.git") or (http.request.uri.path contains "/.svn") or (http.request.uri.path contains ".DS_Store"), eylem Block. Sunucuyu da düzeltin; Cloudflare'i atlayan istekler kapsanmaz. - 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.