Изображение: Andrew Abogado, CC BY 2.0

Исследователь информационной безопасности Давид Голунски (Dawid Golunski) опубликовал данные о критических уязвимостях в WordPress — они позволяют осуществлять удаленное выполнение shell-команд и сброс пароля администратора через подмену заголовка Host. Кроме того, исследователь рассказал о двух аналогичных критических уязвимостях в открытом продукте Vanilla Forums.

Уязвимость WordPress


Обнаруженная Голунски уязвимость (CVE-2017-8295) затрагивает все версии WordPress, включая сборку 4.7.4. По словам исследователя, он неоднократно передавал информацию о проблемах безопасности разработчикам продукта, однако они до сих пор не выпустили официальное исправление.

Атака подробно описана в специальном бюллетене безопасности, опубликованном Голунски. Ее суть заключается в использовании логической ошибки в механизме восстановления пароля Wordpress. Когда пользователь запрашивает такую смену, WordPress генерирует уникальный секретный код и отправляет его на email, который хранится в базе.

При отправке этого сообщения для получения имени хоста сервера используется переменная SERVER_NAME — это нужно, чтобы установить значения в поля From/Return-Path. В поле «From» хранится адрес отправителя, а в «Return-Path» — адрес, на который должны доставляться сообщения 'bounce-back', они генерируются в случае сбоя отправки.



По словам Голунски, злоумышленник может отправить специальный HTTP-запрос с предустановленным значением hostname (например, attacker-mxserver.com) и одновременно инициировать процесс сброса пароля для какого-либо пользователя — к примеру, администратора сайта.

Поскольку имя хоста в HTTP-запросе — это домен, контролирующийся атакующим, поля From и Return-Path в письме для сброса пароля будут изменены таким образом, что в них будет включен почтовый адрес, связанный с доменом хакера — например, wordpress@attacker-mxserver.com вместо wordpress@victim-domain.com.

Письмо с кодом для сброса пароля будет все равно отправлено на адрес жертвы, однако при определенных условиях получить его сможет и атакующий.

  1. Если жертва ответит на письмо, то ответ уже будет отправлен на адрес взломщика (теперь он хранится в поле From), а в истории переписки сохранится ссылка на сброс пароля.
  2. Если по какой-то причине доставка письма жертве не удастся, то сообщение о сбое будет автоматически перенаправлено на адрес злоумышленника (он указан в Return-Path).
  3. Другой возможный сценарий — для того, чтобы первоначальное сообщение не было доставлено жертве, злоумышленник может провести DDoS-атаку на email-сервер целевого пользователя или отправить на его адрес большое количество писем, добившись того, что почтовый адрес больше не сможет принимать сообщения. Таким образом произойдет сбой доставки, и сообщение об это будет доставлено атакующему.

Манипуляции с заголовком SERVER_NAME с помощью HTTP-заголовка Host могут быть осуществлены на «дефолтных» настройках веб-сервера Apache, который чаще всего используется для развертывания WordPress.

Поскольку официального патча для закрытия уязвимости не существует, администраторов сайтов на WordPress рекомендуется обновить конфигурацию, активировав опцию UseCanonicalName — это позволит установить статическое значение SERVER_NAME и сделает проведение атаки невозможным.

Что не так с Vanilla Forums


Спустя неделю после обнаружения ошибки безопасности в WordPress, Голунски также опубликовал информацию о двух критических уязвимостях в популярном open source софте Vanilla Forums. Первая из них (CVE-2016-10033) открывает возможность удаленного исполнения кода, а вторая (CVE-2016-10073) аналогична уязвимости в WordPress и позволяет проводить атаки по перехвату сообщений для сброса пароля. Для обеих ошибок в данный момент отсутствует патч. Уязвима в том числе последняя версия Vanilla Forums 2.3, исследователь уверен в том, что предыдущие версии также уязвимы.



По мнению Голунски, возможность удаленного выполнения shell-команд появилась в Vanilla Forums из-за того, что разработчики продукта до сих пор используют уязвимую версию популярной open source-библиотеки для отправки email-писем PHPMailer. Исследователь обнаружил уязвимости в январе 2017 года и передал информацию разработчикам, ошибки не были исправлены и спустя примерно пять месяцев Голунски опубликовал информацию о них. Аналогичная уязвимость была ранее обнаружена исследователем в Wordpress.

В прошлом году исследователь отчитывался об обнаружении критической уязвимости (CVE-2016-10033) в библиотеке PHPMailer, которая позволяла осуществлять удаленное исполнение shell-команд в контексте веб-сервера — это приводит к компрометации атакуемого веб-приложения. Голунски также подготовил видео, из которого становится понятно, что для атаки на Vanilla Forums подходит старый эксплоит для PHPMailer.



