
WordPress sitenizde tanımadığınız bir yönetici hesabı, ziyaretçileri başka sitelere yönlendiren sayfalar veya Google’da “Bu site saldırıya uğramış olabilir” uyarısı görüyorsanız sitenize zararlı kod bulaşmış olabilir. Bu rehberde önce hack’in işaretlerini, ardından zararlı dosyaları dosya yöneticisi veya FTP üzerinden nasıl bulup temizleyeceğinizi, son olarak da tekrar yaşanmaması için alınacak WordPress güvenliği önlemlerini anlatıyoruz.
WordPress Sitenizin Hacklendiğini Gösteren İşaretler
WordPress’in resmî “Sitem hacklendi” rehberi bu belirtileri ihlal göstergesi olarak sayar. Sahada en sık karşılaşılanlar şunlardır:
- Google’da sitenizin altında “Bu site saldırıya uğramış olabilir” uyarısı veya tarayıcıda kırmızı uyarı ekranı
- Sitenin yalnızca Google’dan veya mobilden gelen ziyaretçileri başka bir siteye yönlendirmesi (siz doğrudan girdiğinizde her şey normal görünebilir)
site:alanadiniz.comaramasında sizin yazmadığınız, genellikle yabancı dilde ilaç, bahis veya replika ürün sayfaları- Kullanıcılar listesinde tanımadığınız yönetici hesapları
- Sunucudan toplu spam e-posta gönderildiğine dair uyarılar
- Hosting firmasından “hesabınızda zararlı dosya tespit edildi” bildirimi
- Kendi kurmadığınız eklentiler veya ana dizinde rastgele adlı PHP dosyaları
Bu işaretlerden biri varsa paniğe kapılmadan aşağıdaki sırayla ilerleyin.
Temizliğe Başlamadan Önce Yapılması Gerekenler
- Gözlemlerinizi not edin. Ne gördüğünüzü, ne zaman fark ettiğinizi ve son günlerde kurduğunuz eklenti veya yaptığınız değişiklikleri yazın. Hack tarihini daraltmak, zararlı dosyaları bulmayı çok kolaylaştırır.
- Mevcut hâlin yedeğini alın. Enfekte olsa bile dosyaların ve veritabanının bir kopyasını ayrı tutun. Temizlik sırasında yanlışlıkla gerekli bir dosyayı silerseniz geri dönebilirsiniz.
- Erişim şifrelerini değiştirin. Hosting kontrol paneli, FTP, veritabanı ve tüm WordPress yönetici hesapları. Temizlik bittikten sonra bunları bir kez daha değiştireceksiniz.
- Kendi bilgisayarınızı tarayın. WordPress’in resmî rehberi, saldırının çoğu zaman FTP veya panel şifresini çalan bir virüsle site sahibinin bilgisayarından başladığına dikkat çeker. Bilgisayarınız temizlenmeden yapılan şifre değişikliği işe yaramayabilir.
- Hosting firmanıza haber verin. Özellikle paylaşımlı hostingde sorunun yalnızca sizin sitenizle sınırlı olup olmadığını öğrenmek ve varsa sunucu taraflı tarama sonuçlarını almak için.
Zararlı Dosyaları Eklentiyle Taramak
Panelinize hâlâ girebiliyorsanız ilk tarama için bir güvenlik eklentisi hızlı bir başlangıç sunar. WordPress’in resmî rehberinde de önerilen başlıca seçenekler şunlardır:
| Eklenti | Ücretsiz sürümde öne çıkanlar | Dikkat edilmesi gereken |
|---|---|---|
| Wordfence Security | Core, tema ve eklenti dosyalarında zararlı kod taraması; uygulama güvenlik duvarı; iki adımlı doğrulama | Ücretsiz sürüme yeni güvenlik duvarı kuralları ve zararlı kod imzaları 30 gün gecikmeli gelir |
| Sucuri Security | Dosya bütünlüğü kontrolü, işlem kayıtları (audit log), güvenlik sıkılaştırma ayarları | Tarama ağırlıklı olarak uzaktan yapılır; güvenlik duvarı ücretli hizmettir |
| GOTMLS (Anti-Malware Security) | Bilinen zararlı kod kalıplarını tarayıp işaretleme | Güncel tanımlar için ücretsiz kayıt gerekebilir |
| Quttera Web Malware Scanner | Dosyalarda zararlı kod ve kara liste kontrolü | Sonuçları elle değerlendirmek gerekir |
| MalCare | Taramayı kendi sunucularında yaptığı için hosting kaynağını az kullanır | Otomatik temizlik ücretli sürümdedir |
Panelinize giremiyorsanız Sucuri SiteCheck ve VirusTotal gibi uzaktan tarayıcılar sitenin dışarıdan görünen kısmını kontrol edebilir.
Eklenti taramasının iki sınırı vardır. Birincisi, yalnızca bilinen kalıpları yakalar; yeni veya özel yazılmış bir arka kapıyı (backdoor) kaçırabilir. İkincisi, saldırgan WordPress’in kendisini ele geçirdiyse eklentinin raporuna güvenmek zordur. Bu yüzden eklenti sonucu ne olursa olsun aşağıdaki elle kontrol adımları önemlidir.
Dosya Yöneticisi veya FTP ile Zararlı Dosya Nasıl Bulunur?
Hosting kontrol panelinizdeki dosya yöneticisi veya FileZilla gibi bir FTP programı, WordPress’e hiç girmeden tüm dosyalara erişmenizi sağlar. Dosya yöneticisi kullanımını DirectAdmin dosya yönetimi rehberimizde, FTP bağlantısını ise FileZilla rehberimizde anlattık.
Son Değiştirilme Tarihine Göre Sıralama
En hızlı yöntem budur. Dosya yöneticisinde veya FileZilla’da klasör içeriğini son değiştirilme tarihine göre sıralayın ve hack’i fark ettiğiniz tarihe yakın değişmiş dosyalara bakın. Özellikle şu dosyalar sık hedef alınır:
- Ana dizindeki
index.php,wp-config.phpve.htaccess - Aktif temanın
functions.php,header.phpvefooter.phpdosyaları
Bu dosyalardan biri, sizin veya bir güncellemenin dokunmadığı bir tarihte değişmişse içini açıp kontrol edin. Saldırganların dosya tarihini değiştirebildiğini unutmayın; tarih normal görünen bir dosya da enfekte olabilir. Bu yöntem bir başlangıç noktasıdır, tek başına yeterli değildir.
Bulunmaması Gereken Yerlerdeki PHP Dosyaları
Bazı klasörlerde PHP dosyası olmaması gerekir. Buralarda bulunan bir .php dosyası güçlü bir işarettir:
wp-content/uploads/— Bu klasör yalnızca görsel, PDF gibi yüklenen dosyalar içindir. Alt klasörler dahil burada bulunan.phpdosyaları büyük olasılıkla zararlıdır.wp-content/mu-plugins/— “Zorunlu eklentiler” klasörüdür; buradaki dosyalar eklenti listesinde görünmeden otomatik çalışır. Siz veya geliştiriciniz bir şey koymadıysa bu klasörün boş olması ya da hiç olmaması beklenir.- Ana dizinde rastgele adlı dosyalar —
wp-ile başlayıp WordPress dosyasına benzeyen ama gerçekte olmayan adlar (örneğinwp-confg.php,wp-login1.php) veya anlamsız harf dizilerinden oluşan PHP dosyaları. wp-admin/vewp-includes/— Bu klasörlerde WordPress’in orijinal paketinde olmayan dosyalar. Aynı sürümün temiz paketini indirip klasör içeriklerini karşılaştırabilirsiniz.- Tanımadığınız eklenti ve tema klasörleri —
wp-content/plugins/vewp-content/themes/altında sizin kurmadığınız klasörler.
Kodun İçinde Aranacak Şüpheli İfadeler
Zararlı kodlar genellikle okunmasın diye şifrelenir (obfuscation). Bir PHP dosyasını açtığınızda aşağıdakileri görürseniz dikkatle inceleyin:
eval(— Metin olarak verilen kodu çalıştırır. Zararlı kodların en yaygın parçasıdır.base64_decode(,gzinflate(,str_rot13(,gzuncompress(— Gizlenmiş kodu çözer. Özellikleeval(ile iç içe kullanıldıklarında (eval(base64_decode(...))) neredeyse her zaman zararlıdır.assert(vecreate_function(— Dışarıdan gelen veriyle birlikte kullanıldığında kod çalıştırmak için kötüye kullanılır.$_POST,$_GET,$_REQUESTveya$_COOKIEverisinin doğrudan yukarıdaki fonksiyonlara verilmesi — Dışarıdan komut alan bir arka kapı işaretidir.<?phpetiketinden hemen sonra gelen, yüzlerce karakterlik tek satırlık anlamsız metin- Dosyanın en üstünde, asıl koddan önce eklenmiş ve satır sonuna kadar boşluklarla sağa itilmiş kod
Önemli bir uyarı: base64_decode gibi fonksiyonları bazı meşru eklentiler de kullanır. Bir ifadeyi bulmanız dosyanın zararlı olduğunu kanıtlamaz; bağlamına bakmanız gerekir. Emin olamadığınız bir eklenti veya tema dosyasını düzeltmeye çalışmak yerine, o eklentiyi resmî kaynaktan yeniden yüklemek daha güvenlidir.
Siteyi Bilgisayara İndirip Toplu Arama Yapmak
Dosya yöneticisinde yüzlerce dosyayı tek tek açmak pratik değildir. Daha hızlı yöntem şudur:
- FileZilla ile sitenin bulunduğu klasörü (genellikle
public_html) bilgisayarınıza indirin. - Klasörü Visual Studio Code veya Notepad++ ile açın.
- “Dosyalarda Bul” (VS Code’da Ctrl + Shift + F) özelliğiyle yukarıdaki ifadeleri tüm klasörde arayın.
- İndirdiğiniz klasörü bilgisayarınızdaki antivirüs programıyla da tarayın; birçok bilinen PHP arka kapısı antivirüs imzalarında bulunur.
Sunucunuzda SSH erişimi varsa (örneğin VDS kullanıyorsanız) aynı aramayı doğrudan sunucuda yapabilirsiniz:
grep -rlE "eval\(base64_decode|eval\(gzinflate|eval\(str_rot13" /site/dizinifind /site/dizini/wp-content/uploads -name "*.php"
WP-CLI kuruluysa wp core verify-checksums komutu WordPress core dosyalarını resmî sürümle karşılaştırır ve değiştirilmiş ya da fazladan eklenmiş dosyaları listeler. wp plugin verify-checksums --all aynı kontrolü WordPress.org’dan yüklenen eklentiler için yapar.
.htaccess ve wp-config.php Kontrolü
.htaccess, WordPress’in resmî rehberine göre en sık değiştirilen dosyalardan biridir. Yalnızca ana dizinde değil alt klasörlerde de bulunabilir. Şunlara dikkat edin:
HTTP_REFERERiçinde arama motoru adı veyaHTTP_USER_AGENTiçinde mobil cihaz adı geçen yönlendirme kuralları. Bunlar yalnızca Google’dan veya mobilden gelenleri yönlendiren hack’lerin klasik yöntemidir.auto_prepend_fileveyaauto_append_filesatırları. Bu satırlar her sayfa açılışında başka bir dosyanın çalışmasını sağlar. Aynı satırlar.user.iniveyaphp.inidosyasında da olabilir.
Standart bir WordPress kurulumunun ana dizindeki .htaccess dosyası, ek bir eklenti kuralı yoksa yalnızca şunu içerir:
# BEGIN WordPress<IfModule mod_rewrite.c>RewriteEngine OnRewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]RewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]</IfModule># END WordPress
Önbellek veya güvenlik eklentileri bu dosyaya kendi bloklarını ekler. Bu bloklar genellikle eklentinin adını taşıyan # BEGIN / # END satırları arasında durur. Kime ait olduğu belli olmayan kurallar şüphelidir.
wp-config.php dosyasında ise veritabanı bilgileri ve güvenlik anahtarları dışında, özellikle dosyanın en başında veya en sonunda yer alan anlamsız ya da şifrelenmiş kodlara bakın.

Veritabanında Kontrol Edilmesi Gerekenler
Dosyaları temizlemek yetmeyebilir; bazı saldırılar zararlı kodu veritabanına yerleştirir. Hosting panelinizdeki phpMyAdmin ile şu tabloları kontrol edin (tablo öneki sizde wp_ dışında bir şey olabilir):
wp_users— Tanımadığınız kullanıcılar. Yönetici yetkisiwp_usermetatablosunda tutulur; yeni ve tanımadığınız yönetici hesaplarını silin.wp_options—siteurlvehomedeğerlerinin kendi alan adınız olduğundan emin olun.wp_posts— Yazı ve sayfa içeriklerinde<scriptveya<iframearaması yapın. Sizin eklemediğiniz harici script’ler enfeksiyon işaretidir.
Veritabanında değişiklik yapmadan önce mutlaka yedek alın.
Hacklenen WordPress Sitesi Adım Adım Nasıl Temizlenir?
Şüpheli dosyaları belirledikten sonra temizliği şu sırayla yapın:
- Temiz bir yedek varsa önce onu değerlendirin. Hack tarihinden önceki bir yedeğe dönmek çoğu zaman en hızlı çözümdür. Ancak saldırganın girdiği açık (eski bir eklenti, zayıf şifre) yedekte de vardır; geri yükledikten sonra aşağıdaki güncelleme ve şifre adımlarını atlamayın.
- WordPress core dosyalarını yenileyin. wp-includes/version.php dosyasından kullandığınız sürümü öğrenin ve aynı sürümü WordPress.org’dan indirin. Sunucudaki
wp-adminvewp-includesklasörlerini tamamen silip temiz olanları FTP ile yükleyin. WordPress’in resmî rehberi bu işlemin yönetim panelindeki “yeniden yükle” seçeneğiyle değil FTP ile yapılmasını önerir; çünkü panel yalnızca var olan dosyaların üzerine yazar, saldırganın eklediği yeni dosyaları silmez. - Eklenti ve temaları resmî kaynaktan yeniden yükleyin. Kullandığınız her eklentinin klasörünü silip WordPress.org’dan veya geliştiricisinin sitesinden indirdiğiniz temiz sürümü yükleyin. Kullanmadığınız eklenti ve temaları tamamen kaldırın. Lisanssız (“nulled”) tema ve eklentiler en yaygın bulaşma kaynaklarından biridir; bunları kesinlikle silin.
uploadsklasöründeki PHP dosyalarını silin..htaccessvewp-config.phpdosyalarını elle temizleyin. Şüpheli satırları kaldırın veya.htaccessdosyasını yukarıdaki standart içerikle değiştirin.- Erişimleri tamamen yenileyin. Tüm kullanıcı şifrelerini, veritabanı şifresini (yeni şifreyi
wp-config.phpdosyasına da yazın), FTP ve panel şifrelerini değiştirin.wp-config.phpiçindeki güvenlik anahtarlarını WordPress anahtar üreticisinden aldığınız yeni değerlerle değiştirin; bu işlem açık kalmış tüm oturumları sonlandırır. - Siteyi tekrar tarayın. Eklenti ve uzaktan tarayıcılarla kontrol edin.
- Google uyarısını kaldırın. Siteniz Google tarafından işaretlendiyse Google Search Console’daki “Güvenlik sorunları” bölümünden inceleme isteği gönderin. İnceleme birkaç gün sürebilir.
Bu adımlardan sonra sorun tekrar ediyorsa, büyük olasılıkla gözden kaçan bir arka kapı vardır. Bu durumda destek ekibimizden profesyonel destek almak daha az zaman kaybettirir.
Tekrar Hacklenmemek İçin WordPress Güvenliği Önlemleri
Temizlik sorunu çözer; asıl WordPress güvenliği, saldırganın tekrar girmesini önlemektir. Aşağıdaki önlemler WordPress’in resmî güvenlik sıkılaştırma rehberine dayanır:
- Güncel kalın. WordPress, tema ve eklentileri düzenli güncelleyin. Saldırıların büyük kısmı, güncellemesi yapılmamış eklentilerdeki bilinen açıkları hedefler.
- Gereksiz eklentileri kaldırın. Devre dışı bırakılmış bir eklentinin dosyaları sunucuda durduğu sürece risk taşır.
- Güçlü şifre ve iki adımlı doğrulama kullanın. Wordfence’in ücretsiz sürümü gibi eklentiler yönetici girişine iki adımlı doğrulama ekler.
- Giriş denemelerini sınırlayın. Limit Login Attempts Reloaded veya All-In-One Security (AIOS) gibi eklentiler kaba kuvvet (brute force) denemelerini engeller.
- Panelden dosya düzenlemeyi kapatın.
wp-config.phpdosyasına şu satırı ekleyin:define( 'DISALLOW_FILE_EDIT', true );Bu, yönetici hesabı ele geçirilse bile tema ve eklenti dosyalarının panelden düzenlenmesini engeller. - Dosya izinlerini doğru ayarlayın. Klasörler için 755, dosyalar için 644;
wp-config.phpiçin sunucu yapılandırmanıza göre 440 veya 400. uploadsklasöründe PHP çalışmasını engelleyin.wp-content/uploads/klasörüne şu içerikle bir.htaccessdosyası ekleyin:<FilesMatch "\.php$">Require all denied</FilesMatch>- Yapılan işlemleri kaydedin. WP Activity Log gibi bir eklenti, kimin ne zaman hangi değişikliği yaptığını gösterir; bir sonraki olayda hack tarihini bulmak dakikalar sürer.
- Sunucu tarafı korumayı eklentiyle birleştirin. Eklentiler WordPress’in içinde çalışır; saldırı WordPress’e ulaşmadan önce durdurulursa daha az kaynak harcanır. Bu konuyu WAF rehberimizde ve Imunify360 yazımızda ayrıntılı anlattık.
- Yedekleri sitenin dışında da saklayın. Hosting yedeklerine ek olarak periyodik olarak kendi bilgisayarınıza veya ayrı bir depolama alanına kopya alın. Sunucu tarafında snapshot ile yedek arasındaki farkı bilmek de doğru geri dönüş yöntemini seçmenize yardımcı olur.
Hack sonrası WordPress yönetim paneli “kritik hata” verirse WordPress kritik hataları rehberimizdeki adımlar işinize yarar.
Sık Sorulan Sorular
Güvenlik eklentisi kurmak tek başına yeterli mi? Hayır. Eklentiler bilinen saldırıları engeller ve tarama yapar, ancak güncel olmayan bir eklentideki açığı veya çalınmış bir şifreyi telafi edemez. Güncelleme, güçlü şifre, iki adımlı doğrulama ve düzenli yedekle birlikte kullanıldığında anlamlıdır.
Yedekten geri dönmek siteyi tamamen temizler mi? Yedek hack öncesine aitse dosyalar temiz olur, ancak saldırganın kullandığı açık hâlâ yerindedir. Geri yüklemeden hemen sonra WordPress’i, temaları ve eklentileri güncellemeniz ve tüm şifreleri değiştirmeniz gerekir.
Temizlikten sonra Google’daki spam sayfalar ne zaman kaybolur? Zararlı sayfaları kaldırdıktan sonra Google’ın siteyi yeniden taraması gerekir. Search Console üzerinden inceleme isteği göndermek ve kaldırılan URL’lerin 404 veya 410 döndürdüğünden emin olmak süreci hızlandırır.
Sonuç
Hacklenen bir WordPress sitesini temizlemenin özü, zararlı dosyaları sistematik olarak bulmaktır: değiştirilme tarihlerine bakmak, uploads gibi PHP içermemesi gereken klasörleri kontrol etmek, şüpheli kod kalıplarını toplu aramak ve core dosyalarını temiz sürümle değiştirmek. Kalıcı WordPress güvenliği ise güncellemeler, iki adımlı doğrulama ve düzenli yedekle sağlanır.
YediNet WordPress Hosting paketlerinde gecelik yedekleme, DirectAdmin dosya yöneticisi, LiteSpeed web sunucusu ve ücretsiz Let’s Encrypt SSL bulunur. Bir sorun yaşadığınızda hack öncesi bir yedeğe dönebilir, dosyalarınızı panelden doğrudan inceleyebilirsiniz.