The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раскрыты детали уязвимости в WordPress 5.0.0"
Отправлено opennews, 20-Фев-19 14:07 
Саймон Скэннелл (Simon Scannell), в прошлом году предложивший метод атаки "PHP Phar deserialization (https://www.opennet.ru/opennews/art.shtml?num=49641)", опубликовал (https://blog.ripstech.com/2019/wordpress-image-remote-code-e.../) сведения об уязвимости в системе управления контентом WordPress, позволяющей выполнить произвольный код на сервере, имея привилегии автора публикаций (Author) на сайте. В обновлениях WordPress 4.9.9 и 5.0.1 (https://www.opennet.ru/opennews/art.shtml?num=49781) была добавлена частичная защита, позяовлющая блокировать атаку в основном коде 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 (https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6977), приводящая к переполнению буфера при разборе в функции gdImageColorMatch специально оформленных изображений, которую также можно использовать для атаки на PHP-приложения, вызывающие функцию [[http://php.net/imagecolormatchbimagecolormatch()]].

URL: https://blog.ripstech.com/2019/wordpress-image-remote-code-e.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=50177

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру