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. Kodu tamamen kaldırmak yerine __($s); şeklinde yazdırmak daha mantıklı olurdu kanısındayım. Kol kırık diye kolu kesmek mantıksız olmuş ama güzel ve bir çok kişinin kolayca gözden kaçıracağı noktada iyi bir makale olmuş.

    Teşekkürler.

    Yanıtla
    • @Emrah Teşekkür ederim. Kod aslında kalkmıyor. S parametresini iptal ettim. Pek gerek te görmediğimden gerçi ben SEO’cu değilim ama 🙂

      Yanıtla
  2. Yok estf. bilmişlik etmek istemedim. Her ne olursa olsun baştada dediğim gibi, küçük bir noktadaki büyük gözlem olmuş bu 🙂 Tekrar teşekkür ederim.

    Yanıtla
    • @Adil ;

      Açığı lütfen başkalarının sitesinde kullanmayınız. Sistemlerine zarar verebilirsiniz. Zaten kanun gereği yasak ve birkaç yıl hapis cezası var. Bu açıklık yukarıda belirttiğim gibi META DESCRPTION etiketi için yukarıdaki kodu kullanan kişilerde ortaya çıkmaktadır.

      Yanıtla
  3. 🙂 kendi web sitelerimde denedim. test ettiğim sitelerimde ki temalar birbirlerinden farklı. bu açığın temadan kaynaklanabileceğini düşünüyorum. yanılıyor olabilirim tabii ki.

    Yanıtla
  4. @vodo
    XSS mi çok tehlikeli değil? Heleki üyelik sistemi olan ve heleki mail dağıtan bir sisteme sahipsen. Çerezler ile haşır neşir olmak ve çok tehlikeli olmamak 🙂

    Yanıtla
  5. Merhabalar,
    verdiğiniz test linkini siteme uyarlayıp denediğimde, 406 hatası alıyorum ilginç bir şekilde.
    bunun sebebi ne olabilir acaba?
    blogu takipte olacağım elbette fakat, eğer zahmet olmazsa, yorumu yanıtladığınızda bir e-posta yollamanız da mümkün mü?
    oldukça ilginç geldi.
    şimdiden çok teşekkür ederim.

    Yanıtla
  6. Merhabalar,
    verdiğiniz test linkini, kendi siteme;
    http://www.cankirca.com/?s=‘”>alert(1)
    uyarladığımda,
    sizin sitenizde arama sonuçları çıkarken, benim sitemde ve aynı tarayıcıda,
    406, istek kabul edilebilir değil hatası alıyorum.
    bunun sebebi ne olabilir acaba?
    ufak bir not: blogunuzu takip ediyorum elbette fakat, görme engelli olduğumdan, rss okuyucularını kullanamıyorum. yorumu yanıtladığınızda, bir e-posta atmanız mümkün mü? gerçekten minnettar kalırım.
    şimdiden çok teşekkür ederim,
    saygılar.

    Yanıtla
  7. Blogumda All In One Seo Pack kullanıyorum. XSS açığı yok gibi gözüküyor. Herhangi bir düzenleme yapmadım.

    Yanıtla
  8. @Eray

    Ben de All-In-One SEO kulanmaktayım.Temamda kod yoktu, temama kodu ekledim, bir faydası olur mu??

    Yanıtla
  9. Merhaba öncelikle ben wpseo kullanmaktayım.WPSEO’da böyle bir açık var mıdır.
    Daha sonra yukarıda http://www.TEAkolik.com/?s=‘”>alert(1)
    diye bir örnek vermişsin.ben bunu kendi siteme uygulayınca Forbidden 403 adlı bir hata aldım.Bu bir açık mıdır?

    Yanıtla
  10. Aynı içeriği hem ingilizce, hem türkçe yazman gayet güzel 🙂 Google aramalarında alt alta çıkmalarıda güzel 🙂

    Yanıtla

Mert Canatan için bir yanıt yazın Yanıtı iptal et