Наблюдения за vBulletin или попытки кэширования динамического контента. Наблюдения за vBulletin или попытки кэширования динамического контента Безупречный vbulletin

  • 20.03.2024

Ты наверняка неоднократно видел форумы на движке vBulletin. Форумы как таковые уже не на пике моды, но vBulletin по-прежнему один из самых популярных движков. В его последней (пятой) версии нашли несколько уязвимостей, которые способны сильно испортить жизнь админу. В этой статье я расскажу, как они эксплуатируются.

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

Вторая уязвимость была найдена исследователями из компании TRUEL IT и получила идентификатор CVE-2017-17672. Она связана с особенностями десериализации данных в движке и может быть использована атакующим для удаления произвольных файлов в системе.

Полные отчеты с деталями обеих проблем были опубликованы в рамках программы Beyond Security от SecuriTeam. Там же есть PoC-эксплоиты для демонстрации уязвимостей. Давай по порядку пройдемся по всему этому.

Приготовления

В качестве сервера я использовал дистрибутив WAMP.

Читаем файлы, выполняем команды

Итак, причина первой уязвимости - некорректная логика при обработке параметра routestring, которая позволяет атакующему добавить через include любой файл на диске и выполнить PHP-код, который в нем находится.

Наш путь начинается с самого главного файла - index.php, где происходит базовая инициализация приложения.

/index.php
48: $app = vB5_Frontend_Application::init("config.php"); ... 60: $routing = $app->getRouter(); 61: $method = $routing->getAction(); 62: $template = $routing->getTemplate(); 63: $class = $routing->getControllerClass();

Посмотрим на метод vB5_Frontend_Application::init .

