Бесплатно Разбираем Уязвимости

Everest_RR

Местный
Private Club
Регистрация
8/10/18
Сообщения
232
Репутация
20
Реакции
255
RUB
0
f6b2258d55074bfdfcebb5d198757ec2.jpg

Уязвимость 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.

Злоумышленники всегда на чеку, число атак будет расти. Поэтому необходимо всегда быть бдительным в цифровом мире.
Читать статью на:
 
  • Теги
    проверка уязвимости
  • Сверху Снизу