05.11.2014 Views

ЛУЧШИХ ВИРУСОВ - Xakep Online

ЛУЧШИХ ВИРУСОВ - Xakep Online

ЛУЧШИХ ВИРУСОВ - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

взлом<br />

WORDPRESS COMMENTS HTML SPAM VULNERABILITY<br />

Перед тобой первая неопубликованная уязвимость, которую я назвал<br />

«WordPress Comments Html Spam Vulnerability».<br />

Уязвимость затрагивает все версии движка, начиная от 1.5 и заканчивая<br />

последней (на момент написания статьи) 2.7.1.<br />

Заглянем в исходники вордпресса. Открывай файл ./wp-includes/<br />

comment.php и находи следующий код:<br />

function check_comment($author, $email, $url, $comment,<br />

$user_ip, $user_agent, $comment_type) {<br />

...<br />

if ( 'trackback' == $comment_type || 'pingback' ==<br />

$comment_type ) { // check if domain is in blogroll<br />

$uri = parse_url($url);<br />

$domain = $uri['host'];<br />

$uri = parse_url( get_option('home') );<br />

$home_domain = $uri['host'];<br />

if ( $wpdb->get_var($wpdb->prepare("SELECT<br />

link_id FROM $wpdb->links WHERE link_url LIKE (%s) LIMIT<br />

1", '%'.$domain.'%')) || $domain == $home_domain )<br />

return true;<br />

else<br />

return false;<br />

}<br />

...<br />

}<br />

}<br />

$str = mb_strcut( $str, 0, $count );<br />

// remove part of an entity at the end<br />

$str = preg_replace( '/&[^;\s]{0,6}$/’, '', $str );<br />

return $str;<br />

Казалось бы, передать ссылку здесь невозможно. Но нерадивые разработчики<br />

снова не учли несколько нюансов:<br />

1. strip_tags() успешно пропускает через себя теги вроде «» (то есть,<br />

содержащие пробелы);<br />

2. kses-фильтры успешно нормализуют html-теги, содержащие в себе<br />

эти самые пробелы.<br />

Исходя из этой информации, можно придумать конечный эксплойт:<br />

<br />

<br />

Òàéòë: <br />

URL:<br />

Comment:<br />

Êóïèòü ñëîíà< / a >< / b ><br />

В итоге, на нужном блоге мы получим зааппрувленный комментарий с<br />

выделенной жирной ссылкой «Купить слона». Единственное замечание:<br />

этот способ в SEO годен только для Yahoo, Яндекса, MSN, так как в коде<br />

ссылки добавляется rel=«nofollow», благодаря чему всемогущий Гугл ее<br />

не засчитывает.<br />

ПОДМЕНА RSS-ФИДОВ В DASHBOARD<br />

В конце прошлого года я нашел еще один занимательный баг в<br />

WordPress, который заключался в подмене RSS-лент на главной странице<br />

админки блога. Итак, в Dashboard содержатся следующие ленты новостей:<br />

новости плагинов, incoming links, новости devblog c wordpress.<br />

org и новости «Планеты WordPress». Начиная с версии 2.5, к каждому<br />

фиду прикреплена кнопочка «Edit», что позволяет администратору блога<br />

редактировать эти пресловутые фиды, заменяя их на любые свои. Но<br />

разработчики снова проморгали тот факт, что в функции редактирования<br />

фидов не существует никакой проверки прав (в который раз поражаюсь<br />

невнимательности девелоперов). Теперь смотри. Скопируй ленту<br />

новостей с девблога официального сайта вордпресса, затем вставь в<br />

нее в качестве первого поста объявление о security-патче (или просто<br />

новой версии) блога. В посте (естественно, в ссылке на скачку) укажи<br />

свой протрояненный дистрибутив вордпресса. Затем положи подготовленный<br />

фид на какой-нибудь сервер и используй этот html-код для<br />

подмены рсс-ленты девблога на свою:<br />

<br />

<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!