Sunucu GüvenliğiDestek

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, wordpress gibi 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 isimli x7a2.php gibi)
  • 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ıp RewriteRule ile yabancı bir alan adına gönderen bloklar
  • RewriteCond %{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.

  1. 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.
  2. 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.php içindeki DB_PASSWORD değerini güncellemeyi unutmayın.
  3. Oturumları ve anahtarları sıfırlayın. wp-config.php içindeki salt anahtarlarını yenileyin; bu, çalınmış çerezlerle açık kalan tüm oturumları geçersiz kılar.
  4. Şüpheli yönetici hesaplarını silin, ama silmeden önce kullanıcı adı, e-posta ve kayıt tarihini not edin.
  5. 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.
  6. 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-admin ve xmlrpc.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.

Bu konuda hizmetlerimiz

Kendiniz uğraşmak zorunda değilsiniz

Bu rehberdeki işi sizin için yapalım: teşhis ücretsiz, fiyat sabit, temizlenemezse iade.

7/24 kayıt alınır · aynı gün müdahale · temizlenemezse ücret iade