WordPress SEO, XSS Güvenlik Açıklığı.

Zaman zaman internet sayfamda güvenlik testleri yaparım. Özelliklede güvenlik üzerine merakım olduğunu biliyorsunuzdur. Birçok güvenlik forumu ve benzeri yerleri sürekli takip ederim.  Arada bir de bu güvenlik testlerinden internet sayfamı geçirip olası durumlara müdehale ederim. Yine bu tip bir test yaparken karşıma bir XSS güvenlik açığı çıktı.

Normalde WordPress üzerinde böyle bir güvenlik açığı yok. Sorun WordPress üzerine SEO için eklenen birkaç koddan kaynaklanıyor.  WordPress’in SEO sistemini geliştiren eklentiler yanı sıra ek kodlarda birçok kişi tarafından tavsiye edilip insanlara kullanılması gerektiği önerilmekte. Fakat  bu eklenen kodlar arasında en meşhur olanlarından bir tanesi WordPress sisteminiz üzerinde bir güvenlik riski ortaya çıkarabilmekte.

XSS Güvenlik açığını ortaya çıkaran kodlar;

<meta name="description" content="<?php if (is_home() ) {?>
<?php bloginfo('description');} elseif ( is_single() ) { ?>
<?php wp_title(''); ?> ,
<?php $cat = get_the_category(); $cat = $cat[0]; echo $cat->cat_name; ?> ,
<?php bloginfo('description'); } elseif ( is_page() ) { ?>
<?php wp_title(''); ?> ,
<?php bloginfo('description'); } elseif ( is_category() ) { ?>
<?php single_cat_title('');?> ,
<?php bloginfo('description'); } elseif ( is_archive() ) { ?>
<?php wp_title('');?> , <?php bloginfo('description'); } elseif
( is_search() ) { ?> <?php echo $s; ?> ,
<?php bloginfo('description'); } elseif (is_tag())
{$tagTitle = preg_replace('/-/' ,
' ' , $tag); echo ucwords($tagTitle); ?> ,
<?php $cat = get_the_category(); $cat =
$cat[0]; echo $cat->cat_name; ?> ,
<?php bloginfo('description'); } else { ?><?php
wp_title(''); ?> , <?php bloginfo('description'); }?>" />

Yukarıda ki kod WordPress için hazırlanmış bir SEO kodudur. Birçok SEO forumunda, birçok forumda ve internet sayfasında bu kodu temanızın header.php dosyasına eklerseniz Google seo uyumu için çok yararlı olduğu belirtilmekte. Yalan da değil. Bu kodlama sayesinde “meta description” etiketiniz işlevsellik kazanıyor ve Google gözünde çok daha iyi sonuçlar verebilmesi sağlanılabiliyor. Fakat bu kod içerisinde unutulmuş bir yapı var.

Arama sonucuna bakarsanız binlerce kişinin bu kodları sisteminde kullandığını görebilirsiniz..!

