Son günlerde bu soru sıkça sorulduğu için bende detaylı bir temizliği nasıl gerçekleştirebiliriz bunu anlatmak istiyorum.
Diyelimki WordPress sitemize indirdiğiniz warez tema, eklenti veya bir açık yüzünden sistemimize erişildi (CryptoPHP yazımı mutlaka okumanızıda tavsiye ederim.). Burada saldırgan öncelikle FTP alanına daha rahat çalışabileceği yada diğer dille shell (c99,r57) atıp sistemde açık arayacaktır. Eğer sistemde açık bulamaz ise başka exploitler atıp sunucuyu hacklemeye çalışacaktır. Bu sürekli devam eder yapamasa bile denemek amaçlı sürekli girip birşeyler dener.
Bazı SEO’cular ise bu tip sitelere erişip açıkları kapatır ve WordPress dosyaları içerisine kendi dosyalarını barındırırlar. İleri bir tarihte tekrar girip istediği gibi at koşturabilmek için. Birde eski tarihli içeriklere link ekleyip backlink elde ederler.
WordPressi nasıl temizlerim? sorusuna internet üzerinde bir çok yazı mevcut ama hepsi zor kısımdan anlatıyorlar. Şöyle ki: WordPress sisteminizi tekrar update yapıp FTP alanından tekrar dosya tarihlerini kontrol ederek update ettiğiniz tarih yani o anki tarih ve saat olacağınızdan WordPress sistemi olmayan dosyalar eski tarihli kalacak ve siz onları sileceksiniz. Buda bir yöntem ama daha iyisi varken uğraşmayın!
Temizleme işlemimiz şu şekilde gidecek;
- Wp-admin, wp-includes ve ana dizindeki dosyaların temizlenmesi.
- Wp-content temizlenmesi.
- Anti-Malware and Brute-Force Security – WordPress Eklentisi
- Kullanılmayanlar
- Yeniden: Eklentiler
- Wp-config.php temizlenmesi.
- Mysql kullanıcı şifresi değiştirme
- Admin şifresi değiştirme
Tüm bu işlemlere başlamadan önce sitenizin bir yedeğini almanızı tavsiye ederim. Bu işlemler esnasında bir problem çıkmayacaktır ancak yanlışlıkla yapabileceğiniz hatalar sonrası sistemi tekrar kurmak için yedek almanızı öneririm.
- cPanel yedek alma ve geri yükleme
- WordPress sql yedeği alma ve geri yükleme
- Sql ve Tam yedek alma ve geri yükleme
- WordPress eksiksiz yedek almak
- Plesk panel yedek full almak
1) Wp-admin, Wp-includes ve Ana Dizin
Öncelikle WordPress sistemde bu dosyaları siliyoruz çünkü sistem kurulduktan sonra tema ve eklentileri bu klasöre atmadığımız için bu klasör her zaman sabit kaliyor. Bu yüzden önceliğimiz bu dosyalar.
WordPress.org’dan son sürüm wp indiriyoruz. Son sürüm: indir
Daha sonra son sürüm içerisindeki wp-admin, wp-includes ve ana dizin dosyalarını .zip’liyoruz. Fotoğrafta nasıl zipleyeceğinizi anlattım.
Not: Eğer ziplemeyle uğraşmak istemiyorsanız FTP’ye bir klasör açın “yenisite” adında bu dosyas içerisine “wp-admin, wp-includes, ana dizin dosyalarını” yükleyin. Sildikten sonra ana dizine sürüklersiniz.
Daha sonra cPanel‘den “wp-admin, wp-includes, ana dizin dosyalarını” siliyoruz. Silme işlemi FTP’ye göre çok hızlı biteceği için hızlı bir şekilde wordpress.zip dosyamız üzerine gelip sağ tıklıyoruz. Extract diyip dosyalarımızı çıkartıyoruz.
Şu anda wp-admin, wp-includes ve ana dizin dosyalarını temizledik artık bunlardan bir korkumuz yok 🙂
2) Wp-content Temizliği
En çok uğraşacağımız klasör bu. Bu yüzden bunun üzerinde iyi inceleme yapmamız gerekiyor.
Öncelikle bu klasörü bilgisayarımıza indiriyoruz ve bilgisayarımızdaki anti virüs aracılığı ile tarama yaptırıyoruz. Anti virüs eğer shell dosyaları varsa zaten uyarı verecektir. Herhangi bir virüs bulamadıysa alttaki eklentiyi kullanarak devam ediyoruz.
a) Anti-Malware and Brute-Force Security – WP Plugins
Bu eklenti sistemdeki tüm dosyaları tarayıp aralarında zararlı olanlar varsa tespit ediyor ve size bu dosyaları listeliyor.
Bir çok eklenti test ettim ama aralarında en iyiyi bulan bu eklenti. Hatta şöyle bir test yaptım farklı 13 tane php shell indirdim bunların arasında social.png’de mevcut. Hepsini diğer WordPress güvenlik eklentileri ile taratıp test ettim hepsini bulan olmadı ama en çok bu eklenti buldu 🙂
Eklentiyi indir: Anti-Malware and Brute-Force Security by ELI
Kullanımında dikkat etmeniz gereken bir durum var otomatik olarak alttaki uzantıları devre dışı bırakıyor bunlar haricindekilerini tarıyor. Ama bizim için hepsi çok önemli bu yüzden hepsini taratmak için alttaki tüm uzantıları kaldırıp taratıyoruz.
png, jpg, jpeg, gif, bmp, tif, tiff, psd, fla, flv, mov, mp3, exe, zip, pdf, css, pot, po, mo, so, doc, docx, svg, ttf
2 Farklı resim ekledim. 1.Resimde uzantıları kaldırdığım ve sadece temayı taratıcaksam seçeceğim alan var. Siz tamamını taratabilirsiniz bu sayede tüm sisteminizi temizlemiş olursunuz. 2.Resimde ise taranmış ve bulaşmış dosyayı görüyorsunuz öncelik olarak dosyayı inceleyin ve daha sonra silin.
b) Kullanılmayanlar
Eklentinin bulduklarını inceleyip sildik şimdi sırada kullanmadığımız tema ve eklentide. Genelde tema kuruyoruz ve WordPress’in standart temalarını kullanmıyoruz. Sistemin başka alanlarından içeri sızıp bu kullanmadığınız temalar içerisine shell atabilirler bu yüzden kullanmadığınız tema ve eklentileri mutlaka silin.
c) Eklentileri Tekrar Yükleyin
Kullandığınız eklentileri tespit edip WordPress.org Plugins sayfasından hepsini bilgisayarımıza indiriyoruz.
Daha sonra FTP alanından tüm eklentileri silip aynı isimlerde güncel indirdiklerimizi yüklüyoruz. Bu sayede eklentiler klasörümüzde artık güvenli hale gelmiş oluyor.
ç) Cache Temizliği
WP Super Cache veya W3 Total Cache gibi cache eklentileri kullanıyorsanız wp-content içerisinde cache klasörleriniz olacaktır. FTP’den cache klasörünü tamamiyle silip eklentinizle tekrardan oluşturabilirsiniz.
d) Upgrade Temizliği
WordPress bu klasörü güncelleştirme yaparken kullanır. Güncelleştirme yaparken öncelikle klasörü buraya indirir klasöre çıkartır ve nereye atması gerekiyorsa oraya gönderir. Bu yüzden bu klasör daima boştur eğer siz başka bir dosya görürseniz mutlaka silin.
e) Uploads
Öncelikle yukarıdaki söylediklerimi yaptıysanız uploads klasörünü bilgisayarınıza indirip taratmış olmanız gerekiyor. Burası resim, pdf, mp3 gibi dosyaları yükleme alanıdır. Yani bu alanda php, pl gibi dosyalara yer yoktur ve olmaması gerekiyor.
Upload klasörümüz içerisine FileZilla FTP Programı yardımı ile .htaccess adında bir dosya oluşturuyoruz ve içerisine alttaki kodu yerleştiriyoruz.
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi Options -ExecCGI
Yukarıdaki kod ile herhangi bir açık oluşsa bile uploads klasöründe yukarıdaki uzantıları sunucu artık çalıştırmayacaktır. Gerçi şu anda güvenlik almıyoruz temizlik yapıyoruz ama olsun 🙂
f) Languages
Bu klasör standart olduğu için bunuda silip son sürüm wordpress içerisindekini buraya atıyoruz.
g) Tema Klasörü
En sona bunu bıraktım çünkü bunda ne olduğunu bilmiyoruz. Temanın orjinalini indirebiliyorsak tekrar indirip atmanızı tavsiye ederim. Eğer temada bir güncelleme yaptıysanız bunuda kaydedin temayı yeniden ekledikten sonra güncellemenizi tekrar ekleyin.
- Warez temaysa silip yeni tema arayışına geçin.
- Ücretsiz tema ise kodları iyi inceleyin içerisinde crypto edilmiş kodlar varsa kullanmayın o temayı.
- WordPress.org’dan tema indirin oradakiler güvenlidir.
- Son çare kendiniz tema yazın.
3) Wp-config.php Temizliği
Tüm dosyaları neredeyse temizledik ama wp-config.php dosyasını hiç ellemedik. Bu yüzden bu dosyayıda iyi incelememiz gerekiyor belki bu php dosyasının içerisine kod eklediler ve uzaktan bağlanabiliyorlar. Eğer wp-config.php içerisinde ne olduğunu biliyorsanız bunu anlamanız 2-3 saniye gibi bir süre olacaktır. Ama eğer bu dosyada daha önceden ne olduğunu bilmiyorsanız alttaki söylediklerimi yapım.
wp-config.php dosyasını silin. FTP ana dizindeki “wp-config-sample.php” dosyasının adını wp-config.php olarak değiştirin.
Yeni wp-config içerisine veritabanı bilgilerinizi yazın. Birde config içerisinde 45.satırda “Eşsiz doğrulama anahtarı” yer alıyor. O alanada benzersiz kodlarımızı eklemek için alttaki siteye giriyoruz ve oradaki kodu alıp wp-config.php içerisine yerleştiriyoruz.
WordPress Güvenlik: Key
wp-config-sample.php içerisindeki boş geliyor genellikle. wp-config dosyasmızıda temizledik.
4) MySQL Kullanıcı Şifresi Değiştirme
MySQL veritabanınıza uzaktan erişim eğer kısıtlı değil ise wp-config bilgileri ile sürekli şifrelerinizi değiştirip yönetim panelinize girebilirler. Veritabanı ile alakalı herşeyi yapabilirler.
MySQL Uzaktan Erişim Programı ile bunu yapmak mümkün tabi biz bu programı zarar vermek için değil iş yapmak için kullanıyoruz.
cPanel‘e giriş yapıp “MySQL Veritabanları” kısmına tıklıyoruz.
En alt kısımda kullanıcılarımız var ve bunların hemen sağında “Şifreyi Ayarla” yazıyor.
Yeni şifreyi o alandan girebilirsiniz.
Son olarak wp-config.php dosyasına bağlanıp yeni şifremizi tanımlıyoruz ve bu güvenliğide almış oluyoruz.
5) Admin Şifresi Değiştirme
Yönetim panelinize girip şifrenizi değiştirin ve diğer tüm yöneticileride inceleyin sizden başka yönetici olmasın.
Birde “admin” kullanıcısını kullanıyorsanız onu silin yeniden farklı bir kullanıcı adı ve şifreyle yeni bir kullanıcı oluşturun.
Tüm yazım bu kadar WordPress’i temizleme işlemini tamamladık. WordPress güvenlik ile alakalı yazılarımıda inceleyin;
Taratmayı anlattığınız şekilde yaptım ama bir çok dosya çıkardı.Bunları silmekten çekiniyorum.Kendisinin onardığı bir program varmıdır.
Potential Threats
* NOTE: These are probably not malicious scripts (but it’s a good place to start looking IF your site is infected and no Known Threats were found).
…/public_html/wp-config.php
…/public_html/wp-admin/press-this.php
…/public_html/wp-content/.cache.php
…/public_html/wp-content/plugins/ckeditor-for-wordpress/ckeditor_wordpress.php
…/public_html/wp-content/plugins/ckeditor-for-wordpress/filemanager/browser/default/dump.php
…/public_html/wp-content/plugins/ckeditor-for-wordpress/images/start.php
…/public_html/wp-content/plugins/ckeditor-for-wordpress/plugins/gd-star-rating/panels/commentsaggr.php
…/public_html/wp-content/plugins/ckeditor-for-wordpress/plugins/vvq/system.php
…/public_html/wp-content/plugins/contact-form-7/includes/js/scripts.js
…/public_html/wp-content/plugins/portfolio/js/script.js
…/public_html/wp-content/themes/.object.php
…/public_html/wp-content/themes/content.php
…/public_html/wp-content/themes/theme1637/page-home.php
…/public_html/wp-content/themes/theme1637/wp-systems.php
…/public_html/wp-content/themes/theme1637/includes/press.php
…/public_html/wp-content/themes/theme1637/includes/register-widgets.php
…/public_html/wp-content/themes/theme1637/includes/theme_shortcodes/alert.php
…/public_html/wp-content/themes/theme1637/includes/theme_shortcodes/css.php
…/public_html/wp-content/themes/theme1637/includes/widgets/my-comment-widget.php
…/public_html/wp-content/themes/theme1637/includes/widgets/my-recent-posts.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/OpenLayers.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/OpenLayers.light.debug.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/OpenLayers.light.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/OpenLayers.mobile.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/apidoc_config/diff.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Control/list.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Format/WFST/test.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/doc/apidocs/javascript/main.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/doc/devdocs/files/OpenLayers/Format/SOSCapabilities/option.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/doc/devdocs/files/OpenLayers/Layer/Google/info.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/doc/devdocs/javascript/main.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/examples/filter.html
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/examples/kamap.txt
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/examples/gml/cache.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/examples/osm/option.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/examples/utfgrid/geography-class/2/3/view.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/examples/utfgrid/world_utfgrid/1/.list22.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/examples/utfgrid/world_utfgrid/1/ajax75.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/lib/Firebug/firebug.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/lib/OpenLayers/Symbolizer.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/lib/OpenLayers/Format/JSON.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/lib/OpenLayers/Geometry/Collection.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/lib/OpenLayers/Renderer/.login.php
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/tests/node.js/run-test.js
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/tests/selenium/remotecontrol/selenium.py
…/public_html/wp-content/themes/theme1637/js/OpenLayers-2.12/tests/selenium/remotecontrol/test_ol.py
…/public_html/wp-content/uploads/2013/03/menu.php
…/public_html/wp-content/uploads/2014/03/.user37.php
…/public_html/wp-includes/fonts/info.php
…/public_html/wp-includes/js/jcrop/help.php
…/public_html/wp-includes/js/plupload/functions.php
…/public_html/wp-includes/js/tinymce/tiny_mce_popup.js
…/public_html/wp-includes/js/tinymce/plugins/directionality/files.php
…/public_html/wp-includes/js/tinymce/skins/lightgray/privacy.php
…/public_html/wp-includes/pomo/translations.php
…/public_html/wp-includes/theme-compat/sys.php
Eğer bu dosyaları şüpheli gösteriyor ve sen bunu çözemiyorsan şöyle yapabilirsin, WordPress’in orjinal dosyalarını tekrar indirip sunucudakileri silip wp dosyalarını temizler daha sonra tema dosyalarınıda aynı şekilde yaparsın. Birde tüm dosyaları bilgisayarına indirip anti virüs programı ile taratırsın.
Misal wordpressin böyle bir dosyası yok: …/public_html/wp-includes/theme-compat/sys.php
wp-includesi silip yeniden indirdiğin wp-includesi at. Böyle böyle dosyaları temizlemiş olursun. Ama tema dosyalarını açıp incelemen lazım.
Merhaba, bende de bunları çıkardı. Tüm WordPress dizinini tekrar yükledim.
…/public_html/wp-admin/includes/class-pclzip.php
…/public_html/wp-includes/js/json2.js
…/public_html/wp-includes/js/json2.min.js
…/public_html/wp-includes/js/tw-sack.js
…/public_html/wp-includes/js/tw-sack.min.js
…/public_html/wp-includes/js/jquery/jquery.form.min.js
…/public_html/wp-includes/js/jquery/jquery.schedule.js
…/public_html/wp-includes/js/swfupload/swfupload.js
…/public_html/wp-includes/js/tinymce/tiny_mce_popup.js
@mkeskinoglu:disqus, aynen tekrar silip bunları geri yükle, ama wp-content klasöründeki tüm dosyaları tekrar incele bence, hatta eklentileri sıfırdan indirip tekrar sunucuya at. tema klasöründeki tüm dosyaları tek tek açıp kodları incele.