Новости и события » Hi-Tech » Раскрыты детали уязвимости в WordPress 5.0.0

Раскрыты детали уязвимости в WordPress 5.0.0

Саймон Скэннелл (Simon Scannell), в прошлом году предложивший метод атаки "Phar deserialization" на PHP, опубликовал сведения об уязвимости в системе управления контентом WordPress, позволяющей выполнить произвольный код на сервере, имея привилегии автора публикаций (Author) на сайте. В обновлениях WordPress 4.9.9 и 5.0.1 была добавлена частичная защита, позяовлющая блокировать атаку в основном коде WordPress, но полностью проблема остается не исправленной и в актуальном выпуске WordPress 5.0.3 может быть эксплуатирована через дополнительные ошибки в плагинах (отмечается, что проблема проявляется в некоторых популярных плагинах c миллионами активных установок).

Уязвимость стала следствием двух проблем - ошибки при обработке файловых путей и возможности переопределения метаданных. Первая проблема позволяет переопределить в БД значение записи с параметрами изображения в таблице wp_postmeta. При изменении параметров загруженного изображения (например, описания), передаваемые данные обрабатываются в виде массива параметров, что позволяет переопределить и значение служебного параметра "_wp_attached_file", содержащего имя файла с изображением.

Так как, параметр из БД с именем файла используется относительно каталога "wp-content/uploads" без повторной проверки корректности имени, атакующий может через добавление символов "../" выйти за пределы базового каталога с загружаемыми файлами. В функциях обработки изображений, например в функции wp_crop_image, вызываемой при кадрировании изображения, поддерживается как обработка уже загруженного локального файла, так и загрузка внешнего файла. Если локальный файл присутствует, обрабатывается он, а если нет то предпринимается попытка его загрузки c внешнего хоста (например, если указан файл evil.jpg и его нет в локальной ФС, он будет загружен как "https://targetserver.com/wp-content/uploads/evil.jpg").

При сохранении после кадрирования файл сохраняется в отдельном каталоге с добавлением к имени приставки "cropped-" ("cropped-evil.jpg"). Изменив при помощи вышеотмеченной проблемы имя на "evil.jpg?/../../evil.jpg" можно сохранить результирующее изображение в любом каталоге, например, в каталоге с темами оформления (wp-content/themes), PHP-файлы в котором могут быть выполнены через вызов через функцию include. Имя выполняемого файла с темой определяется в переменной "_wp_page_template", которая по аналогии с именем изображения может быть изменена на произвольное значение. На данном этапе атакующий уже может добиться записи изображения в каталог с текущей темой оформления и указать этот файл в качестве текущего шаблона оформления.

Для решения задачи по передаче PHP-кода под видом изображения используется особенность PHP-расширения Imagick, которое после редактирования оставляет содержимое метаданных EXIF в неизменном виде, т. е. в результирующем изображении остаются те же параметры EXIF, что и в исходном. Разместив вместо блока EXIF PHP-код можно добиться его выполнения при попытке подключения шаблона определенной темы оформления. При применении для преображения изображений PHP-расришения GD, атака усложняется, так как GD очищает EXIF и для выполнения кода необходим особый подбор значений пикселей, который после обработки в GD образует PHP-код.

Интересно, что в ходе изучения внутренних структур PHP-расширения в libgd параллельно была выявлена уязвимость CVE-2019-69772, приводящая к переполнению буфера при разборе в функции gdImageColorMatch специально оформленных изображений, которую также можно использовать для атаки на PHP-приложения, вызывающие функцию [[http://php.net/imagecolormatchbimagecolormatch]]. Таким образом под видом изменения загруженного изображения, злоумышленник может изменить любой файл в файловой системе, насколько это позволяют права доступа, под которыми выполняется WordPress. Подобная проверка, в частности, отсутствует в функции wp_crop_image, вызываемой при кадрировании изображения.

Например, в штатном режиме при обработке загруженного изображения "evil.jpg" будет открыт файл "wp-content/uploads/evil.jpg", но если поменять имя в БД на "../evil.jpg" будет открыт уже файл "wp-content/uploads/../evil.jpg", т. е. "wp-content/evil.jpg".


Продажи Cybertruck от Tesla превысили продажи других электропикапов...

Продажи Cybertruck от Tesla превысили продажи других электропикапов вместе взятых

Несмотря на противоречивый дизайн и неоднозначное отношение к Илону Маску (CEO Tesla) в США, Cybertruck пользуется большим спросом у покупателей и продолжает продаваться все большими количествами - сообщается, что в июле было зарегистрировано ~5200 новых...

20 сентября 2024
  • Доставка из Германии в Украину с сервисом Meest Shopping

    Доставка из Германии в Украину с сервисом Meest Shopping

    Зарубежный интернет-магазин – это площадка, где можно найти широкий ассортимент качественных и недорогих товаров от известных производителей. Доставка из...

    29 августа 2024
  • Тротуарная плитка: свойства, виды и преимущества

    Тротуарная плитка: свойства, виды и преимущества

    Тротуарная плитка давно стала неотъемлемой частью городского ландшафта. Она используется не только для обустройства тротуаров, но и для мощения дворов,...

    4 июля 2024
  • Где лечить зубы в Харькове

    Где лечить зубы в Харькове

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

    24 мая 2024
  • Перевод письменного текста

    Перевод письменного текста

    Перевод письменного текста – это процесс перевода текста на другой язык с помощью письменного переноса информации из одного языка на другой с учетом...

    4 мая 2024

Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх