WordPress Sitem Hacklendi mi? Belirtiler, İlk Kontroller ve Acil Adımlar
"WordPress sitem hacklendi galiba" cümlesiyle bize ulaşan site sahiplerinin çoğu, saldırıyı olaydan haftalar sonra fark ediyor. Çünkü modern WordPress saldırıları sitenizi kapatmaz; sitenizi sessizce kullanır. Spam link basar, ziyaretçileri yönlendirir, Google index'inizi zehirler ve siz ana sayfaya baktığınızda her şey normal görünür. Bu yazıda bir saldırıyı nasıl teşhis edeceğinizi, hangi kontrolleri hangi sırayla yapacağınızı ve temizliğe nereden başlayacağınızı adım adım anlatıyoruz.
WordPress Siteniz Hacklendiyse Ortaya Çıkan Belirtiler
Saldırının türüne göre belirtiler değişir, ama müdahale ettiğimiz vakalarda en sık karşılaştığımız tablo şudur:
Google'da görünen ama sitede görünmeyen içerikler
En yaygın senaryo budur. Google'da site:siteniz.com araması yaptığınızda Japonca, Çince ya da ilaç/kumar temalı binlerce sayfa listelenir; siteye girdiğinizde bu sayfalar yoktur. Bu, saldırganın yalnızca Googlebot'a farklı içerik sunduğu (cloaking) klasik bir SEO spam saldırısıdır. Bu tabloyu Japon anahtar kelime hacki sayfamızda ayrıntılı inceledik.
Yönlendirme (redirect) davranışı
Siteye Google aramasından gelen ziyaretçi bahis, ilaç veya sahte teknik destek sayfalarına yönlendirilir; adres çubuğuna doğrudan yazınca site normal açılır. Saldırgan referer ve user-agent kontrolü yaptığı için site sahibi bu yönlendirmeyi çoğu zaman kendisi göremez. Mobil cihazdan, gizli pencerede ve Google aramasına tıklayarak test edin.
Diğer tipik işaretler
- Search Console'a "Sosyal mühendislik içeriği tespit edildi" veya "Bu site saldırıya uğramış olabilir" uyarısı düşmesi
- Tarayıcıda kırmızı "Aldatıcı site" ekranı, hosting firmasından kötüye kullanım (abuse) e-postası
- Tanımadığınız yönetici kullanıcıları, siz yazmadığınız yazı ve sayfalar
- Sitenin belirgin biçimde yavaşlaması, CPU kullanımının fırlaması (kripto madenci veya spam gönderimi işareti)
- Sunucudan giden spam e-postalar ve IP'nizin kara listeye düşmesi
- Kapatamadığınız, tekrar tekrar geri gelen dosya değişiklikleri
Bu belirtilerden herhangi biri varsa varsayımınız "muhtemelen hacklendi" olmalı. Aşağıdaki kontrollerle bunu kesinleştirebilirsiniz.
İlk Kontroller: 15 Dakikada Teşhis
Paniğe kapılıp rastgele eklenti silmeye başlamadan önce üç temel alana bakın: kullanıcılar, dosyalar ve index durumu.
1. Kullanıcı listesini kontrol edin
WordPress yönetim panelinden Kullanıcılar → Tüm Kullanıcılar ekranını açın ve "Yönetici" rolündeki hesapları tek tek doğrulayın. Panele hiç girmeden, WP-CLI ile de bakabilirsiniz:
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
Şunlara dikkat edin:
- Tanımadığınız yönetici hesapları (saldırganlar genellikle
wp-admin,admin_support,wordpressgibi masum görünen adlar seçer) - Kayıt tarihi sorunun başladığı döneme denk gelen hesaplar
- E-posta adresi sizinle ilgisi olmayan alan adlarına ait hesaplar
Önemli bir uyarı: bazı saldırılar kullanıcıyı panelin kullanıcı listesinden gizler. Listede 5 kullanıcı görünüp sağ üstte "6 kullanıcı" yazıyorsa, gizlenmiş bir hesap var demektir. Kesin sonuç için veritabanına bakın:
SELECT ID, user_login, user_email, user_registered FROM wp_users;
2. Dosya değişikliklerini kontrol edin
Saldırının en net kanıtı dosya sistemindedir. SSH erişiminiz varsa son günlerde değişen PHP dosyalarını listeleyin:
find /var/www/siteniz -name "*.php" -mtime -14 -type f
Bu komut son 14 günde değişen tüm PHP dosyalarını gösterir. Siz bu dönemde güncelleme yapmadıysanız, listedeki her dosya şüphelidir. Özellikle şu konumlara odaklanın:
wp-content/uploads/altında herhangi bir PHP dosyası — uploads dizininde PHP bulunması tek başına saldırı kanıtıdır- WordPress kök dizininde çekirdeğe ait olmayan dosyalar (
wp-conf.php,class-wp.php, rastgele isimlix7a2.phpgibi) wp-content/mu-plugins/içinde sizin kurmadığınız dosyalar
Çekirdek dosyalarının bütünlüğünü WP-CLI ile resmi sürümle karşılaştırarak doğrulayabilirsiniz:
wp core verify-checksums
Bu komut değiştirilmiş veya eklenmiş çekirdek dosyalarını tek tek raporlar. Aynısını eklentiler için de çalıştırın:
wp plugin verify-checksums --all
3. .htaccess ve yönlendirme katmanını kontrol edin
Yönlendirme saldırılarının büyük bölümü .htaccess üzerinden yapılır. Kök dizindeki .htaccess dosyasını açın ve standart WordPress bloğu dışındaki her satırı sorgulayın. Tipik zararlı desenler şunlardır:
RewriteCond %{HTTP_REFERER}ile Google/Bing'den gelenleri ayırıpRewriteRuleile yabancı bir alan adına gönderen bloklarRewriteCond %{HTTP_USER_AGENT}ile bot/mobil ayrımı yapan kurallar- Dosyanın en altına, yüzlerce boş satırdan sonra gizlenmiş kod
Ayrıca alt dizinlerde sizin oluşturmadığınız .htaccess dosyaları olup olmadığına bakın:
find /var/www/siteniz -name ".htaccess" -type f
wp-content/uploads/ içinde PHP çalıştırmayı açan (RemoveHandler satırlarını silen veya AddHandler ekleyen) bir .htaccess bulursanız, saldırgan oraya yüklediği kabuk dosyasını çalıştırılabilir hale getirmiş demektir.
4. Google index durumunu kontrol edin
Tarayıcıya şunu yazın:
site:siteniz.com
Sayfa sayısı normalde 200 civarındayken 20.000 görünüyorsa, tanımadığınız dillerde başlıklar listeleniyorsa index'iniz spam sayfalarla dolmuş demektir. Ardından Search Console'da Güvenlik Sorunları sekmesine ve Sayfalar (Dizine Ekleme) raporundaki ani artışlara bakın. Search Console mülkünüz yoksa hemen ekleyin; temizlik sonrası kurtarma sürecinde buna ihtiyacınız olacak.
Ek bir hızlı test: sitenizi Googlebot gözüyle görüntüleyin.
curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://siteniz.com/ | head -50
Çıktıda normal ziyaretçinin görmediği spam linkler veya alakasız içerik varsa cloaking kesinleşmiştir.
Acil Adımlar: Teşhis Netleşince İlk Yapılacaklar
Saldırı doğrulandıysa sıralama önemlidir. Yanlış sırayla ilerlemek — örneğin arka kapı dururken sadece parola değiştirmek — saldırganın birkaç saat içinde geri dönmesiyle sonuçlanır.
- Yedek alın. Kulağa ters gelebilir ama temizliğe başlamadan önce mevcut (enfekte) halin tam bir kopyasını alın. Hem adli inceleme için kanıt olur hem de temizlik sırasında bir şey bozulursa dönecek noktanız olur.
- Tüm parolaları değiştirin. WordPress yönetici hesapları, veritabanı kullanıcısı, FTP/SFTP, hosting paneli ve SSH. Veritabanı parolasını değiştirdikten sonra
wp-config.phpiçindekiDB_PASSWORDdeğerini güncellemeyi unutmayın. - Oturumları ve anahtarları sıfırlayın.
wp-config.phpiçindeki salt anahtarlarını yenileyin; bu, çalınmış çerezlerle açık kalan tüm oturumları geçersiz kılar. - Şüpheli yönetici hesaplarını silin, ama silmeden önce kullanıcı adı, e-posta ve kayıt tarihini not edin.
- Siteyi geçici bakım moduna alın — özellikle ziyaretçiler zararlı sayfalara yönlendiriliyorsa. Ziyaretçinizin zarar görmesi hem itibar hem hukuki risk demektir.
- Erişim loglarını yedekleyin. Hosting firmaları logları genellikle 7-30 gün tutar. Giriş noktasını bulmak için bu loglara ihtiyacınız olacak; silinmeden kopyalayın.
Bu adımların daha geniş bir kriz planı içindeki yerini sitem hacklendi, ne yapmalıyım? yazımızda anlattık.
Loglardan giriş noktasını bulun
Temizliğe geçmeden önce beş dakikanızı loglara ayırın; çünkü giriş noktasını bilmeden yapılan temizlik eksik kalır. Şüpheli dosyanın adını erişim loglarında aratın:
grep "supheli-dosya.php" /var/log/apache2/access.log*
Dosyaya ilk isteği yapan IP'yi bulun, sonra o IP'nin tüm hareketlerini listeleyin:
grep "185.220.xx.xx" /var/log/apache2/access.log* | sort | head -100
Genellikle iki tablo görürsünüz: ya wp-login.php'ye yüzlerce POST denemesi (kaba kuvvet ile kırılmış zayıf parola) ya da belirli bir eklentinin dosyasına yapılmış tek bir POST (eklenti zafiyeti). Bu bilgi, temizlik sonrasında neyi kapatacağınızı söyler: birincisinde parola politikası ve giriş koruması, ikincisinde o eklentiyi güncellemek veya kaldırmak.
Temizlik Yolları: Üç Seçeneğin Karşılaştırması
| Yöntem | Ne zaman uygun | Riski |
|---|---|---|
| Temiz yedekten dönüş | Saldırı öncesine ait, tarihi kesin bilinen yedek varsa | Giriş açığı kapatılmazsa saldırı tekrarlar |
| Elle temizlik | SSH/dosya sistemi bilgisi varsa, yedek yoksa | Tek bir arka kapı atlanırsa her şey boşa gider |
| Profesyonel müdahale | Site gelir üretiyorsa, tekrar eden enfeksiyon varsa | — |
Temiz yedekten dönüş
En hızlı yol gibi görünür ama iki şartı vardır: yedeğin saldırıdan önceye ait olduğundan emin olmalısınız ve geri dönüş sonrası saldırganın kullandığı açığı (eski eklenti, zayıf parola, açık port) kapatmalısınız. Enfeksiyon tarihi bilinmiyorsa yedeğin kendisi de enfekte olabilir; dosya değişiklik tarihleri burada yol göstericidir.
Elle temizlik
Değiştirilmiş çekirdek dosyalarını resmi sürümle değiştirir, uploads içindeki PHP'leri temizler, veritabanındaki enjekte edilmiş içerikleri ayıklarsınız. Buradaki asıl zorluk zararlı kodu bulmak değil, hepsini bulmaktır: saldırganlar tek bir kapı bırakmaz. Arka kapıların saklandığı yerleri ve tespit yöntemlerini WordPress arka kapı bulma rehberimizde ayrı bir yazı olarak topladık.
Profesyonel müdahale
Sitenin geliri temizlik süresinden uzunsa, aynı enfeksiyon ikinci kez geri geldiyse veya Google uyarısı yüzünden trafik eriyorsa vakit kaybetmeyin. WordPress virüs temizleme hizmetimizde dosya sistemi, veritabanı, cron görevleri ve sunucu katmanını birlikte tarar; giriş noktasını kapatıp Google inceleme sürecini de yönetiriz. Kriz anındaysanız acil müdahale hattımız 7/24 açık. Daha önce çözdüğümüz benzer tablolara vaka çalışmaları sayfasından bakabilirsiniz.
Temizlik Sonrası: Tekrarını Önlemek
Temizlenen sitelerin yeniden hacklenmesinin bir numaralı sebebi, giriş açığının kapatılmamasıdır. Temizlik bittiğinde şunları tamamlayın:
- WordPress çekirdeği, tüm eklentiler ve temayı güncelleyin; kullanılmayan eklenti ve temaları silin (pasif eklenti de saldırı yüzeyidir)
- Yönetici girişlerine iki faktörlü doğrulama ekleyin
wp-adminvexmlrpc.phpüzerine kaba kuvvet koruması kurun — sunucu tarafında Fail2ban kurulumu bunun için etkili ve ücretsiz bir yoldur- Dosya değişikliği izleme ve düzenli harici yedek düzeni kurun; bunu sizin yerinize sürekli yapmamızı isterseniz bakım ve izleme hizmetimize göz atın
Son olarak Search Console'da güvenlik uyarısı aldıysanız, temizlik doğrulandıktan sonra "İnceleme İste" adımını atlamayın; uyarı kendiliğinden kalkmaz.
Sık Sorulan Sorular
Sitem normal görünüyor ama Google'da spam sayfalar listeleniyor. Gerçekten hacklenmiş miyim?
Evet, üstelik bu en yaygın saldırı türüdür. Saldırgan spam içeriği yalnızca Googlebot'a gösterir; siz ve normal ziyaretçiler temiz siteyi görürsünüz. site:siteniz.com aramasındaki yabancı sayfalar kesin bir işarettir.
Sadece eklentiyle tarama yapsam yeterli olmaz mı?
Hayır. Güvenlik eklentileri WordPress'in içinden, saldırganla aynı yetki seviyesinde çalışır; gizlenmiş arka kapıları, cron görevlerini ve sunucu katmanındaki kalıntıları çoğu zaman göremez. Eklenti taraması başlangıç noktasıdır, temizliğin kendisi değildir.
Temizlik ne kadar sürer?
Enfeksiyonun yaygınlığına göre değişir. Basit vakalar birkaç saatte tamamlanır; on binlerce spam sayfa üretmiş, veritabanına yayılmış vakalarda temizlik 1-2 gün, Google index'inin toparlanması ise birkaç hafta sürebilir.
Hosting firmam "temizledik" dedi ama sorun geri geldi. Neden?
Hosting firmaları genellikle imza tabanlı otomatik tarama yapar ve bilinen zararlıları siler; özel yazılmış arka kapıları ve giriş açığını atlar. Kapı açık kaldığı sürece enfeksiyon geri gelir.
Siteniz hacklendiyse veya emin değilseniz, ücretsiz ön teşhis için bize ulaşın: sitenizi dışarıdan tarayıp durum raporunu paylaşalım, sonrasına birlikte karar verelim. Acil müdahale ekibimize WhatsApp üzerinden 7/24 ulaşabilirsiniz; temizlik gerekiyorsa WordPress virüs temizleme hizmetimiz sabit fiyat ve tekrar-enfeksiyon garantisiyle çalışır.