Специалисты компании RIPS опубликовали детали уязвимости в коде движка WordPress, которую разработчики закрыли в рамках последнего обновления безопасности. Баг позволял пользователю с правами участника создавать записи, не входящие в список разрешенных ему типов публикаций. Эксплуатация бреши могла привести к внедрению сторонних скриптов и других объектов в ядро CMS, а также к утечке данных о конфигурации сайта.

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

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

Как выяснили исследователи, злоумышленник с привилегиями участника может пройти верификацию, используя код обычной публикации (доступной всем), а потом поменять тип поста. В результате он получит возможность создавать на сайте контент, содержащий потенциально небезопасные элементы.

В качестве примера специалисты RIPS привели сценарий атаки на плагин Contact Form 7, установленный более 5 млн раз. Злоумышленник может создать форму обратной связи с возможностью прикрепить документ. В качестве объекта загрузки преступник может указать файл wp-config.php, хранящий информацию о ключевых параметрах сайта, а в качестве получателя — себя. В результате он получит доступ к содержимому системного файла.

Аналитики сообщили об уязвимости команде разработчиков WordPress, а также создателям плагина Contact Form 7. Авторы расширения исправили свою программу 4 сентября 2018 года, а команда, отвечающая за выпуск CMS, залатала брешь 13 декабря в релизе 5.0.1.

Это обновление безопасности стало первым для новой версии WordPress, увидевшей свет в начале декабря этого года. Помимо найденного экспертами RIPS бага, разработчики пропатчили в нем еще ряд уязвимостей, связанных с возможностью межсайтового скриптинга (XSS), внедрением вредоносного PHP‑кода и обхода MIME-верификации загружаемых файлов. Большая часть ошибок была исправлена не только в актуальном релизе CMS, но и в предыдущих сборках движка.

Категории: Аналитика, Уязвимости