WordPress’in arama fonksiyonu olan  “/s=arama” bu koda dahil edilmiş durumda. Yukarıdaki kodlamadan da görebileceğiniz gibi  <?php bloginfo(‘description’); } elseif ( is_search() ) { ?> <?php echo $s; ?> fonksiyonu sayesinde arama kelimelerinin görüntülendiği sayfalar için sistemin bir description etiketi oluşturabilmesi sağlanılmış. Fakat bu fonksiyon başınıza iş açıyor.

XSS Güvenlik Açığı;

Eğer ki WordPress sisteminize eklediğiniz tema içerisinde bu tip bir SEO kodlaması varsa,  R10.Net gibi forumlardan SEO için yazılan bazı makaleleri okuyup bu kodu sisteminize eklediyseniz yada birilerine SEO yaptırdıysanız bu başınıza büyük bir iş açabilir. Bu kodlama sayesinde kötü niyetli bir kişi blogunuza saldırıp sisteminizi hacklemesi malesef ki an meselesi…

http://www.TEAkolik.com/?s='"><script>alert(1)</script>

Bu şekilde WordPress sisteminizde XSS olup olmadığını görebilirsiniz.  Eğer ki siteniz size bir popup mesaj verirse sisteminizde güvenlik riski var demektir.

Normalde WordPress içerisinde bu tip bir kodlama yok;

WordPress’in standardında bu tip bir kodlama yok. Fakat fonksiyonlar yukarıdaki gibi bir araya getirilip SEO’cu arkadaşlar tarafından böyle bir kod ortaya çıkarılmış durumda. Bu sayede temanızın header.php dosyasına ekleyip kullanabiliyorsunuz. Fakat risk çok büyük. Özelliklede birçok forumda bu kodu temanıza ekleyin diye yazmış kişiler var. Bu kodu birçok kişi blogunda şuan itibari ile kullanıyor. Bazı temaların ise standardında bu kod gelebilmekte.

Kısacası risk altında olabilirsiniz..!

Neler yapılabilir?

Bunu kısa ve özet geçiyorum. Niyetim hack anlatmak değil. Sadece güvenliğinizi almanızı sağlamak. Sisteminizde bu kod varsa saldırgan birçok şey yapabilir. Neler olduğunu size anlatmadan geçiyorum. Çünkü bunu kötü niyetli kullanmak isteyenler ortaya çıkabilir. Acilen bu kod sisteminizde varsa aşağıda anlattığım şekildeki gibi değiştirmenizi öneriyorum.

Çözüm;

Bu XSS açığından kurtulmak için XSS’in ortaya çıktığı Search parametrelerini kodlama içerisinden kaldırmanız gerekiyor. Yukarıda bahsettiğim gibi kodlamanın arama fonksiyonunu temizlersek XSS ortadan kalkıyor.

Temiz kodlar (XSS Açığını kaldırdım);

<meta name="description" content="<?php if (is_home() ) {?>
<?php bloginfo('description');} elseif ( is_single() ) { ?>
<?php wp_title(''); ?> ,
<?php $cat = get_the_category(); $cat = $cat[0]; echo $cat->cat_name; ?> ,
<?php bloginfo('description'); } elseif ( is_page() ) { ?>
<?php wp_title(''); ?> ,
<?php bloginfo('description'); } elseif ( is_category() ) { ?>
<?php single_cat_title('');?> ,
<?php bloginfo('description'); } elseif ( is_archive() ) { ?>
<?php wp_title(''); ?> , <?php bloginfo('description'); }
elseif (is_tag()) {$tagTitle = preg_replace('/-/' , ' ' ,
$tag); echo ucwords($tagTitle); ?> ,
<?php $cat = get_the_category(); $cat = $cat[0]; echo $cat->cat_name; ?> ,
<?php bloginfo('description'); } else { ?>
<?php wp_title(''); ?> , <?php bloginfo('description'); }?>" />

Bu şekilde kullanıldığı takdirde güvenlik riski ortadan kalkacaktır.  Şimdi yapmanız gereken temanızın header.php dosyasını açıp bu kodlar varsa yukarıdaki gibi temizlenmiş halini kullanınız.

http://www.TEAkolik.com/?s='"><script>alert(1)</script>

Şeklinde sitenizde tekrar bir deneme yaparsanız XSS’in ortadan kalktığını görebilirsiniz.  Kodları temizleyip kullandığınızda siteniz normal olarak çalışacaktır.

NOT: Lütfen bu anlattıklarımı güvenliğinizi sağlamak için kullanınız, sisteminizde oluşabilecek problemlerden sorumlu değilim. Lütfen sisteminizi kontrol altına alınız.  Eğer bu yazıyı kullanacaksanız TEAkolik.com bağlantısı eklemenizi rica ederim.

 

“WordPress SEO, XSS Güvenlik Açıklığı.” üzerine 19 yorum

  1. Aynı içeriği hem ingilizce, hem türkçe yazman gayet güzel :) Google aramalarında alt alta çıkmalarıda güzel :)

    Cevapla

Yorum yapın

teakolik hamza şamlıoğlu blog logo

Wordpress altyapısını kullandığımız bu sistem, Sunucu Çözümleri firmasında yüksek performans sağlayan özel sunucularda barındırılmaktadır. Görüntülemek için en iyi Chrome tarayıcı, 1920x1080 çözünürlük ve Full HD Android telefonlarda çalışır. Ayrıca Sitedeki içeriği istediğiniz gibi çarpabilirsiniz. :)