THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

chat
Seçenekler

WordPress Source 4.2.3 Sürüm Vulns Analyze Fix Detaylı Bilgi

JohnDoe - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2013
Nereden:
Teşkilat
Yaş:
34
Mesajlar:
2.717
Konular:
572
Teşekkür (Etti):
805
Teşekkür (Aldı):
929
Ticaret:
(0) %
16-09-2015 01:33
#1
WordPress Source 4.2.3 Sürüm Vulns Analyze Fix Detaylı Bilgi
Merhabalar,

Wordpress’in yakın zamanda çıkardığı 4.2.4 security fix sürümüne istisnaden 4.2.3 de bulunan kritik zafiyetlerin analizi ve fix sürecine hızlı bir göz atacagız.

Bu dökümanda WP 4.2.3 de bulunan zafiyetlerin açıklaması ve "manuel" olarak nasıl kapatılacağı hk bilgi verilmiştir.

Ilk olarak SQL Injection zafiyetinden başlayalım.

WordPress dosyalarından post.php ve version.php de ki kodlar detaylı olarak incelendiğinde SQL Inj açığına rastlanıyor.

Post.php de satır 2985 de bulunan zafiyet ve fix kodlarını buraya aynen yazıyorum. Kırmızı ile belirtilen yerler zafiyet yeşil alanlar ise fixlenmiş halidir.

Kod:
foreach ( $group_by_status as $status => $comments )

{
     if ( ’post-trashed’ == $status )
     if ( ’post-trashed’ == $status ) {
               $status = ’0’;
-          $comments_in = implode( "’, ’", $comments );
-          $wpdb->query( "UPDATE $wpdb->comments SET comment_approved = ’$status’ WHERE comment_ID IN (’" . $comments_in . "’)" );
+          }
+          $comments_in = implode( ’, ’, array_map( ’intval’, $comments ) );
+          $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->comments SET comment_approved = %s WHERE comment_ID IN ($comments_in)", $status ) );
     }
Burada yapmanız gereken post.php de post-trashed değerini 0 olarak almak ve comments_in + implode kısımına status değeri eklemektir. Böylece post.php dosyasını fixliyorsunuz.

Şimdi gelelim version.php ye devam ediyoruz.

Version.php dosyasında "$wp_version = ’4.3-RC1-33542’;" kodunu bulup $wp_version = ’4.3-RC1-33555’; kodu ile değiştirmelisiniz.

Böylece version dosyasını SQL INJ saldırılarına karşı fixlemiş oluyorsunuz..

Şimdi gelelim bir başka dosya da bulunan zafiyet yoluna ve fix sürecine.. Bu zafiyetimiz "Timing Side Channel Attack" olarak geçiyor, açıkcası pek bilinen bir zafiyet değil, bu yüzden OWASP üzerinden açığa kısa bi göz atmanız faydalı olacaktır.

Bu zafiyet class-wp-customize-widgets.php dosyasında bulunuyor. Açıgın ciddiyeti wp nin çekirdek dosyası olan Includes klasöründe bu dosyanın bulunmasından rahatlıkla anlaşılabilir.

Peki zararlı kodumuz nedir? Nasıl fixliyoruz görelim.

