Güvenlik

WordPress Zararlı Kod Taraması: Ücretsiz Yöntemler

8 dk okuma

Kısa cevapWordPress zararlı kod taraması için ücretsiz ve etkili bir başlangıç, çekirdek ve eklenti dosyalarını resmi sağlama toplamlarıyla karşılaştırmaktır: wp core verify-checksums ve wp plugin verify-checksums --all. Bunu son günlerde değişen dosyaları bulmak, wp-content/uploads içindeki PHP dosyalarını aramak ve şüpheli kod kalıplarını taramakla tamamlayın. Hiçbir yöntem tek başına kesin sonuç vermez, bu yüzden araçları birlikte kullanın.

Sitenizde zararlı kod olabileceğinden şüpheleniyorsanız ya da düzenli bir kontrol rutini kurmak istiyorsanız, ücretli bir araca gerek duymadan yapabileceğiniz çok şey var. Bu rehber, WordPress zararlı kod taraması için komut satırı ve panel üzerinden uygulanabilir yöntemleri, her yöntemin neyi yakalayıp neyi kaçırdığını ve temizlik sonrası nasıl doğrulama yapacağını anlatıyor. Tarama bir hack kanıtı bulursa hacklenmiş site için ilk saat planına geçin.

Çekirdek ve eklenti dosyaları sağlama toplamıyla nasıl doğrulanır?

WP-CLI ile çekirdek dosyalarını WordPress.org'un resmi sağlama toplamlarıyla karşılaştırabilirsiniz. Komut, WordPress yüklenmeden önce çalıştığı için sitedeki zararlı kod sonucu etkileyemez. Değişmiş ya da eksik her dosya uyarı olarak listelenir.

wp core verify-checksums
wp core verify-checksums --include-root
wp plugin verify-checksums --all

--include-root seçeneği kök dizindeki WordPress'e ait olmayan dosyaları da gösterir. wp plugin verify-checksums --all ise kurulu eklentileri WordPress.org deposundaki kayıtlarla karşılaştırır. WP-CLI dokümantasyonuna göre bu karşılaştırma yalnızca WordPress.org kayıtlarına dayanır. Ücretli, özel ya da depoda olmayan eklentiler bu yolla doğrulanamaz. --strict seçeneği readme gibi küçük değişiklikleri de hata sayar, bu yüzden normal kullanımda gereksiz uyarı çıkarabilir.

Sonucu yorumlarken şuna dikkat edin: bir dosyanın uyarı vermesi her zaman enfeksiyon demek değildir. Elle yaptığınız bir düzeltme, çeviri dosyası ya da bir önbellek eklentisinin eklediği dosya da uyarı verebilir. Uyarı veren dosyayı açıp ne değiştiğine bakın. Çekirdek dosyasında tanımadığınız kod görüyorsanız, dosyayı resmi kopyayla değiştirmek en güvenli çözümdür.

Son değişen dosyaları nasıl bulurum?

Hack sonrası dosyaların çoğu kısa bir zaman diliminde değişir. SSH erişiminiz varsa son günlerde değişen PHP dosyalarını listeleyin. Zaman damgası saldırgan tarafından değiştirilebilir, bu yüzden sonuç ipucudur, kesin kanıt değildir.

# Son 7 günde değişen PHP dosyaları
find . -type f -name "*.php" -mtime -7 -not -path "./wp-content/cache/*"

# Belirli bir tarihten sonra değişenler
find . -type f -name "*.php" -newermt "2026-09-25"

Güncelleme yaptığınız günlerde çok sayıda meşru değişiklik görünür. Bu yüzden listeyi güncelleme tarihlerinizle karşılaştırın. Güncelleme yapmadığınız bir günde değişen dosyalar öncelikli incelenmelidir. Son tarihli değişimleri görmek için ayrıca FTP istemcisinde "değiştirilme tarihine göre sırala" görünümünü kullanabilirsiniz.

Şüpheli kod kalıpları nelerdir ve nasıl aranır?

Zararlı kodlar sıklıkla gizlenmiş (obfuscated) olur. Bunun için kullanılan eval, base64_decode, gzinflate, str_rot13 gibi işlevler meşru kodda da bulunduğundan, tek başına eşleşme kanıt sayılmaz. Çok sayıda yanlış pozitif alırsınız, çıkan her dosyayı yorumlamanız gerekir.

