wp_footer exploit, владельцам блогов на Wordpress
01 Jun, 2008Мой блог стал пропадать из гугла, причиной оказался практически незаметный эксплойт для Wordpress. О том как узнать о нем, и избавиться от него, этот пост.
Чтобы узнать об этих граблях мне пришлось наступить на них. Это было больно, половина страниц моего блога ушла из индекса гугла. Надеюсь с вами этого не случится.
Что вообще происходит?
После определенных действий (о них ниже) на вашем блоге появляются рекламные ссылки на другой ресурс. Однако видят их только поисковые боты. При обычном просмотре страничек вы не увидите их следа.Я заметил их случайно, просматривая HTML закешированной главной странички моего блога, вот скриншот кода (внизу странички, после футера, очень много ссылок):
Или вот кусочек кода, чтобы было видно:<div id="_wp_footer"><a href="http://www.articulate.com/blog/?page=0" title="Acyclovir">Acyclovir</a> <a href="http://www.articulate.com/blog/?page=1" title="Adderall">Adderall</a> <a href="http://www.articulate.com/blog/?page=2" title="Adipex">Adipex</a> <a href="http://www.articulate.com/blog/?page=3" title="Alprazolam">Alprazolam</a> <a href="http://www.articulate.com/blog/?page=4" title="Ambien">Ambien</a> ... и еще около 100 ссылок ...Ссылки, конечно, могут быть и другие, но их будет очень много, и заметить их будет легко.
Обнаружить у себя этот спам очень просто:
- Вводим в google адрес своего блога
- Жмем на "cached" или "сохраненная копия"
- В своём броузере нажимаем "View Source" (просмотр исходного кода, или HTML-кода)
- В самом низу кода ищем огромный список левых ссылок (как показано выше на скриншоте, и в виде текста). Ссылки могут быть другие, но понять ваши они или нет, вы сможете легко.
Cсылки вставляются с помощью функции wp_footer()
. Потому для быстрого исправления, достаточно ее закомментировать в footer.php
. (она редко кем используется)
Как это всё убрать
Так как у эксплойта есть несколько лазеек, нужно пробовать пока не получится. Вот варианты:1. Проверить .htaccess
В .htaccess возможны подозрительные редиректы. Обычно этот файл довольно маленький и без ссылок.2. Проверить файлы внутри вашей темы
Проверить папкуwp-content/wp-theme/YOUR_THEME/
на предмет подозрительных файлов. Например в некоторых случаях там появляется файл index2.php. Или еще что-то необычное.
3. Проверить папку wp-includes/
Искать нужно файл class-mail.php
, если найдете:
compat.php
— (необходимо заменить на корректный с wordpress.org)
class-mail.php
— удалить.
4. Проверить файл wp-includes/default_filters.php
В файле default_filters.php поищите такую строку:
add_action('wp_footer','wpc7c16b8466d864eeefd20050625c7775');Или похожие на нее. Они же могут вобщем-то быть в любых файлах.
5. Таблица wp_options
В базе данных следует обратить внимание на строку в таблице wp_options, гдеoption_name=active_plugins
. Там, в поле option_value
вероятно могут находиться ссылки на вызываемый код, например так:
i:1;s:117:"../../../../../../../../../../../../../../../../../../../../../../tmp/tmpzv0zq2/sess_12d33bbd6fb1b4f67df11f089be43b20";i:2;s:45:"../../wp-content/themes/cssing2/index_old.gif";
Не может не вызвать подозрения, неправда ли?
Обычно там что-то вроде этого:
i:6;s:25:"subscribe-to-comments.php";
Если у вас обнаружились похожие подозрительные значения в базе, скорее всего такой запрос вернет вам остатки эксплойта:
SELECT option_value FROM wp_options WHERE option_name = 'internal_links_cache'
Непосредственно в этом поле, у меня хранились ссылки выводимые поисковикам закодированные base64.
6. Проверить файлы *_new.giff *_old.pngg *_new.php, *_old.gif
В некоторых директориях инсталляции Wordpress могут появится файлы вроде index_old.gif, index_old.giff, whatever_new.php. И тому подобные. Их нужно обязательно удалить. Файлы могут быть во всех директориях:/wp-content/uploads
/wp-content/plugins
/wp-content/themes
/wp-includes
/wp-admins
/
7. Поиск 'base64' в тексте
В идеале лучше сделать поиск по всем файлам Вордпресса таких строк: base64 (рядом с кучей непонятных символов) — рядом должно быть что-то вродеeval
....
_wp_footer_ (в нормальном Wordpress не найдётся)
(или кусочки HTML, который выводит у вас СПАМ-ссылки)
Эти кусочки кода могут оказаться в почти любом файле Wordpress.
Каково! Куча вариантов на выбор, как вставить вам спам! Вот где смекалка сегодня работает!
Интересно так же, что все методы позволяют вам апгрейдить Wordpress. Обновляйте его хоть каждый день, если эксплойт прописан, он останется. Умные спаммеры.
Полезные ссылки
Без информации из этих ссылок, я бы просто не справился с атакой за 2 часа.- Пошаговая инструкция по выявлению эксплойта в базе данных (очень полезно) и вся история обнаружения и исследования атаки
- Еще одна пошаговая инструкция к исправлению ситуации
- О том как один блоггер расследовал этот хак, и "нашел" ответственных.
- More Random WordPress Blogs (and Al Gore) Owned by SEO Spammers, еще одно небольшое расследование ситуации
- Файл index_old.gif, для тех кому интересен хакерский код
- wp-content/wp-theme/cssing/index_old.gif
- Записи в таблице wp_options, в полях описанных выше.
P.S.: Об истоках:
I also found a signature name alxumuk...Все дорожки ведут к славянам... На блоге Альберта Гора, кстати тоже был этот вид спама, один в один как на cssing. =).
Обновляйте wordpress почаще, и посматривайте не подцепили ли вы что-то вроде этого... Эксплойту, уверен, подвержено не так много сайтов, но лучше провериться.
Опыт, мысли, советы — приветствуются!
282 комментариев к “wp_footer exploit, владельцам блогов на Wordpress”