Следующая новость
Предыдущая новость

Атака на хостинг. Как я раскрутил эскалацию привилегий в Plesk

16.05.2019 13:22

Содержание статьи

  • Стенд
  • Анализ уязвимости
  • Повышаем привилегии
  • Демонстрация уязвимости (видео)
  • Выводы

Рут на shared-хостинге — не обязательно публичная уязвимость в ядре Linux. В этой статье будет разобрана уязвимость в популярной хостинг-панели Plesk, позволяющая повысить привилегии на хостинговом сервере и получить доступ ко всем соседям.

Чтобы предоставлять услуги хостинга сайтов, в наше время недостаточно веб-сервера и аккаунта на FTP. Существует несколько популярных панелей, которые позволяют без трудностей развернуть и поддерживать сайт даже неопытному пользователю. Там есть файловый менеджер, текстовый редактор, интерфейс для управления базами данных, выбор версии PHP и все, что может понадобиться пользователю хостинга.

Одна из таких панелей — Plesk. Эта панель используется хостинг-провайдерами по всему миру, включая таких гигантов, как GoDaddy. Взлом хостинга может обернуться серьезными последствиями — например, известен случай, когда злоумышленники взломали хостера, зашифровали все данные и требовали за них миллион долларов.

Уязвимость, о которой я хочу рассказать, — это чтение файлов с повышенными привилегиями с помощью атаки Rogue MySQL Server. Она в итоге обернулась эскалацией привилегий.

Стенд

Итак, самое время надеть белую шляпу и приступать к ресерчу. Основная часть Plesk написана на PHP. Plesk бывает под Windows Server и Linux, нас интересует последний. Для стенда проще всего использовать локальную виртуалку или VPS c Ubuntu 16.04 на борту. Для начала загружаем инсталлятор и даем права на исполнение.

$ wget 'http://installer.plesk.com/plesk-installer' $ chmod +x plesk-installer 

Помимо привычной тебе системы обновлений через версии, в Plesk имеется еще и такая вещь, как микроапдейты (Micro-Updates). Это, по сути, патчи к исходникам на PHP, при накатывании которых версия панели остается неизменной. Уязвимость, о которой мы поговорим, была устранена с помощью такого апдейта, поэтому инсталлер нужно запускать с флагом skip-patch, и тогда фикс, закрывающий уязвимость, не применится.

$ sudo ./plesk-installer --skip-patch 

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

Plesk имеет хороший CLI-API, которым мы и воспользуемся, чтобы не возиться с вебом. В лучших традициях Unix настроим все, не покидая терминала.

Для начала создадим пользователя с минимальными привилегиями и добавим ему домен.

$ PLSK_SITE_IP=$(sudo plesk bin ipmanage -l | grep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' | head -n 1) $ sudo plesk bin customer --create researcher -name "russian bear" -passwd "SamPle123!" -notify false $ sudo plesk bin subscription -c example.com -owner researcher -service-plan "Default Domain" -ip $PLSK_SITE_IP -login researcher -passwd "SamPle123!"  

Еще нам понадобится база данных. Создадим MySQL юзера и базу.

$ sudo plesk bin database --create testdb -domain example.com -type mysql $ sudo plesk bin database --create-dbuser testuser -passwd "SamPle123!" -domain example.com -server localhost:3306 -database testdb 

Тестовый стенд готов. Залогиниться в панель от созданного юзера researcher можно по адресу https://{YOUR_IP}:8443/. Полученный нами минимальный набор функций будет доступен на любом хостинге с Plesk.

Анализ уязвимости

Интерес представляют функции управления базами данных. Plesk имеет любопытную фичу, которая позволяет копировать базы данных не только локально, но и на внешние хосты. Именно здесь кроется уязвимость.

Продолжение доступно только подписчикам

Материалы из последних выпусков можно покупать отдельно только через два месяца после публикации. Чтобы продолжить чтение, необходимо купить подписку.

Подпишись на «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

1 год

7590 р.

Экономия 1400 рублей!

1 месяц

720 р.

25-30 статей в месяц

Уже подписан?

Источник

Последние новости