Уязвимости в MyBB, позволяющие загрузить PHP-код на сервер
12 июня 2019 года
В движке для создания web-форумов MyBB выявлено несколько уязвимостей, позволяющих организовать многоступенчатую атаку для выполнения произвольного PHP-кода на сервере. Проблемы устранены в выпуске MyBB 1.8.21.
Первая уязвимость присутствует в модулях публикации и отправки приватных сообщений, и позволяет осуществить подстановку JavaScript-кода (XSS), который будет выполнен в браузере при просмотре публикации или полученного сообщения. Подстановка JavaScript возможна из-за некорректного преобразования в HTML вложенных BBCode. В частности, тег "[video]" преобразуются в iframe с передачей указанных в BBCode атрибутов. При этом "[video]" обрабатывается отдельно от остальных BBCode, что позволяет в имени видео использовать ещё один BBCode "[url]", который будет раскрыт после формирования iframe и из-за перекрытия двойных кавычек может подставить атрибут onLoad для подключения своего обработчика события.
Например, можно указать ссылку на видео в форме
[video=youtube]youtube.com/xyz[url]http://onload=evilCode()[/url][/video]
и она при обработке BBCode "[video]" будет преобразована в тег
<iframe src="youtube.com/xyz[url]http://onload=evilCode()[/url]"></iframe>
, а после обработки остальных BBCode в
<iframe src="youtube.com/xyz<a href="http://onload=evilCode()">.."></iframe>
Соответственно двойная кавычка в 'href="' закрывает атрибут "src" и onLoad обрабатывается в контексте iframe.
Вторая уязвимость позволяет при наличии прав администратора форума сохранить в файловую систему web-сервера PHP-скрипт и организовать его выполнение. Проблема присутствует в коде управления стилями для активной темы оформления, который позволяет генерировать новые CSS-файлы. Подобные файлы сохраняются с добавлением расширения ".css", но размер поля в БД с именем файла ограничен 30 символами. Соответственно можно назвать файл "26символов.php.css". При записи в БД будут отрезаны лишние символы и в конечном счёте сохранится имя "26символов.php". Далее через панель администратора форума можно сгенерировать новый стиль и файл будет записан в каталог "cache" с расширением php.
Для проведения атаки злоумышленник может направить администратору форума специально оформленное сообщение или опубликовать подобное сообщение форуме. При просмотре данного сообщения в браузере в рамках текущего сеанса в форуме и с правами просматривающего сообщение пользователя будет выполнен заданный атакующим JavaScript-код. Если сообщение просмотрел администратор, то для выполнения PHP-кода в контексте привилегированного сеанса эксплуатируется вторая уязвимость.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.