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.
Şu 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.
Şimdiden kolay gelsin.
Tweet Gönder!










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.
@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
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.
Bu açık sanırım sizin sitenizde var. Birkaç farklı sitede denedim herhangi bir popup açılmdı.
@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.
@Adil İLHAN
Adil kodları header.php’ye eklersen görebilirsin.
xss açığını mynette bile gördüm çıok tehliki bir açık değil ama yineden önlem almak gerekir
@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
Teşekkürler, denedim bende pop-up açılmadı:)