Просторные punbb. Установка и расширения PunBB

Недавно в PunBB был найден ряд уязвимостей - PHP-инклюдинг и SQL-инъекция.
Уязвимость позволяет удаленному пользователю выполнить произвольные SQL
команды в базе данных приложения. Удаленный авторизованный пользователь может
выполнить произвольный PHP сценарий на целевой системе. Уязвимость существует из-за недостаточной обработки входных данных в сценарии
"profile.php". При включенной опции "register_globals", удаленный
пользователь может выполнить произвольные SQL команды в базе данных
приложения. Существует уязвимость при обработке pun_include тегов. Удаленный пользователь
может загрузить и выполнить произвольный PHP сценарий на целевой системе.

Разработчики форумов не перестают радовать простых обывателей новыми версиями
своих продуктов, а обыватели в свою очередь ресурсами серверов простых
скрипткидди. Буквально на днях было открыто 2 новых критических бага в
популярном форуме punbb человеком по имени Stefan Esser .
И сейчас я постараюсь объяснить как это всё работает.

Для начала надо поднять права до администратора с помощью sql-injection.
Открываем в браузере страницу

http://site.ru/punbb/profile.php?id=*

сохраняем её на винт, изменяем через блокнот строчку:

Т.е. изменяем url на абсолютный путь и добавляем
temp=group_id=1. Из кода файла profile.php видно, что массив $temp не проверяется:

while (list($key, $input) = @each($form))
{
$value = ($input !== "") ? "\"".$db->escape($input)."\"" : "NULL";
$temp = $key."=".$value;
print "".$key."\n".$value."\n
";
}
$db->query("UPDATE ".$db->prefix."users SET ".implode(",", $temp)." WHERE
id=".$id) or error("Unable to update profile", __FILE__, __LINE__,
$db->error());

Открываем в браузере сохраненный html файл
и нажимаем submit, в итоге мы изменяем значение колонки group_id в таблице users и становимся
администратором. Далее будем использовать вторую багу
- php-injection.

Эта бага кроется в файле include/function.php

// START SUBST -
while (preg_match("", $tpl_maint, $cur_include))
{
ob_start();
include PUN_ROOT.$cur_include;
$tpl_temp = ob_get_contents();
$tpl_maint = str_replace("<".$cur_include.">", $tpl_temp, $tpl_maint);
ob_end_clean();
}
// END SUBST -

Скрипт ищет тег Для загрузки скриптов, но т.к. в строчке
include PUN_ROOT.$cur_include; имеется переменная PUN_ROOT, то можно подключать только локальные файлы. Для
этого мы создаем рисунок с комментарием в
виде php кода и загружаем как аватар. Далее редактируем, например, описание форума через админку, т.е. добавляем:

Открываем главную страницу форума и вуаля
- скрипт инклудит картинку и исполняет код
из комментария.

PunBB – бесплатная CMS для форума, основным отличием которой является встроенные возможности для внутренней SEO-оптимизации, отсутствующие даже в ряде платных форумных движков.

Примеры форумов на PunBB можно найти, введя в поисковую строку Яндекса или Google, запросы Powered by PunBB или Форум работает на PunBB . Скачать PunBB можно с официального сайта http://punbb.informer.com/, там же можно расширения punbb, темы и шаблоны.

Установка PunBB: как установить форум

Установка PunBB очень простая, так что справиться с ней сможет даже малоопытный web-мастер.

  1. Скачайте архив с установочными файлами с официального сайта, распакуйте его и загрузите на свой хостинг.

Для этого вы можете использовать любой FTP-менеджер, например, FileZilla.

Если вам требуется русификация PunBB, скачайте с официального сайта архив с файлами русскоязычной локализации и скопируйте папку Russian в директорию lang.

  1. Откройте в браузере ссылку http://mydomain/myforums/install.php и следуйте инструкциям установщика.

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

В предпоследнем окне введите логин, пароль и электронную почту администратора.

В настройках форума выберете русский язык.

  1. Установка закончена. Вы можете войти на свой форум, используя логин и пароль администратора.

Настройки PunBB: SEO-оптимизация форума

Перейдите в пункт управление Администрирование, где вы сможете добавить новые категории и форумы, а также задать основные настройки.

Для лучшего ранжирования форума перейдите в пункты Администрирование – Управление – Настройки и выберет URL-схему File-based (fancy). Это позволит настроить в PunBB ЧПУ-url, что благотворно скажется на продвижении в дальнейшем.

В первоначальном виде PunBB имеет очень малый функционал, который легко расширить, используя плагины. Установить на PunBB расширения очень просто: необходимо просто скопировать их в директорию Extensions, а затем активировать их в разделе «Расширения» админ-панели.

