Исследователь безопасности Дэвид Голунски из Legal Hackers опубликовал подробности уязвимости, связанной с неавторизированным сбросом паролей в WordPress. Дэвид показал, как при определенных обстоятельствах злоумышленник может перехватить email для сброса пароля и получить доступ к пользовательскому аккаунту.
Идея заключается в следующем: используется переменная SERVER_NAME для получения имени хоста сервера, чтобы создать заголовок From/Return-Path для исходящего email на сброс пароля.
Крупные веб-серверы, такие как Apache, по умолчанию вносят в переменную SERVER_NAME имя хоста, предоставленное клиентом (в заголовке HTTP_HOST):
https://httpd.apache.org/docs/2.4/mod/core.html#usecanonicalname
Поскольку SERVER_NAME можно менять, злоумышленник способен устанавливать в эту переменную произвольный домен по своему усмотрению:
attackers-mxserver.com
и в итоге $from_email будет установлен в:
Соответственно, исходящее письмо с From/Return-Path для сброса пароля придет на адрес злоумышленника.
Результаты данной атаки будут зависеть от серверной среды, определенной конфигурации почтового сервера, а также в некоторых случаях от взаимодействия с пользователем. Отчет Дэвида содержит более конкретные методы, которые могут быть использованы.
Сообщив об этой проблеме команде безопасности WordPress в июле 2016, а также опубликовав новость на сайте HackerOne, Дэвид не обнаружил никакой реакции, а потому решил обнародовать детали уязвимости публично.
И хотя официального патча пока не существует, Аарон Кэмпбелл из команды безопасности WordPress отметил, что проблема не столь серьезна, как может показаться.
«Эта проблема имеет низкий приоритет, но мы в курсе о ней и она есть в нашей очереди», — говорит Кэмпбелл. Он обрисовал условия, которые потребуются для того, чтобы она превратилась в серьезную уязвимость.
«Чтобы эта проблема повлияла на безопасность, сервер должен разрешать для пользовательских заголовков перезапись $_SERVER[‘SERVER_NAME’]», — говорит Аарон. – «Мы считаем, что это плохая серверная конфигурация (как, к примеру, вывод display_errors на работающем сайте), что, увы, мы не можем контролировать».
Кэмпбелл проверил свои личные серверы Apache и nginx, и везде перезапись была запрещена. В дополнение к плохо настроенному серверу, Аарон также выделил и другие ситуации, которые могут приводить к подобной угрозе безопасности:
- Пользователь должен ответить на email со сбросом пароля
- Автоответчик должен ответить на email и включить исходное письмо
- Почтовый сервер был взломан или перегружен, и email был возвращен отправителю
«Если ваш сервер уязвим, и вы не можете поправить текущую конфигурацию, у вас все равно есть способ побороться с данной проблемой», — говорит Кэмпбелл. – «Небольшой PHP-код поможет вам задать статичный почтовый адрес отправителя по вашему выбору».
add_filter( 'wp_mail_from', function( $from_email ) { return '[email protected]'; } );
Аарон отметил, что исправление, скорее всего, не появится в будущем релизе безопасности, однако команда активно работает над ним. Если разработчики найдут хороший способ решить проблему, они обязательно поделятся им, как только проработают все возможные последствия.
Источник: wptavern.com
очень информативно и понятно. спасибо.