/includes/vb5/frontend/application.php
13: class vB5_Frontend_Application extends vB5_ApplicationAbstract 14: { 15: public static function init($configFile) 16: { 17: parent::init($configFile); 18: 19: self::$instance = new vB5_Frontend_Application(); 20: self::$instance->router = new vB5_Frontend_Routing(); 21: self::$instance->router->setRoutes();

Здесь нас интересует метод setRoutes .

47: public function setRoutes() 48: { 49: $this->processQueryString(); ... 54: if (isset($_GET["routestring"])) 55: { 56: $path = $_GET["routestring"];

В переменную $path попадает значение юзердаты из параметра routestring . В него можно передать путь до страницы форума, и она будет загружена.



Допустим, мы передали /test .

После назначения переменной следует кусок кода, который избавляется от слеша в начале строки, если он присутствует.

/includes/vb5/frontend/routing.php
75: if (strlen($path) AND $path{0} == "/") 76: { 77: $path = substr($path, 1); // $path = "test" 78: }
includes\vb5\frontend\routing.php
83: if (strlen($path) > 2) 84: { 85: $ext = strtolower(substr($path, -4)) ; 86: if (($ext == ".gif") OR ($ext == ".png") OR ($ext == ".jpg") OR ($ext == ".css") 87: OR (strtolower(substr($path, -3)) == ".js")) 88: { 89: header("HTTP/1.0 404 Not Found"); 90: die(""); 91: } 92: }

Как видишь, проверка довольно странная. Как минимум смущает наличие зашитого прямо в код списка запрещенных расширений. Да и вообще сам факт, что расширение получают, вырезая четыре символа с конца строки (строка 85), вызывает недоумение. В общем, если мы пытаемся получить файл с расширениями gif, png, jsp, css или js, то сервер вернет страницу 404 и выполнение скрипта прекратится. Когда все проверки пройдены, с помощью callApi вызывается метод getRoute из класса vB_Api_Route . Он ищет подходящие роуты, исходя из переданной пользователем информации.

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

Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!

Давно хотел написать об этом, да все руки не доходили, а тут как раз выдалась минутка опубликовать небольшую заметку по теме. Так почему же не опубликовать список того, на что пользователь смотреть в первую очередь перед выбором хостинга. Особенно для нас, тех кто пользуется vbulletin. Назовем это все просто - рекомендации. Понятное дело, что профессионалам и так все понятно, тут как бы объяснять нечего. А вот новичкам стоит все таки растасовать. Так как вижу нездоровую тенденцию, админ Vbulletin 4, хочет чтобы его форум работал на шаред хостинге за 5$ и все летало. такого не когда не будет!

Все мы знаем основы, но когда я искал свой хост когда-то я тоже совершал некоторые ошибки, вот и разберем некоторые.

Является ли компания оверселлером?

Господа, я вас умоляю, не пользуйтесь хостингом который перепродают (оверселлер). Скорее всего вам выделят кусок большого «гумна» с которым вы намучаетесь на долго. Но как нам определить, что хостинг перепродается через 50 руки? Тут секретов нет, вам предложат 500 или 1500ГБ места (тут я утрирую конечно но ненамного) и пропускную способность 100 ТБ и всего то за 5 баксов. Не слишком ли хорошо? Но это все бред сивой кобылы, на самом деле вам не нужно больше 2-10 ГБ дискового пространства, уж поверьте. А пропускной способности 50- 200 гб вам за уши, тем более на первых парах.

Является ли компания реселлером?

Тут тоже надо быть очень внимательным. Большинство реселлеров являются фирмами однодневками. Они берут деньги, поработают немного и все, вы их больше не увидите. Все ваши файлы и наработки пропадут! Но нам же это не надо, не правда ли? И даже если вам понравились цена на хостинг данных фирм, обязательно проверьте, как долго та или иная компания в бизнесе.

Предельный размер базы данных!

Это очень важный пункт, если вы планируете перенести ваш работоспособный vbulletin. Я осмотрелся в предложениях различных хостеров большинство предлагают 100мб. На первое время этого конечно вам будет достаточно, но как только ваш форум будет расти, вам этого будет мало и вы вынуждены будете перейти на VPS или выделенный сервер.

Количество одновременных подключений к базе данных.

О, да это 100% важная вещь. Это очень важно, тем более если вы работаете с Vbulletin. Так как со временем одновременное подключение только растет. Большинство компаний шаред хостинга предлагает 10-250, все зависит от хостинга. Просто позвоните в тех поддержку и спросите у них об этом. Но, не все шаред хостинги имеют эту информацию, или поделятся с вами.

Отзывы! Хорошо это или плохо?

Тех поддержка.

На большинстве хостингах есть круглосуточная тех поддержка, которая работает 24/7, через электронную почту, тикеты, icq, skype или еще каким либо способом. Но как долго они будут вам помогать? Иногда это играет решающую роль.

Вызовите тех поддержку и посмотрите как долго вы будете ждать ответа, особенно ночью или в 5-6 утра. И проверьте несколько вариантов и телефон и тикеты. Задайте простые вопросы на которые вы и так знаете ответы, нам нужно вычислить время их ответа. Получили! Отлично, посмотрите сколько вы ждали ответа на легкий вопрос, и прикиньте сколько вам будут отвечать на сложную ситуацию.

Большая известная компания или новая неизвестная?

В принципе тут выбор стоит только перед вами, чем старше компания и солиднее, цены у не будут немного выше, чем у только что созданных. Лично я выбираю компанию которая себя уже как-то зарекомендовала. Хотите знать почему? Все просто, представьте только себе, что вы в одночасье можете потерять множество полезных файлов и базу данных. То же самое про политику конфиденциальности, не всегда можно быть уверенным, что она соблюдается. Ваши данные могут быть скопированы и созданны сайты клоны. Этот список можно продолжать и продолжать. Ну вы меня поняли 🙂

Основные преимущества:

  • Быстрая и эффективная основа на базе данных
  • Интерфейс, состоящий из шаблонов
  • Мощная поисковая система
  • Многоязыковая поддержка
  • Профили пользователей
  • Мощная и удобная панель администратора
  • Неограниченное количество разделов/тем/сообщений
  • Уведомления по email
  • Поддержка COPPA

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

Для инсталляции vBulletin, переходим в панель управления хостингом (кнопка с шестерёнкой напротив заказа хостинга в биллинге), там в "Менеджер файлов", в нём переходим в директорию "www". Нажимаем кнопку "Закачать файл в текущую директорию":

Указываем путь к файлу на своём компьютере:

Выделяем архив с vBulletin, распаковываем его:

Удаляем ненужные нам файлы и директории, в том числе директорию нашего www домена - при условии что там у вас ничего нужного нет. Если вы ставите не в корень сайта, или в директории сайта есть что-то нужное - удалять директорию www домена не надо:

Выделяем директорию с инсталлятором vBulletin, переименовываем её:

Вводим имя нашего сайта, в качестве имени директории:

Переходим в раздел "Базы данных", панели управления хостингом:

Создаём новую базу данных MySQL, и пользователя, с полными правами доступа к ней:

Обратите внимание, что и пользователь и база автоматически получили преффикс, по имени вашего аккаунта на хостинг-сервере:

Заходим на главную страницу нашего сайта, получаем такую ошибку vBulletin:

Вбиваем путь к инсталлятору в адресной строке, надо дописать "install/install.php", после чего запускется программа установки форума vBulletin:

Установщик vBulletin проверяет наличие файлов:

На следующем шаге присходит проверка соединения с базой данных, она не проходит - т.к. в файле конфигурации форума вбиты неверные данные:

Возвращаемся в панель управления хостингом, файловый менеджер, заходим в директорию с форумом, дальше субдиректория "includes". Открываем файл "config.php":

Вносим верные данные от БД в конфигурационный файл, после чего его закрываем:

Возвращаемся на сайт, к инсталлятору. нажимаем "F5", на этот раз всё хорошо, соединение с базой срослось:

Программа установки vBulletin создаёт таблицы в базе данных:

Инсталлятор vBulletin меняет типы некоторых таблиц:

Вносятся данные в базу данных:

Имортируются языки:

Импортируются стили:

Импортируется справка:

Настройки по умолчанию не трогаем, программа установки vBulletin всё верно определила:

Импортируются настройки по умолчанию:

Вводим данные администратора vBulletin:

Администратор vBulletin успешно добавлен:

Установка vBulletin на хостинг успешно завершена:

Следуя последнему совету инсталлятора, удаляем ненужные файлы:

Можно зайти на форум vBulletin, убедиться что всё работает корректно:

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

Движок создаёт высокую нагрузку на сервер, особенно после установки дополнений и сторонних скриптов. Поэтому для нормальной работы придётся покупать нормальный хостинг — забудьте про бесплатные предложения и младшие тарифы за копейки, на которых тормозит даже сайт-визитка. Чем выше будет посещаемость, тем больше нагрузка на сервер, так что надо брать пропускную способность с запасом. Желательно — неограниченную.

Экономить на хостинге нельзя ещё и потому, что Vbulletin предназначен для создания крупных проектов. Движок устойчив к взлому и спам-атакам, поэтому посетители могут чувствовать себя в безопасности. Модератор понадобится, но не для очистки веток от рекламных постов, а для управления дискуссиями.

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

В конструкторе можно добавить страницу, перенести на неё элементы, а затем добавить ссылку на страницу в главное меню сайта. Всё это делается так же просто, как в визуальном конструкторе. Но для глобальной кастомизации интерфейса потребуются навыки программирования, которые можно применить в панели администратора.

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

Дизайн

На официальном сайте движка можно скачать темы для базового дизайна. Они легко устанавливаются на сайт и могут быть изменены в соответствии с пожеланиями веб-мастера. Для управления стилями в административной панели есть раздел Advertising. В нём можно:

  • Изменить или добавить фон сайта.
  • Добавить изображение вместо фона.
  • Отредактировать файл стиля.

Базовые изменения можно выполнить через конструктор. Например, чтобы изменить лого, нужно открыть вкладку Header и загрузить подходящий файл. На вкладке Navigation Bar можно управлять главным меню сайта: добавлять и удалять ссылки на другие страницы, менять порядок их расположения, назначать имена.

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

Поисковая оптимизация (SEO)

На CMS vBulletin нет специального модуля для проведения поисковой оптимизации. Однако это не значит, что над форумом не нужно работать. К сайтам применимы требования об обязательном наличии тега H1, по которому роботу определяют тему страницы. Для настройки индексации нужно редактировать файл robots.txt - советы по его правильному оформлению можно найти на форумах, посвящённых сайтам на vBulletin.

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

Для добавления новых возможностей доступны плагины SEO. Самый известный - VBSEO. С его помощью можно оптимизировать форум под требования поисковых систем: настроить редиректы, убрать дубли, исключить из индексации отдельные страницы. Главный недостаток - VBSEO создаёт дополнительную нагрузку на сервер, которая у CMS и так немаленькая.

Тарифы

Пожизненная лицензия с обновлениями на год обойдётся в 250 долларов. За эти деньги доступны все возможности движка:

  • Встроенные приложения: форум, группы, опросы, блог.
  • Инструменты поисковой оптимизации.
  • Профессиональная поддержка.
  • Гибкие настройки интерфейса.
  • Контрольные панели для всех участников: администратора, модератора, пользователя.
  • Инструменты управления пользователями.

250 долларов — не окончательная цена. За эти деньги вы приобретаете только право пожизненного использования движка.

  • Чтобы продолжить получать обновления, необходимо каждый год платить 209 долларов. Разработчики предлагают также платные аддоны:
  • Удаление брендинга в нижнем колонтитуле на всём сайте — разовая оплата 169 долларов.
  • Дополнительная поддержка по телефону или тикетам — 49 долларов в месяц или 329 долларов в год.
  • Профессиональная установка или обновление движка — разовая оплата 149 долларов.

Если вы хотите, чтобы форум хорошо выглядел на небольших экранах, можно купить «Мобильный пакет». Лицензия обойдётся в 399 долларов, а продление обновлений — 359 долларов ежегодно. Отдельно мобильная версия стоит 199 долларов. Без неё форумом нормально можно пользоваться только на компьютере.

При выборе vBulletin Cloud доступно три тарифа: Bronze, Silver и Gold. Все они предлагают:

  • Автоматическое обновление до актуальной версии системы.
  • Использование серверов, оптимизированных под vBulletin.
  • Изменение доступного объёма на диске в соответствии с вашими потребностями.
  • Автоматическое создание резервных копий.

Минимальный тариф обойдётся в 19,95 долларов в месяц (14,99 долларов при оплате за год). Он предлагает пропускную способность 25 Гб, бесплатную поддержку и домен в подарок. Это отличное решение для небольших форумов с невысоким трафиком.

Silver стоит уже 39,95 долларов в месяц (29,99 долларов при оплате за год) и даёт 75 Гб пропускной способности, а также поддержку через систему тикетов. Этот тариф подходит для растущих сообществ со средним трафиком.

Максимальный тариф - Gold за 74,95 долларов в месяц (59,99 долларов при оплате за год). Пропускная способность 200 Гб, бесплатная поддержка по телефону. Оптимальное решение для крупных форумов.

Достоинства и недостатки

VBulletin работает очень давно, поэтому у него развитое сообщество пользователей, подробная документация и много сопутствующих материалов: тем, шаблонов, расширений. Среди других достоинств отметим:

  • Большое количество тем оформления.
  • Возможность расширения функциональности путём установки плагинов и модулей, которых уже больше 1000.
  • Простые инструменты для создания контента и управления сайтом.
  • Упрощённая настройка дизайна.
  • Быстрая публикация пользователями фото и видео.
  • Оптимизация под мобильные устройства при покупке соответствующего пакета.

Если вы до этого использовали другой форумный движок, то долго будете привыкать к административной панели VBulletin. Она не плохая — просто необычная и в некоторых моментах неудобная.

VBulletin всегда отличался высокой нагрузкой на сервер, особенно при установке нескольких расширений. Это нужно учитывать при выборе хостинга и закладывать в бюджет, чтобы купить тариф с большей мощностью. Расходы получаются очень высокие, а сэкономить точно не получится — это чревато тем, что форум будет «падать» при наплыве посетителей.

После смены команды разработчиков много вопросов возникает и к безопасности движка. Самой стабильной версией остаётся 3.8. Четвёртая и пятая версии постоянно получают обновления безопасности, которые говорят о том, что разработчики латают дыры уже после выпуска продукта.