Официальные расширения PunBB можно скачать по ссылке https://github.com/punbb/extensions.

Список официальных расширений приведен ниже:

  • pun_admin_add_user (добавление пользователей через специальную форму)
  • pun_admin_clear_cache (очищение кэша форума) pun_admin_manage_extensions_improved (работа с расширениями)
  • pun_approval (одобрение всех новых пользователей и сообщений)
  • pun_attachment (прикрепление к сообщениям файлов)
  • pun_bbcode (BB-коды)
  • pun_colored_usergroups (различные цвета для каждой группы пользователей)
  • pun_forum_news (использование топиков и сообщений в качестве новостей)
  • pun_jquery (библиотека jQuery lib)
  • pun_move_posts (перенос сообщения из одного топика в другой)
  • pun_pm (личные сообщения)
  • pun_poll (голосования)
  • pun_stop_bots (несколько вопросов при регистрации для предотвращения появления на форуме ботов
  • pun_tags (теги)
  • pun_repository (получение расширений непосредственно из репозитория)

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

PunBB – незаслуженно малоизвестный бесплатный движок, имеющий весь функционал, необходимый для создания, раскрутки и дальнейшего развития форума. Несмотря на то, что данная CMS не сравнится по своей популярности с SMF или Phpbb, по своей функциональности punBB вполне сравним с ними, а во многом и превосходит эти аналоги.

Преимущества PunBB

PunBB не требователен к хостингу и прекрасно подходит даже для особо крупных сообществ с десятками тысяч пользователей. К примеру, работающий на PunBB официальный форум браузера Mozilla включает на сегодня почти 600 тысяч сообщений. Используя запросы Powered by PunBB или Форум работает на PunBB , можно найти и более крупные коммьюнити с количеством сообщений, стремящимся к миллиону.

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

PunBB довольно прост в управлении: все основные настройки форума умещаются на двух страницах с названиями «Установка» и «Свойства» в разделе «Администрирование». После того, как вы создадите необходимые категории и форумы и настроите права пользователей, вам даже не придется заходить в админ-панель.

Стандартный шаблон на div-ах отличается легкостью и чистотой HTML-кода.

Расширение функционала PunBB осуществляется при помощи расширений, использующих для своей работы хуки (hooks) – специальные «ловушки», позволяющие внедрить дополнительный код в файл движка. Такая технология позволяет полностью отказаться от модов – добавления в CMS форума новых опций за счет изменений его файлов, что избавит от необходимости править файлы каждый раз после обновления движка.

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

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

В целом, CMS PunBB позволяет создать неплохой форум, имеющий все необходимые функции для организации общения. Вы можете настроить права групп пользователей так, что гости получает возможность оставлять сообщения и создавать темы без регистрации – идеальное решение для форума, ориентированного на консультации посетителей.

SEO-оптимизация форума на PunBB

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

Для создания sitemap.xml и добавления на форум мета тегов необходимо установить на форум соответствующие расширения.

Недостатки форума PunBB

К недостаткам PunBB можно отнести то, что без установки многих расширений функционал форума будет очень маленьким. На CMS «из коробки», без установки официальных плагинов отсутствует даже возможность отправки личных сообщений, нет возможности переноса сообщений из одной темы в другую, а также опции для добавления в тему опроса.

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

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

Пользователи могут добавлять картинки, загружая их на сторонние фотохостинги и затем вставляя их адреса в тег [\img]. Однако это приводит к тому, что, во-первых, пользователи должны совершать лишние телодвижения, чтобы загрузить картинку, а во-вторых, к хранению изображений на стороннем хостинге. В-третьих, если фотохостинг, которым вы пользуетесь, прекратит свою работу, вместе с ним канут в Лету и все хранящиеся у вас изображения. И наконец, в-четвертых, если владельцу сервера не понравится, что вы выводите у себя на форуме изображения с его сайта, он может запросто разместить на ее месте файл с тем же названием, но совершенно иным содержимым, в результате чего вместо качественного фото на форуме будет отображаться нечто очень неприличное.

Есть у движка немало недостатков, касающихся и SEO-оптимизации, одним из гланвых среди которых является очень странное формирование ссылки на отдельное сообщение. Так, если тема имеет адрес forum/bla-bla-bla.html, линк на отдельный пост будет не forum/bla-bla-bla.html#1, а forum/post29573.html#p29573.

Или при отключенном ЧПУ:

Forum/viewtopic.php?id=131 и
forum/viewtopic.php?pid=254#p254

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

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

Во многом имеющиеся недостатки PunBB связаны с малой распространенностью движка, в результате чего в коммьюнити движка включает всего несколько разработчиков. И если простые расширения, необходимые большинству пользователей, еще можно найти, то для более глобальные моды и плагины вам придется заказывать на платной основе.