# Şüpheli işlev çağrıları (çok sayıda yanlış pozitif beklenir)
grep -rIl --include="*.php" -E "eval\s*\(|base64_decode\s*\(|gzinflate\s*\(|str_rot13\s*\(" wp-content

# Veritabanında gizli iframe veya script enjeksiyonu
wp db query "SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<iframe%' OR post_content LIKE '%<script%';"

Eşleşmelerde şu işaretlere özellikle dikkat edin: uzun, anlamsız karakter dizileri, tek satıra sıkıştırılmış kod, dosya adı rastgele harflerden oluşan PHP dosyaları, eval ile birlikte $_POST ya da $_REQUEST kullanımı ve dosyanın başında ya da sonunda yalnız başına duran uzun kod blokları. Çok sayıda eklenti meşru olarak base64_decode kullanır, bu yüzden eşleşen her dosyayı silmeyin, önce ne olduğunu anlayın.

Veritabanı sorgusundaki tablo ön ekini kendi ön ekinize göre değiştirin. Yazılarınızda meşru olarak <script> kullanıyorsanız (örneğin ölçüm kodu) onlar da listelenir, bu normaldir.

Uploads klasöründe PHP dosyası neden tehlikelidir?

wp-content/uploads klasörü görsel, PDF ve benzeri medya dosyaları içindir. Orada PHP dosyası genellikle bir sorun işaretidir, çünkü saldırganlar zayıf bir yükleme formu ya da eklenti açığı üzerinden buraya komut çalıştıran dosyalar bırakır. Taramak için:

find wp-content/uploads -type f \( -iname "*.php" -o -iname "*.phtml" -o -iname "*.phar" \)

Bazı eklentiler uploads içine boş bir index.php koyar ("Silence is golden" içeriğiyle). Bu meşrudur, içeriği birkaç satırdan uzun olan dosyalar şüphelidir. Gerçekten bir PHP dosyası bulduysanız, bu dosyanın yedeğini alın, içeriğini inceleyin ve silin. Aynı klasörde başka dosya ve alt klasörlerde de arama yapın.

Kalıcı koruma olarak uploads klasöründe PHP çalışmasını engelleyebilirsiniz. Apache'de uploads içine bir .htaccess dosyası yerleştirip PHP uzantılarına erişimi reddetmek yaygın bir yöntemdir. Nginx kullanıyorsanız aynı kural sunucu yapılandırmasında yer alır. Bu ayar sunucu yazılımına bağlıdır, hosting firmanızdan teyit alın ve uygulamadan sonra sitenin görsellerinin çalıştığını test edin.

Wordfence, Sucuri SiteCheck ve benzeri araçlar neyi yakalar?

Taramak için kullanılan araçlar iki türdür: sitenin içine kurulan eklentiler ve sitenize dışarıdan bakan uzaktan tarayıcılar. WordPress.org hack rehberi her ikisini de önerir ve hiçbir çözümün tek başına en iyisi olmadığını, birlikte kullanıldığında başarı olasılığının arttığını belirtir.

Araç türüÖrnekNeyi bulurSınırı
Eklenti tabanlı tarayıcıWordfence, Sucuri SecuritySunucudaki dosyaları imza ve karşılaştırmayla tararYeni tehdit imzaları geç gelirse kaçırır, yanlış pozitif verebilir
Uzaktan tarayıcıSucuri SiteCheck, VirusTotalTarayıcıdan görünen zararlı kod, kara liste durumuSunucu tarafındaki arka kapıları göremez
Komut satırı kontrolleriWP-CLI sağlama toplamı, find, grepDeğişen çekirdek ve eklenti dosyaları, şüpheli kalıplarElle yorum gerektirir, ücretli eklentileri doğrulamaz

Sucuri, kendi SiteCheck sayfasında uzaktan tarayıcının yalnızca tarayıcı düzeyinde görünen içeriğe eriştiğini, sunucu tarafındaki arka kapıları, phishing sayfalarını ya da mailer scriptlerini tespit edemeyeceğini açıkça belirtir. Dolayısıyla temiz çıkan bir SiteCheck sonucu, sitenin temiz olduğunu kanıtlamaz. Wordfence için Free ve Premium farkı ise imza gecikmesidir: Wordfence'in karşılaştırma sayfasına göre ücretsiz sürüm yeni imzaları 30 gün gecikmeyle alır. Araçları ayrıntılı karşılaştırmak için WordPress güvenlik taraması için hangi araç yazısına bakın.

Yanlış pozitif sonuçları nasıl ayırt ederim?

Her uyarı gerçek bir tehdit değildir. Önbellek eklentileri, güvenlik eklentileri ve yedekleme eklentileri kendileri tarayıcılara şüpheli görünen kod kalıpları içerir. Bir dosyayı silmeden önce şu sırayı izleyin:

  1. 1Dosyanın hangi eklentiye ya da temaya ait olduğunu belirleyin.
  2. 2O eklentinin resmi sürümünü yeniden indirin ve dosyayı karşılaştırın. WordPress.org eklentileri için wp plugin verify-checksums EKLENTI-SLUG yeterli.
  3. 3Dosyanın değişim tarihini bir güncelleme ya da kendi yaptığınız değişiklikle eşleştirin.
  4. 4Şüphe sürüyorsa dosyayı silmeden yedeğini alın ve eklentiyi resmi paketten yeniden yükleyin.
Silmek yerine değiştirin
Şüpheli dosyayı silmek yerine eklentiyi ya da temayı resmi kaynaktan temiz kopyayla değiştirmek hem yanlış pozitif riskini hem de siteyi bozma riskini azaltır.

Temizlik sonrası siteyi nasıl doğrularım?

Temizlik yaptıktan sonra aynı taramaları yeniden çalıştırın. Çekirdek ve eklenti sağlama toplamı kontrolleri temiz çıkmalı, uploads içinde PHP kalmamalı, yönetici listesi tanıdığınız hesaplardan oluşmalı. Ardından güvenlik anahtarlarını yenileyin (wp config shuffle-salts), şifreleri değiştirin ve birkaç gün boyunca dosya değişimlerini gözleyin. Tekrar eden değişiklikler, bir arka kapının kaldığını gösterir. Bilinmeyen bir yönetici hesabı varsa bilinmeyen yönetici hesabı rehberini uygulayın.

Temizlik, saldırının nasıl girdiğini çözmeden tamamlanmış sayılmaz. Güncellenmemiş eklentiler en sık giriş yoludur. Genel sertleştirme adımları için WordPress güvenlik kontrol listesini kullanabilirsiniz. Temizlikte bir şeyler ters giderse elinizde sunucudan bağımsız bir yedek bulunması işleri çok kolaylaştırır, bkz. yedek geri yükleme rehberi.

Sık sorulan sorular

Ücretsiz bir araç siteyi tamamen temizleyebilir mi?

Tespit edebilir, tam temizliği garanti etmez. Araçlar bilinen imzalara ve karşılaştırmaya dayanır. Gizlenmiş yeni bir arka kapıyı ya da veritabanındaki enjeksiyonu kaçırabilirler. Bu yüzden komut satırı kontrolleri ve araçları birlikte kullanın.

Sağlama toplamı doğrulaması temiz çıktı, site güvende mi?

Hayır, yalnızca doğrulanan dosyalar için temiz demektir. Özel eklentiler, temalar, uploads içindeki dosyalar ve veritabanı bu kontrole dahil değildir. Zararlı kod bu alanlarda olabilir.

Zararlı kod taramasını ne sıklıkla yapmalıyım?

En az ayda bir ve her büyük güncelleme ya da şüpheli bir olaydan sonra. Çok sayıda siteniz varsa elle yapmak yorucu olur, otomatik tarama düzenini düşünün.

Çekirdek doğrulamasını tüm siteleriniz için otomatik yapın

Watch Your WP, WordPress çekirdek dosyalarını resmi sağlama toplamlarıyla karşılaştırır, hesap ve erişim güvenliğine ve kara liste durumuna bakar. Tarama her gün otomatik çalışır ve ücretsizdir. Bu tarama checksum tabanlıdır: eklenti ve tema klasörlerindeki, uploads içindeki ya da veritabanındaki zararlı kodu kendi imzalarımızla arayan tarama henüz yok, yakında.

Kaynaklar

Ücretsiz araç: sitenizi kontrol edin
Sitenizin SSL süresini, WordPress sürümünü, güvenlik başlıklarını ve yanıt süresini kayıt olmadan saniyeler içinde görün: ücretsiz WordPress site kontrolü.
Paylaş
Erdinç

Erdinç

Watch Your WP'yi geliştiriyor. WordPress bakım, güvenlik ve site yönetimi deneyiminden yazıyor.

LinkedIn