Ele geçirilmiş bir site genellikle tahrif edilmez. Tahrifat nadirdir, çünkü erişimi bitirir; yaygın olan şey istenmeyen sayfalar, yalnızca arama motorundan gelen ziyaretçilerde tetiklenen yönlendirmeler ve sunucunuzdan gönderilen postadır. Oturum açmış ve adresi doğrudan yazan sizin gözünüzde ise her şey yolunda görünür.

İşaretler

  • Alan adınıza ait, sizin yazmadığınız arama sonuçları.
  • Sunucunuzdan çıkıp açıklayamadığınız miktarlarda geri dönen posta.
  • Ziyaretçide sıçrama olmadan işlemcide ya da giden trafikte görülen sıçrama.
  • Sizin yeniden üretemediğiniz bir yönlendirmeyi bildiren bir ziyaretçi.
  • Barındırıcınızın ya da bir tarayıcının site hakkında uyarı vermesi.

Dört komut

# 1. files changed in the last week, ignoring the ones that should change
find /var/www/site -type f -mtime -7 -not -path '*/storage/*' -not -path '*/cache/*' | head -50

# 2. PHP where PHP has no business being
find /var/www/site/uploads /var/www/site/public/img -name '*.php*' 2>/dev/null

# 3. the shapes an injected shell takes
grep -rEl 'eval\(|base64_decode\(|gzinflate\(|assert\(\$' /var/www/site --include='*.php' | head

# 4. logins that succeeded
sudo grep "Accepted" /var/log/auth.log | tail -20

Güvenilir bir şeyle karşılaştırın

Kod git'teyse dünyanın en hızlı yanıtı, sunucuda git status demektir: sizin koymadığınız hâlde değişmiş ya da izlenmeyen her şey, tek satırda yanıtınızdır. Bir içerik yönetim sistemi içinse aynı sürümü yeniden indirip çekirdek dosyaları onunla karşılaştırın.

Veritabanı da sayılır

Enjekte edilen içerik çoğu zaman dosyalarda değil veritabanında yaşar; temiz bir dosya taramasının sanıldığından az şey kanıtlamasının sebebi budur — bkz. Dosyalarda değil, veritabanındaki zararlı yazılım.

Bir şey bulursanız silmeye başlamayın. Önce bütün sitenin ve kayıtların bir kopyasını alın: içeri nasıl girdiklerinin tek belgesi odur ve o olmadan dosyayı kapatıp kapıyı açık bırakırsınız. Sonra Ele geçirilmiş bir siteyi doğru dürüst temizlemek yazısını izleyin.