WordPress SEO spamı: gizli casino ve ilaç linklerini bulun
WordPress SEO spamı rehberi: gizli casino ve ilaç linklerini bulun, Googlebot'un gördüğünü inceleyin, veritabanı ve dosyaları temizleyin, Google'dan inceleme isteyin.
Diğer diller: English Deutsch Français Español Italiano Polski Português
Google alan adınız için beklenmedik casino, ilaç veya Japonca sonuçlar gösteriyor, ama siteniz tarayıcınızda normal görünüyorsa WordPress SEO spamından şüphelenin. Bu sonuçlar sürmekte olan bir ele geçirmeyi ya da temizlikten sonra dizinde kalmış spamı yansıtıyor olabilir. Spam ya işaretlemenin (markup) içine gizlenir ya da yalnızca Google'a ve aramadan gelen ziyaretçilere sunulur. Bu rehberde sitenizi Google'ın gördüğü gibi görmeyi, spamın nerede saklandığını ve Google'ın dizininden nasıl çıkarılacağını bulacaksınız.
WordPress SEO spamı neye benzer ve neden görmezsiniz
Görmezsiniz, çünkü sizin için tasarlanmamıştır. Saldırganların hedefi ziyaretçilerinizin dikkati değil, alan adınızın itibarıdır. Enjekte edilen kod çoğu zaman oturum açmış kullanıcıları ve adresinizi doğrudan yazarak gelenleri atlar.
Üç yaygın biçimi var:
- Hacklink'ler. Casino, ilaç veya kredi sitelerine giden linkler sayfalarınıza enjekte edilir. Genellikle
display:nonebloğunun içinde, ekran dışına konumlandırılmış halde ya da kimsenin okumadığı bir alt bilgide (footer) durur. - Japonca anahtar kelime saldırısı (Japanese keyword hack). Japonca metin ve mağaza linkleri içeren, otomatik üretilmiş binlerce sayfa. Google'ın bunları hızlı bulması için çoğunlukla kendi site haritalarıyla gelir.
- Koşullu yönlendirmeler ve cloaking (içerik gizleme). Kod kullanıcı aracısını (user agent), IP adresini veya yönlendiren adresi (referrer) denetler. Googlebot spam içeriği alır. Google'dan tıklayarak gelen ziyaretçi başka bir siteye yönlendirilir. Siz ise normal sayfayı görürsünüz.
Göremiyor olmanız zararı gerçek olmaktan çıkarmaz. Sıralamalar düşebilir, ziyaretçiler güven kaybeder ve Google tarama emeğini gerçek sayfalarınız yerine spam sayfalara harcayabilir. Hacklenip hacklenmediğinizden hâlâ emin değilseniz önce WordPress sitenizin hacklendiğine işaret eden 12 belirti yazımıza bakın.
Sitenizi Google'ın gördüğü gibi görün
Önce Google'ın kendisinde başlayın. site:example.com araması yapın, sonuçları gözden geçirin, ardından aramayı daraltın:
site:example.com casino
site:example.com viagra OR cialis
site:example.com 激安
site:example.com inurl:.html
Yayın yapmadığınız bir dilde çıkan sonuçlar ya da sitenizin kullanmadığı URL kalıpları güçlü bir kanıttır.
Bir diğer yararlı kontrol, Google Search Console'daki URL Denetimi aracıdır. Şüpheli bir URL'yi (veya ana sayfanızı) yapıştırın, Canlı URL'yi test et'e, ardından Test edilen sayfayı görüntüle'ye tıklayın. HTML sekmesi Google'ın tarayıcısının aldığı işlenmiş işaretlemeyi, ekran görüntüsü ise sayfanın nasıl göründüğünü gösterir. Bu HTML içinde casino, href veya display:none arayın. Canlı test, Google'ın denetim tarayıcısını kullanır ve saldırganlar bu tarayıcıya dizine ekleme tarayıcısından farklı davranabilir. Cloaking'i ortaya çıkarabilir, ama temiz bir sonuç cloaking olmadığını kanıtlamaz.
Kendi makinenizden curl ile kaba bir karşılaştırma yapabilirsiniz:
curl -s https://example.com/ -o normal.html
curl -s -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/ -o googlebot.html
diff normal.html googlebot.html
curl -sS -D - -o /dev/null -e "https://www.google.com/" https://example.com/
Son komut, Google referrer'ı ile bir GET isteği yapar ve yanıt başlıklarını yazdırır. Location: başlığı bir HTTP yönlendirmesini ele verebilir; ancak bu yöntem JavaScript yönlendirmelerini yakalamaz ve her tarayıcı oturumunu birebir yeniden üretmez. Bir sınır daha var: enjekte edilen kod Google'ın IP aralıklarını denetliyorsa, dizüstü bilgisayarınızdaki curl temiz bir sayfa görür. Temiz bir curl sonucu, sitenin temiz olduğu anlamına gelmez.
Son olarak Search Console'da Dizine ekleme > Sayfalar (Indexing > Pages) bölümünü açın. Yayınlamadığınız URL'lerin dizine eklenen veya keşfedilen sayısında ani bir sıçrama genellikle üretilmiş spam sayfalara işaret eder.
WordPress'te SEO spamı nerede saklanır
İncelemeye başlamadan önce dosyaların ve veritabanının yedeğini alıp saklayın. Bu yedeği koruyun, çünkü kişisel veriler ve gizli bilgiler içerebilir. Mümkünse ağ erişimi kısıtlı, yalıtılmış bir kopya kullanın ve aşağıdaki komutları o kopyanın WordPress kök dizininden çalıştırın: birçok WP-CLI komutu WordPress'i yükler ve ele geçirilmiş kodu çalıştırabilir. --skip-plugins --skip-themes eklemek bu riski azaltır, ama mu-plugins ve değiştirilmiş bir wp-config.php yine de çalışır. Güvenli biçimde yalıtamıyorsanız, incelemeyi barındırma sağlayıcınızdan veya bir olay müdahale uzmanından isteyin.
Veritabanında
wp db search 'casino' --all-tables
wp db search 'viagra' --all-tables
wp post list --post_type=any --post_status=any --orderby=date --order=DESC --fields=ID,post_type,post_status,post_date,post_title
wp option list --search='widget_*'
wp option list --search='theme_mods_*'
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
Yazılarda ve yazı meta verilerinde (post meta) sizin yazmadığınız linkler arayın; ayrıca tuhaf başlık veya durumlara sahip yeni yazı ve sayfalara bakın. wp_options tablosunda şunları inceleyin:
- metin ve HTML widget'ları
- özel alt bilgi kodunun sık yerleştirildiği tema ayarları (theme mods)
- adını tanımadığınız, otomatik yüklenen (autoload) seçenekler
Yukarıdaki wp_ tablo adları varsayılan öneki varsayar; sizinki farklıysa wp-config.php içindeki $table_prefix değerine bakın. Tanımadığınız yöneticiler tek başına ciddi bir bulgudur.
Dosyalarda
wp core verify-checksums
wp plugin verify-checksums --all
ls -la wp-content/mu-plugins
find wp-content/uploads -type f \( -name "*.php" -o -name "*.phtml" -o -name "*.phar" \)
find . -type f -name "*.php" -mtime -14
grep -rnE "base64_decode|gzinflate|str_rot13|eval\(" wp-content --include=*.php
wp core verify-checksums, çekirdek dosyaları WordPress.org'daki sürümle karşılaştırır. wp plugin verify-checksums --all yalnızca WordPress.org'da barındırılan eklentiler için çalışır. Premium eklentilerde satıcıdan temiz bir kopya alın ve onunla karşılaştırın.
Karmaşıklaştırma (obfuscation) belirteçlerini arayan grep yanlış pozitifler üretir, çünkü meşru eklentiler de bu işlevlerden bazılarını kullanır. Uzun kodlanmış dizelere ve bulunduğu yerde anlam taşımayan koda bakın.
Şu yerleri de elle kontrol edin:
- temanın
functions.php,header.phpvefooter.phpdosyaları - sizin kurmadığınız eklenti klasörleri (saldırganlar inandırıcı adları sever)
wp-config.phpveindex.php, fazladanincludesatırları için.htaccess,HTTP_USER_AGENTveyaHTTP_REFERERüzerindeRewriteCondkuralları için- web kök dizini, sizin oluşturmadığınız site haritası XML dosyaları ve
google*.htmldoğrulama dosyaları için
| Spam türü | Olağan saklanma yerleri |
|---|---|
| Hacklink'ler | Tema alt bilgisi, widget'lar, tema ayarları, yazı içeriği |
| Japonca anahtar kelime saldırısı | Üretilmiş dosyalar, sahte site haritası, sahte eklenti, .htaccess |
| Cloaking ve yönlendirmeler | functions.php, mu-plugins, .htaccess, index.php |
Saldırganın Search Console'daki izlerini kontrol edin
Saldırganlar çoğu zaman kendilerini Search Console'da mülkünüzün sahibi olarak doğrular. Ardından Google spamı daha hızlı dizine eklesin diye kendi site haritalarını gönderirler. Bu erişim ellerinde kaldığı sürece URL göndermeyi sürdürebilirler.
Ayarlar > Kullanıcılar ve izinler (Settings > Users and permissions) bölümünü açın ve tanımadığınız her sahibi veya kullanıcıyı kaldırın. Ardından onların doğrulama yöntemini de kaldırın. Bu, web kök dizininizdeki bir google*.html dosyası, temanızdaki ya da başlık (header) ayarlarınızdaki bir meta etiketi veya bir DNS TXT kaydı olabilir. Bu adımı atlarsanız, saldırgan kendini yeniden doğrulayabilir.
Dizine ekleme > Site haritaları (Indexing > Sitemaps) altında tanımadığınız gönderimleri inceleyin: meşru eklentiler ya da yetkili başka site yöneticileri bunları göndermiş olabilir. Saldırganın gönderdiği site haritalarını Search Console'dan kaldırın, kaynaklarını da sitede silin veya devre dışı bırakın. Sonra Güvenlik ve Manuel İşlemler (Security & Manual Actions) bölümünü açın ve hem Güvenlik sorunları hem de Manuel işlemler raporlarını okuyun. Orada listelenen örnek URL'ler Google'ın hangi spamı bulduğunu söyler; bu da temizliğiniz için işe yarar bir kontrol listesi olur.
Spamı temizleyin, ardından giriş yolunu kapatın
Görünen linkleri silmek kozmetiktir. Giriş noktası açık kalırsa spam çoğunlukla, genellikle birkaç gün içinde geri gelir.
- Henüz yapmadıysanız, enfekte durumun yedeğini (dosyalar ve veritabanı) alın ve delil olarak saklayın.
- Spam yazıları, seçenekleri, widget'ları ve kullanıcıları veritabanından kaldırın.
- Değiştirilmiş çekirdek, eklenti ve tema dosyalarını bilinen güvenilir kaynaklardan alınmış temiz kopyalarla değiştirin. Enfekte dosyaları satır satır düzeltmeye çalışmayın.
- Giriş noktasını bulun. Sık görülenler: güvenlik açığı olan ya da "nulled" (kırılmış) bir eklenti, çalınmış bir yönetici parolası veya sızdırılmış FTP ya da barındırma kimlik bilgileri.
- Açığı kapatın, ardından tüm parolaları ve
wp-config.phpiçindeki salt değerlerini yenileyin.
Tüm süreç WordPress zararlı yazılım temizleme planımızda anlatılıyor. En yaygın giriş yolu ise güvenlik açığı olan WordPress eklentileri yazımızın konusu.
Aynı açık, form girdileri veya kullanıcı hesapları gibi müşteri verilerini de açığa çıkarmış olabilir. Bu durumda GDPR (AB Genel Veri Koruma Tüzüğü) kapsamındaki ihlal bildirimi yükümlülükleri devreye girebilir; bkz. GDPR'ın 72 saatlik ihlal bildirimi.
Spamı Google'dan çıkarın: 410'lar, kaldırmalar ve inceleme talebi
Yalnızca spam için üretilmiş sayfalar silindikten sonra, bu sayfaların URL'leri 404 (Bulunamadı) veya 410 (Kalıcı olarak kaldırıldı) döndürmelidir; ikisi de uygundur. Meşru sayfalar değiştirilmişse URL'lerini kaldırmayın, sayfaları eski haline getirin. Spam URL'lerini ana sayfanıza yönlendirmeyin. Google bunu yumuşak 404 (soft 404) sayıp taramayı sürdürebilir.
Spam URL'leri, gerçek sayfalarınızın hiçbirinin kullanmadığı ortak bir kalıp taşıyorsa, sunucu düzeyinde 410 ile yanıt verebilirsiniz:
RedirectMatch 410 "^/spam-pattern/"
location ~ ^/spam-pattern/ { return 410; }
Markanızın adı için spam çıkması gibi acil durumlarda Search Console'daki Kaldırmalar (Removals) aracını kullanın. Bu araç URL'leri sonuçlardan yalnızca geçici olarak gizler, kalıcı bir kaldırma yöntemi değildir. Yalnızca spam içeren URL'lerin 404/410 döndürmeye devam etmesini sağlayın ve Google'ın bu yanıtları taramasına izin verin; robots.txt ile engellemeyin, çünkü Google'ın kaldırma durumunu görmesi gerekir. Bkz. Google'ın Kaldırmalar aracı yönergeleri. Önemli sayfaları yeniden taransın diye gerçek site haritanızı tekrar gönderin.
İnceleme istemeniz gerekip gerekmediği raporlara bağlıdır:
- Güvenlik sorunları veya Manuel işlemler raporu çözülmemiş bir sorun listeliyorsa, etkilenen tüm sayfaları düzelttikten sonra raporun inceleme seçeneğini kullanın. Talebi kısa ve olgusal tutun: ne buldunuz, ne kaldırdınız, saldırgan nasıl içeri girdi ve bu açığı kapatmak için neyi değiştirdiniz.
- İki raporda da sorun listelenmiyorsa, istenecek bir inceleme yoktur. Google'ın temizlenmiş siteyi yeniden taraması gerekir.
Beklentileri gerçekçi tutun. İncelemeler zaman alır, spam URL'leri dizinden kademeli olarak düşer ve sıralamalar yavaş toparlanabilir ya da tam olarak geri gelmeyebilir. Kimse bir takvim vaat edemez.
Bir sonraki enjeksiyonu erken yakalayın
SEO spamı fark edilmeyecek şekilde tasarlanır; bu yüzden sayfaya bakmaya dayanmayan kontroller gerekir:
- Bir dosya bütünlüğü referansı (baseline) tutun ve sizin yapmadığınız her değişikliği inceleyin.
- Ayda bir kez alan adınız için
site:araması yapın. - Güvenlik sorunları ve manuel işlemler size ulaşsın diye Search Console'da e-posta bildirimlerini açın.
- Veritabanını yukarıdaki gibi link kalıpları için düzenli olarak tarayın.
- Sizin oluşturmadığınız her yeni yönetici hesabını bir olay olarak ele alın.
secaudit.eu'nun Security Audit & Compliance eklentisi gizli SEO spamı ve hacklink'leri, veritabanındaki spamı, gizli yöneticileri ve diğer ele geçirilme göstergelerini tarar. Dosyaları da bir referansla karşılaştırır. Tespit eder ve raporlar. Sitenizi otomatik olarak temizlemez; giriş noktasını da yine bir kişinin kapatması gerekir. → secaudit.eu
SSS
Kendi sitemi ziyaret ettiğimde spamı neden göremiyorum?
Enjekte edilen kod kimin ne göreceğine karar verir. Genellikle oturum açmış kullanıcıları dışarıda bırakır ve kullanıcı aracısını, IP adresini ve referrer'ı denetler. Bazı saldırılar Googlebot'u veya aramadan gelen ziyaretçileri hedefler; bazıları ise spamı sıradan ziyaretçilere de gösterir ya da linkleri herkese sunulan işaretlemenin içine gizler. URL Denetimi'nin canlı testini kontrollerden biri olarak kullanın, ama saldırganların denetim tarayıcısına dizine ekleme tarayıcısından farklı içerik sunabileceğini unutmayın.
Google sitemi kalıcı olarak cezalandırır mı?
Hiçbir yönde garanti yok. Kapsamlı biçimde temizleyin, giriş noktasını kapatın ve saldırganın Search Console erişimini kaldırın. Güvenlik sorunları veya Manuel işlemler raporu gerektiriyorsa inceleme isteyin. Sonrasında toparlanma Google'ın sitenizi yeniden taramasına bağlıdır ve bu zaman alır.
SEO spamını kaldırmak için bir güvenlik eklentisi yeterli mi?
Bir eklenti spamı ve değişen dosyaları bulmanıza yardımcı olabilir. Spamı temiz biçimde kaldırmak ve saldırganın nasıl girdiğini bulmak ise elle çalışma ya da profesyonel destek gerektirir. Aksi halde spam geri gelme eğilimindedir.
Kendi sitenizi kontrol edin
Security Audit & Compliance, secaudit.eu’nun WordPress eklentisidir: zararlı yazılımları, gizli spam’i, değiştirilmiş çekirdek dosyalarını ve açıklı kodu tarar; bulguları GDPR Md. 32, NIS2 Md. 21 ve OWASP Top 10 ile eşleştirir.
Eklentinin neleri kontrol ettiğini görün