Хладнокръвен бюлетин. Кой форум е по-добър vBulletin или PunBB

Сигурно сте виждали форуми на двигателя vBulletin повече от веднъж. Форумите като такива вече не са на върха на модата, но vBulletin все още е един от най-популярните двигатели. В последната му (пета) версия бяха открити няколко уязвимости, които могат значително да съсипят живота на администратор. В тази статия ще ви покажа как работят.

Първият проблем е неправилното филтриране на потребителски данни. Това беше съобщено от независим изследовател по сигурността, който пожела да остане анонимен. Уязвимостта, въпреки че има някои ограничения, получи статут на критична, тъй като позволява четене на всякакви файлове и изпълнение на произволен код в целевата система.

Втората уязвимост беше открита от изследователи от TRUEL IT и получи идентификатора CVE-2017-17672. Свързан е с особеностите на десериализацията на данните в двигателя и може да се използва от нападател за изтриване на произволни файлове в системата.

Пълни доклади, описващи и двата проблема, са публикувани като част от програмата Beyond Security на SecuriTeam. Има и PoC експлойти за демонстриране на уязвимости. Нека преминем през всичко това по ред.

препарати

Използвах WAMP дистрибуцията като сървър.

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

Така че причината за първата уязвимост е неправилна логика при обработката на параметъра routesstring, което позволява на атакуващия да добави всеки файл на диска чрез включване и да изпълни 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: клас vB5_Frontend_Application разширява vB5_ApplicationAbstract 14: ( 15: публична статична функция init($configFile) 16: ( 17: parent::init($configFile); 18: 19: self::$instance_Fli = new vB5_2); self::$instance->router = new vB5_Frontend_Routing(); 21: self::$instance->router->setRoutes();

Тук се интересуваме от метода setRoutes.

47: публична функция 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) И $path(0) == "/") 76: ( 77: $path = substr($path, 1); // $path = "test" 78: )
включва\vb5\frontend\routing.php
83: if (strlen($path) > 2) 84: ( 85: $ext = strtolower(substr($path, -4)) ; 86: if (($ext == ".gif") ИЛИ ($ext == ".png") ИЛИ ($ext == ".jpg") ИЛИ ($ext == ".css") 87: ИЛИ (strtolower(substr($path, -3)) == ".js" )) 88: ( 89: заглавие("HTTP/1.0 404 не е намерено"); 90: умре(""); 91: ) 92: )

Както виждате, проверката е доста странна. Най-малкото, наличието на списък със забранени разширения, зашити директно в кода, е объркващо. И като цяло самият факт, че разширението се получава чрез изрязване на четири знака от края на реда (ред 85) е озадачаващ. Като цяло, ако се опитаме да получим gif, png, jsp, css или js файл, сървърът ще върне страница 404 и скриптът ще спре да се изпълнява. Когато всички проверки са преминати, методът getRoute от класа vB_Api_Route се извиква чрез callApi. Той търси подходящи маршрути въз основа на информацията, предоставена от потребителя.

Продължава достъпно само за членове

Вариант 1. Присъединете се към общността на "сайта", за да прочетете всички материали на сайта

Членството в общността през посочения период ще ви даде достъп до ВСИЧКИ хакерски материали, ще увеличи вашата лична кумулативна отстъпка и ще ви позволи да натрупате професионален рейтинг на Xakep Score!

Само за информационни цели. Администрацията не носи отговорност за съдържанието му. Безплатно сваляне .


vBulletin Connect v5.3.3 е мощен, мащабируем и напълно адаптивен форум пакет за вашия уебсайт.

версия: 5.3.3 (Анулиран от vBSupport.org)

Минимални изисквания php 5.6
Съвместимост с php 7.1
При нова инсталация трябва да преименувате файла htaccess.txt на .htaccess
Когато актуализирате, изтрийте папката с шрифтове (преди да започнете актуализацията).

Нови възможности:
Нов потребителски интерфейс с широка социална интеграция;
Оптимизиран за мобилни устройства;
Опростена инсталация, управление и конфигурация;
Нова архитектура на базата данни за подобрено търсене и по-добра производителност;
Удобна динамична промяна на съдържанието;
Разширено за споделяне на видео и изображения;
Пълна интеграция с VigLink;
Повече от 100 други нови функции и подобрения;

Вградени приложения:
Дискусионен форум
Групи
Анкети
Блог

Оптимизация за търсачки:
Удобни за SEO URL адреси
Персонализирана ключова дума/описание МЕТА маркер

гъвкавост:
Разширяеми потребителски профили
Пренаписване на URL адрес
Локализация на интерфейса
метаданни

Стандарти за съответствие:
Синдикирано съдържание (RSS)
Синдикация на съдържание: RSS, Atom, XML
Съвместим с PHP v5.4

Нечуплива интегрирана система:
Включено е еднократно влизане
Единствената система за разрешения
Единственият административен контролен панел
Създайте непрекъснат стил/тема чрез статии, блогове, форум

Контролни панели за всяка роля:
Административен контрол
Контролен панел на модератора
Потребителски контролен панел
Съвместна разрешителна система
Мощност шаблонен двигател за разширено персонализиране

Потребителски контрол:
Многопотребителска система с неограничени роли и правомощия
Групи, участващи
Сигурност
Гранулирани сили
Известие за проблем
Съвместим SSL
Captcha
Потвърждение на имейла
Редактор на новини на администраторския контролен панел
Влезте в системата "strike".
Промените на имейл и парола изискват текуща парола
Съвместим със Закона за защита на поверителността на децата онлайн (COPPA) от 1998 г

1. Отидете на администраторския контролен панел:
Езици и фрази - Изтегляне / Качване на езици.
2. В полето „ИЛИ качете XML файла от вашия компютър“ въведете пътя до
vbulletin-language_ru.xml файл на вашия компютър.
3. В опцията „Презаписване на език“ изберете „Създаване на нов език“
4. В полето „Заглавие за качен език“ въведете името на езика.
При липса на въведените данни езикът ще се нарича "руски (RU)"
5. Задайте „Да“ на „Игнориране на езикова версия“
6. Задайте „Да“ на „Четене на набор от символи от XML файл“
7. Щракнете върху бутона "Импортиране" и изчакайте процеса на изтегляне да завърши.
7A Ако желаете, можете да направите новия език език по подразбиране,
като щракнете върху бутона "По подразбиране" до него.





  • от:
  • Регистриран: 2014.07.07
  • Публикации: 3,825
  • Просто харесвам PunBB:
  • 5 години, 8 месеци, 20 дни,
  • Харесва: 480

Тема: Кой форум е по-добър vBulletin или PunBB

VBulletin (Vobla или Bulka, както обичаме да го наричаме) е един от най-старите двигатели за търговски форуми, написани с помощта на PHP и MySQL технологии. След пускането на първата версия през 2000 г. беше извършена огромна работа за подобряване на функционалността, което позволи на VB да влезе в списъка на най-добрите софтуерни продукти.

Лицензът на VBulletin ще ви струва около $250. Не се колебайте, това е напълно оправдана загуба и със сигурност ще се изплати, като спестите работно време и нервни клетки. Повечето от тези пари отиват за разработчици и програмисти, които по-късно ще ги използват за усъвършенстване на функционалността и пускане на пачове и добавки (да, през годината всички актуализации ще ви се доставят безплатно).

2 Отговорете от PunBB

  • от: Москва, Совхознай 3, ап. 98
  • Регистриран: 2014.07.07
  • Публикации: 3,825
  • Просто харесвам PunBB:
  • 5 години, 8 месеци, 20 дни,
  • Харесва: 480

Няма смисъл да се изброяват всички функции на VBulletin. Те внедриха почти всичко, от което може да се нуждаят администраторите на форума. Подкастинг, поддръжка за мултицитиране, разделяне на социални групи и общности, рейтингова система (репутация). Основният пакет може да бъде допълнен с разширения на трети страни.

Форумният двигател на VBulletin създава сериозно натоварване на сървъра, особено ако са инсталирани добавки и скриптове на трети страни. За да избегнете проблеми със зареждането на страници в бъдеще, ще трябва да отделите пари за нормален хостинг. Особено ако предвиждате много трафик към вашия ресурс в бъдеще.

3 Отговорете от PunBB

  • от: Москва, Совхознай 3, ап. 98
  • Регистриран: 2014.07.07
  • Публикации: 3,825
  • Просто харесвам PunBB:
  • 5 години, 8 месеци, 20 дни,
  • Харесва: 480

Re: Кой форум е по-добър vBulletin или PunBB

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

VBulletin, реализира мащабни идеи по възможно най-добрия начин. Постоянни актуализации, висококачествено обслужване, допълнителни разширения и надеждни механизми за сигурност - всичко това напълно оправдава парите, изразходвани за продукта.

4 Отговорете от PunBB

  • от: Москва, Совхознай 3, ап. 98
  • Регистриран: 2014.07.07
  • Публикации: 3,825
  • Просто харесвам PunBB:
  • 5 години, 8 месеци, 20 дни,
  • Харесва: 480

Re: Кой форум е по-добър vBulletin или PunBB

Няма смисъл да изброявам всички функции - той (или в допълнения) изпълнява почти всичко, което може да се наложи на администратор, за да създаде форум. Има също и мултицитиране, и поддръжка за подкастинг, и потребителски общности, и социални групи, и гъвкава система за репутация и много други.

Разбира се, vBulletin има голям брой добавки и потребителски общности, така че няма да има проблеми с поддръжката, особено след като има официална услуга за поддръжка. Недостатъкът на vBulletin, макар и не много голям, са платените добавки, например за потребителски блогове.

Като цяло форумът няма недостатъци. Може да се препоръча за големи сериозни проекти именно заради своята надеждност и устойчивост на всякакви атаки. В резултат на това създава значително натоварване на сървъра, особено с инсталирани добавки, но за сериозни проекти обикновено се използват сериозни сървъри и сериозни администратори.

Всеки двигател изисква определени действия, за да го оптимизира за по-добра и по-бърза работа. В нашия случай ще говорим за оптимизация на Vbulletin 4.

Тъй като форумът ни се обновява постоянно, няма да пиша за оптимизацията на по-ранни версии на Vbulletin, а ще започна с версия 4.1.12. Въпреки че е възможно, постепенно ще допълвам тази статия с оптимизации за предишни версии, тъй като не всеки преминава към по-нови.

Тук ще дам няколко примера, за да направите вашия Vbulletin форум по-бърз и по-добър (започвайки от най-простите неща, преминавайки към по-сложните). Моля, имайте предвид, че нещата, които работят за мен, може да не работят непременно за вас. Следователно, вие правите всички промени на свой собствен риск и риск.

Деактивирайте списъка с потребители.

Има лесен начин, просто деактивирайте функцията в AdminCP. (Настройки -> Опции -> Опции за потребителски списък)

Разбира се, не е глобално и можете да го пропуснете и да не го правите, просто се запитайте дали имате нужда от него? Тъй като имат списък, потребителите могат да го сортират, да видят кой има повече съобщения, репутация и т.н. Използват ли го вашите потребители? Вероятно не… кога за последно използвахте този списък?

Що се отнася до мен, струва ми се, че тези списъци са само в полза на спамърите, тъй като това е най-лесният начин да съберете всички имена на членовете на форума Vbulletin 4 за спам в лични съобщения.

Освен това заявката, която е необходима за генериране на списък с потребители, е ужасна за сървърите на бази данни и може да доведе до голямо натоварване на сървъра.

Повишена скорост при обработка на списък с лични съобщения.

Ако никога не сте импортирали лични съобщения от външни източници с помощта на Impex или други средства, можете спокойно да разчитате на сортиране по ID за лични съобщения. Сортирането по идентификатор ще гарантира, че вашият сървър на база данни не трябва да изхвърля лични съобщения във временна таблица, за да извърши сортирането (прави заявката много по-бърза).

За да направите това, трябва да напишете малък модул с местоположение в private_messagelist_filter и да напишете следното в него:

Ако ($sortfield == "pmtext.dateline") $sortfield = "pm.pmid";

И това е всичко, току-що направи private.php ~20% по-бърз.


Ние конфигурираме по-ефективно търсене на най-новите съобщения от потребителя.

Отиваме на ftp, търсим файла include / class_userprofile.php и заменяме данните в него, както следва, търсим:

$getlastposts = $this->registry->db->query_read_slave(" ИЗБЕРЕТЕ thread.title, thread.threadid, thread.forumid, thread.postuserid, post.postid, post.dateline ОТ " . TABLE_PREFIX . "публикувайте КАТО публикация ВЪТРЕШНО JOIN " . TABLE_PREFIX . "нишка КАТО нишка ИЗПОЛЗВАНЕ (threadid) КЪДЕ thread.visible = 1 И post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ПОРЪЧАЙТЕ ПО post.dateline DESC LIMIT 20");

и го заменете с това (по-точно ORDER BY):

$getlastposts = $this->registry->db->query_read_slave(" ИЗБЕРЕТЕ thread.title, thread.threadid, thread.forumid, thread.postuserid, post.postid, post.dateline ОТ " . TABLE_PREFIX . "публикувайте КАТО публикация ВЪТРЕШНО ПРИСЪЕДИНЕТЕ се " . TABLE_PREFIX . "нишка КАТО нишка ИЗПОЛЗВАНЕ (threadid) КЪДЕ thread.visible = 1 И post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ПОРЪЧКА ПО post.postid DESC LIMIT 20");

Това прави заявката малко по-правилна, отколкото е в момента. По този начин не е нужно да сортирате във временна таблица. За потребители, които имат повече от 1000 съобщения, първоначалната заявка ще отнеме около 10 секунди, в нашия случай много по-малко. Това се отнася преди всичко за потребителския профил на Vbulletin 4 за показване на най-новите публикации.

Проверка на индекса на теми.

Ако вашите форуми имат ред на сортиране по подразбиране и са зададени както е, както направихме по-горе, уверете се, че всичките ви индекси са в техните таблици. имаше случаи, когато индексите по неизвестни за мен причини се пресичаха и някои форуми не се отваряха.

Моето предложение е да го направим така, че сортирането по подразбиране да е дата (колоната, която използва тези данни се нарича "dateline") и за да приложим това, изпълняваме заявката:

ALTER TABLE нишка ДОБАВЯНЕ НА ИНДЕКС forumid2_dp (forumid, visible, sticky, dateline)

Това искане се отнася специално за мен, във вашия случай forumid2_dp трябва да бъде вашето име. Използвайте на свой собствен риск.

Бъдете внимателни, когато инсталирате добавки.

Това, че някой прави модули и хакове, не означава, че е създаден само за вас, работил е в големите форуми на Vbulletin 4 и няма грешки. Отличен пример са докладите за масивни хакове, чрез този или онзи хак.

Разбира се, може да се предположи, че разработчиците не могат да отчетат всичко и да излопат всички хакове, така че да не си влизат в конфликт, но... Уверете се, че модулът Vbulletin не причинява тежки натоварвания на база данни, уверете се, че хакът има потенциалът за защита срещу SQL инжекция или XSS. За съжаление има хиляди приложения и модификации и просто не е реалистично да се провери всичко. Би било по-добре да напишете всички хакове сами или да поръчате от някой. Специално за вас и вашите задачи.

Не използвайте таблици в InnoDB.

Тук, разбира се, могат да ми плюят в лицето, тъй като тази тема вече е обсъждана милион пъти, но от собствен опит мога да кажа, че работя 100% на MyISAM маси за всякакви действия. Понякога обработвам 1000 заявки в секунда.

Ако вече започвате да се притеснявате къде всичко виси, когато правите заявка, особено в новото търсене на Vbulletin, променете таблиците InnoDB в MyISAM. MyISAM отговаря по-бързо на отделни заявки, тъй като няма нужда да управлявате заключването на отделни записи. InnoDB е по-бърз като цяло, но само защото позволява на заявките да се изпълняват едновременно. ако вашите заявки вече се изпълняват бързо под MyISAM, няма нужда да превключвате към InnoDB. ИМХО.

Рейтинг на статията

0%

Рейтинг

потребителска оценка: 0,35 (1 гласа)

Основни предимства:

  • Бърза и ефективна база данни
  • Интерфейс на шаблона
  • Мощна търсачка
  • Многоезична поддръжка
  • Потребителски профили
  • Мощен и лесен за използване административен панел
  • Неограничен брой раздели/теми/съобщения
  • Известия по имейл
  • Поддръжка на 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, за да се уверите, че всичко работи правилно: