
WordPress jetpack kullanan sitelerde bulunan güvenlik özelliğini kullanarak veritabanından bir tablonun aşırı derecede büyümesine (jpp_log_failed_attempt) neden olan bu açık veritabanına yapılan isteklerin gecikmesine ve sitenin kapanmasına neden oluyor. Öyleki sunucudaki diğer sitelerde bundan etkileniyor. Bugün makaleci.com’un yaşadığıda buydu :)
WordPress in en önemli tablolarından biri olan wp_options tablosunu aşırı şişiren bu olay sonucunda tablonun boyutu 22 GB a kadar çıkıyor. WordPress sitesinin açılışında bu tablo ilk olarak yüklenenler arasında olduğu için bütün kayıtları çekmeye çalışırken zaman aşımı oluşuyor ve siteniz açılmıyor. Bununla beraber webserver aşırı isteklerde veritabanı isteklerini beklediği için ana sunucunun kaynaklarını tüketmeye başlıyor. Sonuç webserver düşüyor, açılmıyor. Sitenizde anlık 100 tekil hitiniz oluyorsa zaten açılmasını beklemeyin..
Örnek saldırı sonucunda oluşan veritabanı tablosu:
Bu olayın tam olarak nasıl gerçekleştiği konusunda fazla bir bilgim yok ancak yanlış giriş yaparak yada gerçek birinin giriş bilgilerini bulmak için deneme yanılma ile saldırı yapılarak sisteme sızmaya çalışılmış. Sonucunda da her giriş denemesinin veritabanına kaydedilmesi sebebiyle isteyerek yada istemeyerek sunucunun can çekişmesine neden olunmuş.
Böyle bir durumda söz konusu tablodaki gereksiz jpp_log_failed_attempt kayıtlarını silerek sitelerimizi eski hızlı ve rahat, ferah zamanlarına kavuşturabilirsiniz. Bunun için öncelikle phpmyadminden veritabanına girin, aşağıdaki resimdeki sırayı takip edin.
Sonrasında karşınıza aşağıdaki gibi bir ekran gelecek, sil linkine tıklayarak 5-9 milyona yakın kayıtı siliyoruz. (Sizde ne kadar olur bilemem)
Bu işlemden sonra söz konusu saldırı kayıtları silinmiş olacak, biraz zaman alabilir o yüzden acele etmeyin. Sonrasında sitenizin rahatça açıldığını göreceksiniz. Ancak veritabanınızı bu işlemden sonra onarmayı ve optimize etmeyi unutmayın: SSH kullanarak MySQL veritabanlarını optimize ve tamir etmek
Yada aşağıdaki kodu kendinize göre düzenleyerek sorgu kısmından çalıştırın:
DELETE FROM `VERITABANI_ADI`.`wp_options` WHERE (CONVERT(`option_id` USING utf8) LIKE '%jpsq_sync-%' OR CONVERT(`option_name` USING utf8) LIKE '%jpsq_sync-%' OR CONVERT(`option_value` USING utf8) LIKE '%jpsq_sync-%' OR CONVERT(`autoload` USING utf8) LIKE '%jpsq_sync-%')
VERİTABANI_ADI: Veritabanı adı
wp_options : Baştaki wp kısmı bazı sitelerde değişebiliyor, ona göre düzenleyerek kodu çalıştırın.