WordPress 2.8.3 Güvenlik Açığı (Remote admin reset password)

Dün yeni bir WordPress Güvenlik Açığı ortaya çıkartıldı. Dünden beri bu açık hakkında bilgi topluyorum. Kenan Barış ÇELİK arkadaşımda sağolsun bir uyarı göndermiş.  Kod benim sistemimde aldığım güvenlik önlemleri sayesinde çalışmıyor.  Öncelikle bunu belirtmek isterim.

Milw0rm internet sayfasında yer alan güvenlik açığında ;

Admin kullanıcısı için bir şifremi unuttum yapılmakta. Hemen ardından

adres.com/ wordpress/ wp-login.php?action= 
rp&key= o7naCKN3OoeU2KJMMsag

Bağlantı adresi tıklanıyor ve yeni şifreleri giriyorsunuz.  Şimdi “hadi be oradan e-maile gelen linki tıklamadan yeni şifreyi alamazsın” diyenleri duyar gibiyim.  Exploit için şöyle bir anlatım yapılmış.

Wp-login.php içerisinde yer alan aşağıdaki kod üzerinde bir by-pass yapılarak bazı onay ve kontroller devre dışı bırakılabilmekte.  Yani kısacası aşağıdaki kodları bypass ederek yeni şifre elde edilebilmekte.

wp-login.php:
...[snip]....
line 186:
function reset_password($key) {
    global $wpdb;
    $key = preg_replace('/[^a-z0-9]/i', '', $key);
    if ( empty( $key ) )
        return new WP_Error('invalid_key', __('Invalid key'));
    $user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s", $key));
    if ( empty( $user ) )
        return new WP_Error('invalid_key', __('Invalid key'));
...[snip]....
line 276:
$action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 'login';
$errors = new WP_Error();
if ( isset($_GET['key']) )
    $action = 'resetpass';
// validate action so as to default to the login screen
if ( !in_array($action, array('logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login')) && false === has_filter('login_form_' . $action) )
    $action = 'login';

...[snip]....
line 370:
break;
case 'resetpass' :
case 'rp' :
    $errors = reset_password($_GET['key']);
    if ( ! is_wp_error($errors) ) {
        wp_redirect('wp-login.php?checkemail=newpass');
        exit();
    }
    wp_redirect('wp-login.php?action=lostpassword&error=invalidkey');
    exit();
break;
...[snip ]...

Düzeltme: Bu güvenlik açığı için Ahmet Alp Bakan arkadaşım şu bağlantı adresindeki düzeltmeyi
yapmamızı önerdi.

Sonuç;

WordPress 2.8.3 sürümü bu güvenlik açığı için yeni bir sürüm çıkana kadar en azından wp-admin klasörüne erişim için bir .htaccess şifreleme yapınız.  Eğer hiçbirşey bilmiyorsanız muhakkak ki bilen birilerine wp-admin için extra bir şifreleme eklettiriniz. Yada blogunuzu yeni sürüme kadar wp-login ve wp-admin klasörlerinizi devre dışı bırakınız. Lütfen sisteminizden admin hesabını kaldırınız. Başka bir hesap üzerinden sistemi yönetiniz..!

Not: Bu açığı henüz test etmedim. İşe yarayıp yaramadığı hakkında tam bir bilgim yok. Test edip sizlere tekrardan bilgi vereceğim.

“WordPress 2.8.3 Güvenlik Açığı (Remote admin reset password)” üzerine 8 yorum

  1. Ne ara bu açıklar bulunuyorda lamerlere kadar düşüyor anlamış değilim 🙂 Kaldı ki millet neden oturup bunlarla uğraşır ki? Elalemin el emeği göz nuru bloğunla ne alıp veremediğiniz var be kardeşim? Otur sende yaz bişeler dimi:) Uyarı için teşekkürler. WordPressi bıraktım zaten artık burdan takip ediom sürümleri, açıkları vs… 😀

    Yanıtla
  2. Merhaba,

    Dün açık çıkar çıkmaz en kısa çözüm`ü yayınlamıştım ama bugün güncelleme yapmışlar ama sanırım açığı başka bir sayfa üzerinden kapatma yoluna gitmişler. Tam incelemedim ama benim önerdiğim şekilde kodların değiştirilmediği, 2.8.4`te farklı bir yoldan kapattıklarını söylemişti bir arkadaşım.

    Ama ne olursa olsun TEAkolik`in de dediği gibi, .htaccess veya basic authentication ile önlem almanız sizin için daha iyi olur.

    Yanıtla
  3. Merhaba,
    wp-admin klasörünü htaccess şifreleyince flash uploader sorun çıkartıyor. Çözüm konusunda öneriniz var mı?

    Yanıtla
  4. valla ftp rdp gibi hemen hemen tüm protokoller iptal edildi bir tek http protokolü açık o da kontrol panali gibi siteyi yönetecek bir şey barındırmıyo yani veritabanıma kendi yazdığım lokalde ki bir exe ile bilgileri giriyorum canavar oldu istediği kadar açık çıksın 😀 ne de olsa kendi host tum web sayfaları sadece bilgi göstermeye yarıyo değişiklik yapmak imkansız 🙂 bunun dışında tabi bi çok güvenlik programı ids ler ağ analizatörleri ssl antivirüs an spyware anti keylogger xss filtreleri sql inject filtreleri aklımıza gelebilecek daha pek çok güvenlik önlemi ni aldım bana kalsa egomu tatmin ediyorum 😀

    Yanıtla
  5. valla hayretler içindeyim hersey yapılıyor kısaca php bılgısı ıyı olan birisi siteleri alt ust edebiliyor yapılacak birşey yok.

    Yanıtla

Yorum yapın