Уязвимость Drupalgeddon2 в Drupal 7
Совсем недавно появилась серьезная уязвимость в систему управления контентом Drupal. Эта проблема была решена на 8.х, но на 7 работает гораздо больше сайтов. Поэтому уделим снимание именно ей.
Для начала следует подготовиться и применить официальный репозиторий Drupal на Docker Hub. Для этого следует развернуть контейнер с необходимой версией CMS и поднять БД. Возьмем самую уязвимую версию 7.57, после чего произведем установку Drupal для проверки корректной работы программы.
Рекомендовано использовать отладчик, поэтому стоит произвести установку расширения Xdebug. Необходимо сменить представленный IP-адрес на свой и еще раз просмотреть правильность прописанного пути скомпиленной библиотеки. Когда перезагрузка конфигов Apache сделана, пора запускать дебаггер. Для работы нужно применять PhpStorm с расширением Xdebug helper для Chrome. Закачать исходники CMS и Вы готовы.
Этапы работы
Для начала следует создать новый аккаунт. Загрузить аватарку здесь нельзя. Этот баг связан с багом Renderable Arrays, обработанные с Render API. Для вызова функции call_user_func с кастомными параметрами имеются специальные элементы. Следует начать с обработки роутов в приложении при условии включенного сементического URL на сервере, тогда URI перенаправит файл index.php в качествe GET-параметра q.
Далее следует разбить путь функцией array_slice и сделать запрос к базе данных, чтобы выбрать пути из таблицы с роутами. Колбэки из таблиц предназначены для использования при обращении к выбранным путям. При его выборе используется функция call_user_func_array для ее вызова.
Есть метод uploadAjaxCallback, который позволяет рендерить вложенный массив с пользовательскими данными, причем в 7 версии аналог – file_ajax_upload. После чего рассматриваются пути использования функций как колбэк.
Что делать с кэшем
Если рассмотреть любую форму, доступную без авторизации, то это отличная возможность записать произвольные пользовательские данные в параметр #default_value. Может возникнуть ситуация при передаче: невалидные данные не будут кэшироваться. Если возникает ошибка, то всегда можно просмотреть ее на form_set_error.
Важно, что в течение обработки POST-запроса можно очутиться в последней ветке условия, при попадании во вторую, то не получите сообщение об ошибке. Это связано с отправкой пустого массива, который станет переменной $sections.
Злоумышленники всегда на чеку, число атак будет расти. Поэтому необходимо всегда быть бдительным в цифровом мире.
Читать статью на:
Для просмотра ссылки необходимо нажать
Вход или Регистрация