Исследователь отмечает, что уязвимость может быть эксплуатирована даже в том случае, если Vanilla Forums установлен на веб-сервере Apache с несколькими включенными vhosts, а сам атакуемый софт не является виртуальным хостом по умолчанию.

До тех пор пока разработчики Vanilla Forums не выпустили обновление, Голунски рекомендует администраторам сайтов, которые используют этот софт, установить в качестве email-адреса отправителя заранее заданное статическое значение — это заблокирует использование заголовков Host.

Для предотвращения атак с использованием описанных уязвимостей WordPress и Vanilla Forums эксперты Positive Technologies рекомендуют использовать специализированные инструменты защиты — в частности, защитный экран уровня приложений PT Application Firewall позволяет отражать попытки эксплуатации этих ошибок безопасности.
Поделиться с друзьями
-->

Комментарии (14)


  1. lostpassword
    12.05.2017 21:26
    -1

    Спасибо за статью!


  1. vlreshet
    12.05.2017 22:10
    +1

    Каждый раз при виде исходников Wordpress дико удивляюсь. Удивляюсь тому что столь хреново написанная система стала так популярной. Глядя на эти исходники хочется рыдать, и становится стыдно за PHP.


    1. redfs
      12.05.2017 22:44
      -1

      Каждый раз при виде исходников Wordpress
      А в 2003 вы их видели? Еще на php4? Тоже было стыдно за язык и хотелось плакать? Я, как и вы, к WP крайне отрицательно отношусь (в основном из за дырявой архитектуры), но зря вы повторяете шаблонные глупости.


      1. NorthDakota
        12.05.2017 23:40
        +1

        Так тут не шаблонные глупости, шаблонные глупости у разработчиков вордпресса, причем шаблонные глупости 2003 года как вы сами написали.
        Вместо того чтобы переписать свою систему с нуля — нормально, они до сих пор пилят новые костыли на старый лад. Каждую неделю только и слышно что в вордпрессе найдена новая критическая уязвимость.


        1. redfs
          13.05.2017 07:36
          +1

          Да, все так. Но после того, как экосистема WP обросла кучей плагинов от разных разработчиков идея переписать ее с нуля потеряла всякий смысл. Без нарушения обратной совместимости там уже практически невозможно что-то сделать — только костыли писать.
          Просто надо понимать, что WP — это очень старая система с тяжелым наследством. Кмк WP находится в состоянии затянувшейся агонии уже лет 8-10 и держится в основном за счет того, что сильно выстрелил при рождении. Такой своеобразный жизненный цикл проекта.

          Но рыдать, глядеть на исходники, и стыдится за язык программирования? Это, конечно, очень трогательно, но как то картинно. На прошлой неделе я проводил собеседование с соискателем должности программиста php, так он мне тоже сказал, что глядя на некоторые исходники ему стыдно за язык программирования. Фраза для меня была настолько необычной, что запомнилась. И вот снова…


          1. Dreyk
            13.05.2017 09:02

            потому что обидно, когда из-за такого кода весь язык считают недоязыком даже те, кто ни строчки не написал не только на нем, но и вообще :/


            1. redfs
              13.05.2017 10:26

              Ну… стоит ли обижаться на таких людей? Да мне кажется у любого ЯП есть свои хейтеры и свои евангелисты, php тут не является каким-то исключением. Мне лично внушает оптимизм процесс развития языка в последние годы, во всяком случае он уже сильно отличается от того, на чем был написан WP :)


          1. xRay
            13.05.2017 11:26

            На первом этапе можно переписать внутренний код движка не меня внешний API для расширений.


    1. maxic
      13.05.2017 01:44

      А причем здесь PHP
      Просто у WP неандертальская архитектура. Точнее её просто нету. Бессвязный набор функционального кода.
      Я много раз в других языках наблюдал не лучше


  1. Revertis
    13.05.2017 15:57
    +1

    Хм, как много отрицательных отзывов о WP… А может посоветуете чем её можно заменить для простого бложика? Только не на JS.


    1. wolfus
      14.05.2017 01:26
      -2

      MODx


    1. egor_bulychev
      14.05.2017 17:06

      для простого блога хватит и такого http://blogengine.ru/


    1. nikitasius
      14.05.2017 20:55

      На каждую систему есть вагон плохих отзывов. Если нужен блог — используйте WP, мой вам совет.


      Что до этой уязвимости… да она такая что вырви глаз, но она эксплуатируется, если и админ криворучка и у него нет в конфигурации дефолтного домена.


      Если дефолтный домен есть, то при запросе по айпи будет… дефолтный ответ, который никаким боком к WP отношения не имеет и нельзя будет использовать эту уязвимость.


  1. vovasik
    15.05.2017 08:09

    Имя столько удачи сколько нужно для эксплуатации этой уязвимости я бы лучше в рулетку выигрывал.