Уязвимости в MyBB, позволяющие захватить контроль над форумом

В движке для создания web-форумов MyBB выявлено несколько уязвимостей, позволяющих организовать многоступенчатую атаку для выполнения произвольного PHP-кода на сервере. Проблемы устранены в выпуске MyBB 1.8.21.

Первая уязвимость присутствует в модулях публикации и отправки приватных сообщений, и позволяет осуществить подстановку JavaScript-кода (XSS), который будет выполнен в браузере при просмотре публикации или полученного сообщения. Подстановка JavaScript возможна из-за некорректного преобразования в HTML вложенных BBCode. В частности, тег «

и она при обработке BBCode «» будет преобразована в тег

  ‹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-кода в контексте привилегированного сеанса эксплуатируется вторая уязвимость.

Источник: http://www.opennet.ru/opennews/art.shtml?num=50859