Невозможно отучить людей изучать самые ненужные предметы.
Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3
Надо знать обо всем понемножку, но все о немногом.
Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы
Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)
Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода
Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5
Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости
Справочник от А до Я
HTML, CSS, JavaScript
Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы
Помогли мы вам |
Проблему обостряет то, что под угрозой оказались все наиболее актуальные версии приложения веток 7.х и 8.х, вплоть до 8.5.0. Сложно даже представить, сколько потенциально уязвимых целей доступно в данный момент злоумышленникам.
Уязвимость получила?идентификатор CVE-2018-7600 и высочайший статус опасности.
Разработчики выпустили патч еще 28 марта 2018 года, однако до 12 апреля в паблике не наблюдалось ссылок на работающий PoC или деталей проблемы. Стоит отдать разработчикам должное за патч, который был очень лаконичным и не давал?прямого ответа на вопрос, в каком месте стоит искать проблему.
Теперь, когда маски сброшены, давай посмотрим на уязвимость и сам эксплоит во всей красе.
Протестировать уязвимость несложно. Само приложение очень просто устанавливается, а кроме?того, у Drupal имеется официальный репозиторий на Docker Hub, и развернуть контейнер с нужной версией CMS можно буквально в пару команд.
Развернем сначала копию MySQL, хотя можно и без него, Drupal поддерживает работу с SQLite.
$ docker run -d -e MYSQL_USER="drupal" -e MYSQL_PASSWORD="Q0b6EFCVW4" -e MYSQL_DATABASE="drupal" --rm --name=mysql --hostname=mysql mysql/mysql-server
[/code]
Теперь сам контейнер с CMS. Я решил использовать последнюю уязвимую версию — 8.5.0.
$ docker run -d --rm -p80:80 -p9000:9000 --link=mysql --name=drupalvh --hostname=drupalvh drupal:8.5.0
[/code]
Дальше открываем в браузере адрес твоего?докера и переходим к установке.
Установка Drupal 8.5.0
Откидываемся на спинку кресла и ждем завершения инсталляции.
Процесс установки Drupal 8.5.0
Наслаждаемся готовым к исследованию приложением. Если хочешь возиться с отладкой, как я, то можно установить Xdebug. Делается это тоже?буквально парой команд.
$ pecl install xdebug
$ echo "zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so" > /usr/local/etc/php/conf.d/php-xdebug.ini
$ echo "xdebug.remote_enable=1" /usr/local/etc/php/conf.d/php-xdebug.ini
$ echo "xdebug.remote_host=192.168.99.1" /usr/local/etc/php/conf.d/php-xdebug.ini
[/code]
Не забудь поменять IP-адрес 192.168.99.1 на свой. Дальше перезагружаем конфиги Apache.
$ service apache2 reload
[/code]
В качестве отладчика я использую JetBrains PhpStorm.
Детали
Для начала обратимся к патчу, который исправляет уязвимость.
Коммит с патчем уязвимости Drupalgeddon 2
Здорово, не правда ли? Разработчики просто добавили фильтрацию всех отправляемых юзером?данных.
И все же кое-какой свет на уязвимость это исправление может пролить. Посмотрим на сам код процедуры, которая отвечает за проверку. Данные передаются в метод
sanitize
, который вызывает stripDangerousValues
.
Источник новости - google.com
|
|