Уязвимость WP < 2.8.4
Намедни была обнаружена уязвимость WordPress, позволяющая злоумышленнику запросить смену пароля пользователя, у которого в базе нет ключа активации (не было запросов «напоминания» пароля). Чаще всего таким пользователем оказывался admin — первый по списку. Уязвимость не критичная, т.к. пароль менялся на случайный, сгенерированный WP, и отправлялся на почту жертве.Но приятного в этом тоже мало, особенно если имеют место проблемы с почтой, что, увы, не редкость. В связи с этим была выпущена версия 2.8.4 с исправленным багом.
Тем, кто по каким-либо причинам не хочет переходить на новую версию, могу предложить небольшой хак. В файле wp-login.php, в самом начале, после <?php добавить строку
foreach ($_GET as $key=>$value) if (!is_string($value)) $_GET[$key] = '';
большое спасибо
Спасибо, за хак.
[q]Плагин в архиве обновлен, но ссылку я пока выставлять не буду.[/q]
Об чём речь?
Речь о несостоявшемся «лечебном» плагине. Забудьте.
спасибо!
Скажите, хак-исправление в этом посте ещё актуальный после вашей записи»Взлом WordPress. HTTP_REFERER в url.»?
Да. Это другая дырка, к слову, довольно безобидная.
Этот переход точно даётся с трудом, спасибо за статью. Надо ещё почитать статью лекактуса.
Спасибо за инфу!
Можно ли обновить WP с 2.2.3 сразу до 2.8.4 ?
Я 2.2.3 напрямую обновил до 2.7. Не думаю, что есть принципиальные отличия от обновления до 2.8.4. Советую почитать лучший FAQ по WordPress. И помнить: бэкап — наше всё!
На редкость бажный переход на новую версию, особенно с учётом отпусков всё это печально… Меня уже подёргали по данной фиче в день выхода 2.8.4. Жесть.
Да, и на старуху бывает проруха… Меня подвели самоуверенность и мой WordPress. Он почему-то вдруг самостоятельно распознал западло и не нашел юзера с пустым полем user_activation_key, хотя оно у всех пустое. А я подумал, что сработал плагин, не перепроверив как положено 7 раз. Спасибо, Vladimir, еще раз. Плагин в архиве обновлен, но ссылку я пока выставлять не буду.
Юрий, Ваш плагин (как я его вижу сейчас), будет работать только в глубоко частном случае, когда register_globals On.
function wp_login_vulnerability_remover() {
if (strlen($key) != 20)
return new WP_Error('invalid_key', __('Invalid key'));
}
Проблема в том, что $key в функции нигде не объявлен и не передаётся ей в качестве аргумента.
Я полагаю, что Вы имели в виду $_REQUEST[‘key’]?
Спасибо. Плагин на доп проверке.
PS Спешка нужна в трех случаях. Этот — не из их числа.