Тщательный vbulletin. Какой форум лучше vBulletin или PunBB. Продолжение доступно только участникам
Ты наверняка неоднократно видел форумы на движке 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!
- From:
- Registered: 2014.07.07
- Posts: 3,796
- I just like PunBB:
- 5 years, 7 months, 6 days,
- Likes: 470
Topic: Какой форум лучше vBulletin или PunBB
VBulletin (Вобла или Булка, как его любят у нас называть) – один из старейших коммерческих форумных движков, написанных при помощи технологий PHP и MySQL. Начиная с выхода самой первой версии в 2000 году, была проделана колоссальная работа по улучшению функционала, что позволило VB попасть в список лучших программных продуктов.
Лицензия VBulletin будет стоить вам порядка 250 долларов. Не сомневайтесь, это вполне оправданная трата и уж точно окупит себя экономией рабочего времени и нервных клеток. Большая часть из этих денег идет разработчикам и программистам, которые в дальнейшем пустят их на доработку функционала и выпуск заплаток и дополнений (да, в течение года все обновления будут поставляться вам бесплатно).
2 Reply by PunBB
- From: Moscow, Sovkhoznay 3, apt. 98
- Registered: 2014.07.07
- Posts: 3,796
- I just like PunBB:
- 5 years, 7 months, 6 days,
- Likes: 470
Перечислением всех функций VBulletin заниматься не имеет смысла. Там реализовали практически все, что может понадобиться администраторам форума. Подкастинг, поддержка мультицитирования, разделение на социальные группы и сообщества, рейтинговая система (репутация). Базовую комплектацию можно дополнить сторонними расширениями.
Движок форума VBulletin создает серьезную нагрузку на сервер, особенно если установлены сторонние дополнения и скрипты. Чтобы в дальнейшем избежать проблем с загрузкой страниц, придется раскошелиться на нормальный хостинг. Особенно если в будущем прогнозируете своему ресурсу большую посещаемость.
3 Reply by PunBB
- From: Moscow, Sovkhoznay 3, apt. 98
- Registered: 2014.07.07
- Posts: 3,796
- I just like PunBB:
- 5 years, 7 months, 6 days,
- Likes: 470
Re: Какой форум лучше vBulletin или PunBB
VBulletin, из-за его чрезвычайной устойчивости к взлому и спам-ботам, рекомендован для использования в крупных серьезных проектах. Кроме того, стандартные настройки и конфигурационные файлы можно легко изменить на свой лад, добившись еще большего эффекта. В интернете есть множество инструкций и гайдов от народных умельцев, правда не каждому из них стоит доверять.
VBulletin, реализует масштабные идеи как нельзя лучше. Постоянные обновления, высококачественный сервис, дополнительные расширения и надежные механизмы безопасности – все это вполне оправдывает потраченные на продукт средства.
4 Reply by PunBB
- From: Moscow, Sovkhoznay 3, apt. 98
- Registered: 2014.07.07
- Posts: 3,796
- I just like PunBB:
- 5 years, 7 months, 6 days,
- Likes: 470
Re: Какой форум лучше vBulletin или PunBB
Все функции перечислять нет смысла – в нем (или же в дополнениях) реализовано практически все, что может понадобиться администратору для создания форума. Там есть и мультицитирование, и поддержка подкастинга, и сообщества пользователей, и социальные группы, и гибкая система репутации и многое другое.
Конечно, для vBulletin есть большое количество дополнений и пользовательских сообществ, так что никаких проблем с обслуживанием не будет, особенно с учетом того, что существует официальная служба поддержки. Минусом vBulletin, пусть и не очень большим, является платность дополнений, например, для пользовательских блогов.
По большому счету, недостатков у форума нет. Его можно рекомендовать для крупных серьезных проектов именно из-за его надежности и устойчивости ко всевозможным атакам. Как следствие, он создает существенную нагрузку на сервер, особенно с установленными дополнениями, но для серьезных проектов обычно используют серьезные сервера и серьезных администраторов.
Основные преимущества:
- Быстрая и эффективная основа на базе данных
- Интерфейс, состоящий из шаблонов
- Мощная поисковая система
- Многоязыковая поддержка
- Профили пользователей
- Мощная и удобная панель администратора
- Неограниченное количество разделов/тем/сообщений
- Уведомления по 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 Connect v5.3.3 - мощный, масштабируемый и полностью настраиваемый пакет форумов для вашего сайта.
Версия: 5.3.3 (Nulled by vBSupport.org)
Минимальные требования php 5.6
Совместимость с php 7.1
При новой установке необходимо переименовать файл htaccess.txt в.htaccess
При обновлении удалить папку fonts (до запуска обновления).
Новые возможности:
Новый UI с обширной социальной интеграцией;
Оптимизирован под мобильные устройства;
Упрощена установка, управление и настройка;
Новая архитектура базы данных для улучшения поиска и лучшей производительности;
Удобное динамическое изменение контента;
Расширенная для обмена видео и изображениями;
Полная интеграция с VigLink;
Больше чем 100 других новых функций и улучшений;
Встроенные приложения:
Дискуссионный форум
Группы
Опросы
Блог
Оптимизация поисковой системы:
SEO дружественные URL
Пользовательский тег ключевых слов/описания META
Гибкость:
Расширяемые профили пользователей
Перезапись URL
Интерфейсная локализация
Метаданные
Соответствие стандартов:
Объединение в синдикаты содержания (RSS)
Объединение в синдикаты содержания: RSS, Atom, XML
PHP v5.4 совместимый
Без разрывный интегрированная система:
Единственный задействованный вход в систему
Единственная система разрешения
Единственная администраторская панель управления
Создайте непрерывный Стиль/тему через Статьи, Блоги, Форум
Панели управления для каждой роли:
Администраторские средства управления
Панель управления модератора
Пользовательская панель управления
Объединенная система разрешения
Движок шаблонов питания для усовершенствованной настройки
Управление пользователя:
Многопользовательская система с неограниченными ролями и полномочиями
Задействованные группы
Безопасность
Гранулированные полномочия
Проблемное уведомление
Совместимый SSL
Captcha
Подтверждение адреса электронной почты
Администраторский редактор новостей панели управления
Система "забастовки" входа в систему
Электронная почта и изменения Пароля требуют текущего пароля
Совместимый с Children"s Online Privacy Protection Act (COPPA) 1998
1. Зайдите в панель управления администратора:
Languages & Phrases - Download / Upload Languages.
2. В поле "EITHER upload the XML file from your computer" введите путь к
файлу vbulletin-language_ru.xml на Вашем компьютере.
3. В параметре "Overwrite Language" выберите пункт "Create New Language"
4. В поле "Title for Uploaded Language" введите название языка.
При отсутствии введённых данных язык будет называться "Russian (RU)"
5. Установите "Yes" в параметре "Ignore Language Version"
6. Установите "Yes" в параметре "Read Charset from XML File"
7. Нажмите на кнопку "Import" и ждите завершения процесса загрузки.
7А При желании, Вы можете сделать новый язык языком "По умолчанию",
нажав возле него кнопку "Default" / "Значение по умолчанию".