class-wp-customize-widgets.php klasörünü açıp if ( $this->get_instance_hash_key( $decoded ) !== $value[’instance_hash_key’] ) { satırını if ( ! hash_equals( $this->get_instance_hash_key( $decoded ), $value[’instance_hash_key’] ) ) { bu kod ile değiştirmelisiniz.

Burada eklenen ! has_equals değerinin ciddi bir kritik açığının önlenmesinde ne kadar etkili olduğunu da gözünüzden kaçırmamakta fayda var.

Gelelim tema dosyalarını etkileyen XSS açığına.. Bu açık theme.php de bulunuyor.. Theme.php de tıpkı yukarıda ki dosya gibi wp-includes klasöründe bulunuyor.

Bu açık tam olarak tema önizlemelerinde kullandığımız opsiyonlar da hatalı kod nedeniyle alert verdirmemizi sağlıyor. Hemen theme.php de bulunan hatalı kodların fixlenmesini görelim. Yine hatalı olanlar kırmızı yeşiller fix.

Kod:
if ( strpos($matches[4], ’onclick’) !== false ) 
730                   $matches[4] = preg_replace(’#onclick=([\\’"]).*?(?<!\\\\\\)\\\\1#i’, ’’, $matches[4]); //Strip out any onclicks from rest of <a>. (?<!\\\\\\) means to ignore the ’" if it’s escaped by \\ to prevent breaking mid-attribute. 
               if ( 
                   ( false !== strpos($matches[3], ’/wp-admin/’) ) 
               || 
                   ( false !== strpos( $matches[3], ’://’ ) && 0 !== strpos( $matches[3], home_url() ) ) 
               || 
             ( false !== strpos($matches[3], ’/feed/’) ) 
               || 
             ( false !== strpos($matches[3], ’/trackback/’) ) 
               ) 
                   return $matches[1] . "#$matches[2] onclick=$matches[2]return false;" . $matches[4]; 
            
               $stylesheet = isset( $_GET[’stylesheet’] ) ? $_GET[’stylesheet’] : ’’; 
               $template   = isset( $_GET[’template’] )   ? $_GET[’template’]   : ’’; 
            
               $link = add_query_arg( array( ’preview’ => 1, ’template’ => $template, ’stylesheet’ => $stylesheet, ’preview_iframe’ => 1 ), $matches[3] ); 
         if ( 0 === strpos($link, ’preview=1’) ) 
                   $link = "?$link"; 
               return $matches[1] . esc_attr( $link ) . $matches[4];
Yalnız burada ki kırmızıları silmiyoruz. Tamam hatalı kod ama "eksik" kod yüzünden hatalıdır. Hemen en alt satıra geçip şu aşağıda ki kodu yenisiyle değiştirelim.

Kod:
return $matches[1] . esc_attr( $link ) . $matches[4]; yenisi return $matches[0] . esc_attr( $link ) . $matches[4];
Kırmızı alanı tamamen düzelttik. Fakat bu yeterli değil. 712. satırda bulunan return preg_replace_callback kısmının hemen başına bir kod daha ekleyeceğiz. Hemen detaylara geçelim. Kırmızı olan hatalı yeşil olan düzeltimiş (fix kodu)

Kod:
return preg_replace_callback( "|(<a.*?href=([\\"’]))(.*?)([\\"’].*?>)|", ’preview_theme_ob_filter_callback’, $content ); ]
return $content; - bu kodu üstte ki preg_replace_callback fonksiyonundan hemen önce eklemelisiniz.

Böylece theme.php de ki XSS yi de hallettik.

Şimdi gelelim widget ve navigasyonu etkileyen bir başka XSS açığına, bu açık sayesinde navigasyon menüleri üzerinden XSS zafiyetine rastlanıyor.

Açığın bulunduğu dosyalar default-widgets.php nav-menu.js görüldüğü gibi biri includes biri admin dosyalarında bulunuyor. Üstelik bir tanesi Js dosyası.. Bu da demektir ki saldırgan javscript üzerinde uzmansa bu dosyalarda bulunan XSS ile sitenize kan kusturabilir.

Peki nasıl önleyecegiz?

İlk olarak default-widgets.php dosyasını açıp widgetler üzerinden gerçekleştirilecek zafiyeti önleyelim.

Zafiyet kodlarını kırmızı olarak veriyorum. Fix süreci yine yeşil olan kodlardır. (bu kez değiştireceksiniz)

Kod:
<input type="text" class="widefat" id="<?php echo $this->get_field_id(’title’); ?>" name="<?php echo $this->get_field_name(’title’); ?>" value="<?php echo $title; ?>" />
Yeni kod (fix)

Kod:
<input type="text" class="widefat" id="<?php echo $this->get_field_id(’title’); ?>" name="<?php echo $this->get_field_name(’title’); ?>" value="<?php echo esc_attr( $title ); ?>" />
ne yaptık ? hatalı kodda bulunan $title; kısmını alıp esc_attr( $title ); olarak düzenledik. Böylece olası saldırıların önüne geçmiş olduk.

Son olarak nav-menu.js dosyasında bulunan kritik açığı da güncelleyip konuyu noktalayabiliriz.

Bu dosyayı açıp $this.prop(’title’, title).html( title ); şununla değiştireceksiniz $this.prop(’title’, title).text( title );

ne yaptık ? .html olan zararlı kodu .text ile güncelleyip olası saldırıların önüne geçtik.

Evet arkadaslar konuyu olabildiğince derli toplu olarak anlatmaya çalıştım. WP 4.2.3 de bulunan tüm açıklar ve detayları bunlardır.

4.2.4 security fix sürümüne geçerek tüm bu zafiyetlerden korunabilir ya da manuel olarak (öğrenmek ve uygulama geliştirmek için) kendiniz yapabilirsiniz.
--------------------- " TürkHackTeam "Vatan Operasyonu" 4093 Site Hacked [Şehitler Ölmez Vatan Bölünmez ! "
Türkiye'nin tek milli ve yerli #Hack grubu TürkHackTeam'dır. İçiniz rahat olsun biz buradayız.
klankil1, €r@y Teşekkür etti.
klankil1 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2013
Nereden:
Trabzon
Mesajlar:
865
Konular:
143
Teşekkür (Etti):
536
Teşekkür (Aldı):
784
Ticaret:
(0) %
16-09-2015 13:24
#2
Eline Sağlık Abi
---------------------
𐰲𐰸:𐰖𐰴𐰦𐰀
€r@y - ait Kullanıcı Resmi (Avatar)
Tamamen Forumdan Uzaklaştırıldı
Üyelik tarihi:
04/2015
Nereden:
İstanbul
Mesajlar:
3.976
Konular:
269
Teşekkür (Etti):
2540
Teşekkür (Aldı):
1938
Ticaret:
(0) %
16-09-2015 13:26
#3
eline sağlık
JohnDoe - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2013
Nereden:
Teşkilat
Yaş:
34
Mesajlar:
2.717
Konular:
572
Teşekkür (Etti):
805
Teşekkür (Aldı):
929
Ticaret:
(0) %
16-09-2015 13:30
#4
Teşekkür ederim değerli vaktinizi ayırarak konularımı okuduğunuz için eksik olmayın sağ olun.
--------------------- " TürkHackTeam "Vatan Operasyonu" 4093 Site Hacked [Şehitler Ölmez Vatan Bölünmez ! "
Türkiye'nin tek milli ve yerli #Hack grubu TürkHackTeam'dır. İçiniz rahat olsun biz buradayız.
Black-Leonx' - ait Kullanıcı Resmi (Avatar)
Özel Üye
Üyelik tarihi:
06/2015
Nereden:
Nereye
Mesajlar:
10.105
Konular:
1187
Teşekkür (Etti):
866
Teşekkür (Aldı):
3555
Ticaret:
(0) %
16-09-2015 13:37
#5
Ellerine Sağlık Abi (:
---------------------
TARİHİN TOZLU RAFLARINDA KAYBOLMA O RAFLARA TARİH YAZ !!!

Mümkün Olanı Başarmak İçin İmkansızı Yapmayı Unutma !

Siyah ~ Aslan'
JohnDoe - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2013
Nereden:
Teşkilat
Yaş:
34
Mesajlar:
2.717
Konular:
572
Teşekkür (Etti):
805
Teşekkür (Aldı):
929
Ticaret:
(0) %
16-09-2015 17:55
#6
Teşekkür ederim.
--------------------- " TürkHackTeam "Vatan Operasyonu" 4093 Site Hacked [Şehitler Ölmez Vatan Bölünmez ! "
Türkiye'nin tek milli ve yerli #Hack grubu TürkHackTeam'dır. İçiniz rahat olsun biz buradayız.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler