Vbuletin cu sânge rece. Ce forum este mai bun vBulletin sau PunBB

Trebuie să fi văzut forumuri pe motorul vBulletin de mai multe ori. Forumurile ca atare nu mai sunt la apogeul modei, dar vBulletin este încă unul dintre cele mai populare motoare. În cea mai recentă versiune (a cincea) sa, au fost găsite mai multe vulnerabilități care pot distruge foarte mult viața unui administrator. În acest articol, vă voi arăta cum funcționează.

Prima problemă este filtrarea incorectă a datelor utilizatorului. A fost raportat de un cercetător independent de securitate care a dorit să rămână anonim. Vulnerabilitatea, deși are unele limitări, a primit statutul de critică, deoarece permite citirea oricăror fișiere și executarea codului arbitrar pe sistemul țintă.

A doua vulnerabilitate a fost găsită de cercetătorii de la TRUEL IT și a primit identificatorul CVE-2017-17672. Este legat de caracteristicile deserializării datelor din motor și poate fi folosit de un atacator pentru a șterge fișiere arbitrare din sistem.

Rapoartele complete care detaliază ambele probleme au fost publicate ca parte a programului Beyond Security al SecuriTeam. Există, de asemenea, exploatări PoC pentru a demonstra vulnerabilitățile. Să trecem prin toate acestea în ordine.

preparate

Am folosit distribuția WAMP ca server.

Citirea fișierelor, executarea comenzilor

Deci, motivul primei vulnerabilități este logica incorectă la procesarea parametrului routesstring, care permite atacatorului să adauge orice fișier de pe disc prin includere și să execute codul PHP care se află în el.

Calea noastră începe cu cel mai important fișier - index.php, unde are loc inițializarea de bază a aplicației.

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

Să ne uităm la metoda vB5_Frontend_Application::init.

/includes/vb5/frontend/application.php
13: clasa vB5_Frontend_Application extinde vB5_ApplicationAbstract 14: ( 15: funcția publică statică init($configFile) 16: ( 17: parent::init($configFile); 18: 19: self::$instance = new vB5_Frontend:_20); self::$instance->router = nou vB5_Frontend_Routing(); 21: self::$instance->router->setRoutes();

Aici ne interesează metoda setRoutes.

47: funcția publică setRoutes() 48: ( 49: $this->processQueryString(); ... 54: if (isset($_GET["routestring"])) 55: ( 56: $cale = $_GET[" rută șirul"];

Variabila $path primește valoarea userdata din parametrul routestring. Puteți trece calea către pagina de forum în ea și va fi încărcată.



Să presupunem că am trecut /test .

După atribuirea unei variabile, urmează o bucată de cod care scapă de bara oblică de la începutul liniei, dacă este prezentă.

/includes/vb5/frontend/routing.php
75: if (strlen($cale) ȘI $cale(0) == "/") 76: ( 77: $cale = substr($cale, 1); // $cale = "test" 78: )
include\vb5\frontend\routing.php
83: dacă (strlen($cale) > 2) 84: ( 85: $ext = strtolower(substr($cale, -4)) ; 86: dacă (($ext == ".gif") SAU ($ext == ".png") SAU ($ext == ".jpg") SAU ($ext == ".css") 87: SAU (strtolower(substr($cale, -3)) == ".js" )) 88: ( 89: antet ("HTTP/1.0 404 Nu a fost găsit"); 90: die(""); 91: ) 92: )

După cum puteți vedea, verificarea este destul de ciudată. Cel puțin, prezența unei liste de extensii interzise cusute direct în cod este confuză. Și, în general, însuși faptul că extensia este obținută prin tăierea a patru caractere de la sfârșitul rândului (linia 85) este derutant. În general, dacă încercăm să obținem un fișier cu extensiile gif, png, jsp, css sau js, atunci serverul va returna o pagină 404 și scriptul se va opri. Când toate verificările sunt trecute, metoda getRoute din clasa vB_Api_Route este apelată folosind callApi . Acesta caută rute potrivite pe baza informațiilor furnizate de utilizator.

Este disponibil în continuare numai pentru membri

Opțiunea 1. Alăturați-vă comunității „site” pentru a citi toate materialele de pe site

Calitatea de membru al comunității în perioada specificată vă va oferi acces la TOATE materialele Hacker, vă va crește discountul cumulat personal și vă va permite să acumulați un rating profesional Xakep Score!

Doar în scop informativ. Administrația nu este responsabilă pentru conținutul acestuia. Descărcare gratuită .


vBulletin Connect v5.3.3 este un pachet de forum puternic, scalabil și complet personalizabil pentru site-ul dvs. web.

Versiune: 5.3.3 (Anulat de vBSupport.org)

Cerințe minime php 5.6
Compatibilitate cu php 7.1
La o instalare nouă, trebuie să redenumiți fișierul htaccess.txt în .htaccess
Când actualizați, ștergeți folderul cu fonturi (înainte de a începe actualizarea).

Noi oportunitati:
Noua interfață de utilizare cu integrare socială extinsă;
Optimizat pentru dispozitive mobile;
Instalare, management și configurare simplificate;
Noua arhitectură a bazei de date pentru o căutare îmbunătățită și o performanță mai bună;
Schimbare dinamică convenabilă a conținutului;
Extins pentru partajare video și imagini;
Integrare completă cu VigLink;
Peste 100 de alte funcții și îmbunătățiri noi;

Aplicații încorporate:
Forum de discuții
Grupuri
Sondaje
Blog

Optimizare motor de căutare:
Adrese URL prietenoase cu SEO
Etichetă META de cuvinte cheie/descriere personalizată

Flexibilitate:
Profiluri de utilizator extensibile
Rescrierea adresei URL
Localizarea interfeței
metadate

Standarde de conformitate:
Sindicați conținut (RSS)
Sindicarea conținutului: RSS, Atom, XML
Compatibil cu PHP v5.4

Sistem integrat nerupere:
Autentificare unică implicată
Singurul sistem de permisiuni
Singurul panou de control admin
Creați un stil/temă continuu prin articole, bloguri, forum

Panouri de control pentru fiecare rol:
Controale administrative
Panoul de control al moderatorului
Panoul de control al utilizatorului
Sistem comun de autorizare
Motor de șablon de putere pentru personalizare avansată

Control utilizator:
Sistem multi-utilizator cu roluri și puteri nelimitate
Grupuri implicate
Securitate
Puteri granulare
Notificare probleme
SSL compatibil
Captcha
Verificare a email-ului
Editor de știri din panoul de control al administratorului
Sistem de autentificare „strike”.
Modificările de e-mail și parolă necesită o parolă curentă
Compatibil cu Legea privind protecția confidențialității online pentru copii (COPPA) 1998

1. Accesați panoul de control al administratorului:
Limbi și expresii - Descărcați / Încărcați limbi.
2. În câmpul „FIE încărcați fișierul XML de pe computer”, introduceți calea către
vbulletin-language_ru.xml de pe computer.
3. În opțiunea „Suprascrie limbă”, selectează „Creează o limbă nouă”
4. În câmpul „Titlu pentru limba încărcată”, introduceți numele limbii.
În absența datelor introduse, limba se va numi „rusă (RU)”
5. Setați „Da” la „Ignorați versiunea limbii”
6. Setați „Da” la „Citiți setul de caractere din fișierul XML”
7. Faceți clic pe butonul „Import” și așteptați finalizarea procesului de descărcare.
7A Dacă doriți, puteți face din noua limbă limba „implicit”,
făcând clic pe butonul „Implicit” de lângă acesta.





  • Din:
  • Inregistrat: 2014.07.07
  • Postari: 3,825
  • Îmi place doar PunBB:
  • 5 ani, 8 luni, 20 zile,
  • Îi place: 480

Subiect: Ce forum este mai bun vBulletin sau PunBB

VBulletin (Vobla sau Bulka, așa cum ne place să-l numim) este unul dintre cele mai vechi motoare de forum comerciale scrise folosind tehnologii PHP și MySQL. De la lansarea primei versiuni în 2000, s-a făcut o muncă extraordinară pentru a îmbunătăți funcționalitatea, ceea ce a permis VB să intre în lista celor mai bune produse software.

Licența VBulletin vă va costa în jur de 250 USD. Nu ezitați, aceasta este o risipă complet justificată și cu siguranță se va amortiza prin economisirea timpului de lucru și a celulelor nervoase. Cei mai mulți bani merg către dezvoltatori și programatori, care ulterior îi vor folosi pentru a perfecționa funcționalitatea și pentru a lansa patch-uri și suplimente (da, toate actualizările vă vor fi livrate gratuit pe parcursul anului).

2 Răspunde de către PunBB

  • Din: Moscova, Sovkhoznay 3, ap. 98
  • Inregistrat: 2014.07.07
  • Postari: 3,825
  • Îmi place doar PunBB:
  • 5 ani, 8 luni, 20 zile,
  • Îi place: 480

Nu are sens să enumerați toate funcțiile VBulletin. Au implementat aproape tot ce ar putea avea nevoie administratorii de forum. Podcasting, suport pentru multicitare, împărțire în grupuri sociale și comunități, sistem de rating (reputație). Pachetul de bază poate fi completat cu extensii de la terți.

Motorul de forum VBulletin creează o sarcină serioasă pe server, mai ales dacă sunt instalate suplimente și scripturi terțe. Pentru a evita problemele cu încărcarea paginilor în viitor, va trebui să faceți o găzduire normală. Mai ales dacă anticipați mult trafic către resursa dvs. în viitor.

3 Răspunde de către PunBB

  • Din: Moscova, Sovkhoznay 3, ap. 98
  • Inregistrat: 2014.07.07
  • Postari: 3,825
  • Îmi place doar PunBB:
  • 5 ani, 8 luni, 20 zile,
  • Îi place: 480

Re: Care forum este mai bun vBulletin sau PunBB

VBulletin, datorită rezistenței sale extreme la hacking și spam bot, este recomandat pentru utilizare în proiecte mari și serioase. În plus, setările implicite și fișierele de configurare pot fi modificate cu ușurință după propriul gust, obținând un efect și mai mare. Există multe instrucțiuni și ghiduri pe internet de la meșteșugari, deși nu toate ar trebui să fie de încredere.

VBulletin, implementează idei la scară largă în cel mai bun mod posibil. Actualizări constante, servicii de înaltă calitate, extensii suplimentare și mecanisme de securitate fiabile - toate acestea justifică pe deplin banii cheltuiți pe produs.

4 Răspunde de către PunBB

  • Din: Moscova, Sovkhoznay 3, ap. 98
  • Inregistrat: 2014.07.07
  • Postari: 3,825
  • Îmi place doar PunBB:
  • 5 ani, 8 luni, 20 zile,
  • Îi place: 480

Re: Care forum este mai bun vBulletin sau PunBB

Nu are sens să enumerați toate funcțiile - acesta (sau în plus) implementează aproape tot ceea ce un administrator poate avea nevoie pentru a crea un forum. Există, de asemenea, multicitare și suport pentru podcasting, comunități de utilizatori și grupuri sociale, un sistem flexibil de reputație și multe altele.

Desigur, vBulletin are un număr mare de suplimente și comunități de utilizatori, așa că nu vor fi probleme de întreținere, mai ales că există un serviciu oficial de asistență. Dezavantajul vBulletin, deși nu foarte mare, este suplimentele plătite, de exemplu, pentru blogurile utilizatorilor.

În general, forumul nu are defecte. Poate fi recomandat pentru proiecte mari serioase tocmai datorita fiabilitatii si rezistentei la tot felul de atacuri. Drept urmare, creează o încărcare semnificativă pe server, mai ales cu suplimente instalate, dar pentru proiecte serioase se folosesc de obicei servere serioase și administratori serioși.

Orice motor necesită anumite acțiuni pentru a-l optimiza pentru o performanță mai bună și mai rapidă. În cazul nostru, vom vorbi despre optimizarea Vbulletin 4.

Deoarece motorul forumului nostru este actualizat constant, nu voi scrie despre optimizarea versiunilor anterioare ale Vbulletin, dar voi începe cu versiunea 4.1.12. Deși este posibil, voi completa treptat acest articol cu ​​optimizări pentru versiunile anterioare, deoarece nu toată lumea trece la altele mai noi.

Aici voi da câteva exemple pentru a vă face forumul Vbulletin mai rapid și mai bun (începând cu cele mai simple lucruri, trecând la cele mai complexe). Vă rugăm să rețineți că lucrurile care funcționează pentru mine s-ar putea să nu funcționeze neapărat pentru dvs. Prin urmare, faceți toate schimbările pe propriul risc și risc.

Dezactivează lista de utilizatori.

Există o modalitate ușoară, doar dezactivați funcția din AdminCP. (Setări -> Opțiuni -> Opțiuni pentru listarea utilizatorilor)

Nu este global, desigur, și puteți sări peste el și nu o faceți, doar întrebați-vă dacă aveți nevoie de el? De când au o listă, utilizatorii o pot sorta, pot vedea cine are mai multe mesaje, reputație și așa mai departe. Utilizatorii dvs. îl folosesc? Probabil că nu... când ai folosit ultima dată această listă?

În ceea ce mă privește, mi se pare că aceste liste sunt doar în beneficiul spammerilor, deoarece acesta este cel mai simplu mod de a colecta toate numele membrilor forumului Vbulletin 4 pentru spam în mesaje private.

În plus, interogarea care este necesară pentru a genera o listă de utilizatori este groaznică pentru serverele de baze de date și poate duce la o încărcare mare a serverului.

Viteză crescută la procesarea unei liste de mesaje private.

Dacă nu ați importat niciodată mesaje private din surse externe folosind Impex sau alte mijloace, vă puteți baza în siguranță pe sortarea după ID pentru mesajele private. Sortarea după ID se va asigura că serverul dumneavoastră de baze de date nu trebuie să arunce mesaje private într-un tabel temporar pentru a efectua sortarea (făcând interogarea mult mai rapidă).

Pentru a face acest lucru, trebuie să scrieți un mic modul cu o locație în private_messagelist_filter și să scrieți următoarele în el:

Dacă ($sortfield == "pmtext.dateline") $sortfield = "pm.pmid";

Și gata, tocmai ai făcut private.php cu ~20% mai rapid.


Configuram o cautare mai eficienta a celor mai recente mesaje de la utilizator.

Mergem la ftp, căutăm fișierul includes / class_userprofile.php și înlocuim datele din acesta după cum urmează, căutăm:

$getlastposts = $this->registry->db->query_read_slave(" SELECT thread.title, thread.threadid, thread.forumid, thread.postuserid, post.postid, post.dateline FROM " . TABLE_PREFIX . "post AS post INNER JOIN " . TABLE_PREFIX . "thread CA thread FOLOSIND (threadid) WHERE thread.visible = 1 AND post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ORDER BY post.dateline DESC LIMITA 20");

și înlocuiți-l cu acesta (mai precis ORDER BY):

$getlastposts = $this->registry->db->query_read_slave(" SELECT thread.title, thread.threadid, thread.forumid, thread.postuserid, post.postid, post.dateline FROM " . TABLE_PREFIX . "post AS post INNER JOIN " . TABLE_PREFIX . "thread CA fir FOLOSIND (threadid) WHERE thread.visible = 1 AND post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ORDER BY post.postid DESC LIMITA 20");

Acest lucru face ca interogarea să fie puțin mai corectă decât este în prezent. Astfel, nu trebuie să sortați într-un tabel temporar. Pentru utilizatorii care au mai mult de 1000 de mesaje, solicitarea inițială ar dura aproximativ 10 secunde, în cazul nostru mult mai puțin. Acest lucru se aplică în primul rând profilului de utilizator Vbulletin 4 pentru a afișa cele mai recente postări.

Verificarea indexului subiectului.

Dacă forumurile dvs. au o ordine de sortare implicită și sunt setate neschimbate, așa cum am făcut-o mai sus, asigurați-vă că toți indexurile dvs. sunt în tabelele lor. au fost cazuri când indexurile, din motive necunoscute de mine, s-au intersectat și unele forumuri nu s-au deschis.

Sugestia mea este să faceți astfel încât sortarea implicită să fie data (coloana care utilizează aceste date se numește „dateline”) și pentru a implementa acest lucru, executăm interogarea:

ALTER TABLE thread ADD INDEX forumid2_dp (forumid, vizibil, sticky, dateline)

Această solicitare mi se aplică în mod specific, în cazul dvs. forumid2_dp ar trebui să fie numele dvs. Folosiți pe propria răspundere.

Aveți grijă când instalați suplimente.

Doar pentru că cineva face module și hack-uri nu înseamnă că este făcut doar pentru tine, a lucrat pe forumurile mari Vbulletin 4 și nu are bug-uri. Un exemplu excelent sunt rapoartele de hack-uri masive, prin cutare sau cutare hack.

Desigur, se poate presupune că dezvoltatorii nu pot da socoteală pentru tot și să trimită toate hack-urile astfel încât să nu intre în conflict, dar... Asigurați-vă că modulul Vbulletin nu provoacă încărcări mari de baze de date, asigurați-vă că hack-ul are potențialul de a proteja împotriva injecției SQL sau XSS. Din păcate, există mii de aplicații și modificări și pur și simplu nu este realist să verifici totul. Ar fi mai bine dacă scrieți singuri toate hackurile sau comandați de la cineva. Special pentru tine și sarcinile tale.

Nu folosiți tabele în InnoDB.

Aici, desigur, îmi pot scuipa în față, deoarece acest subiect a fost deja discutat de un milion de ori, dar din proprie experiență pot spune că lucrez 100% pe tabelele MyISAM pentru orice acțiune. Uneori procesez 1000 de cereri pe secundă.

Dacă începeți deja să vă speriați unde se blochează totul atunci când interogați, în special în noua căutare Vbulletin, schimbați tabelele InnoDB în MyISAM. MyISAM răspunde mai rapid la solicitările individuale, deoarece nu este nevoie să gestionați blocarea înregistrărilor individuale. InnoDB este mai rapid în general, dar numai pentru că permite interogărilor să ruleze simultan. dacă interogările dumneavoastră rulează deja rapid sub MyISAM, nu este nevoie să treceți la InnoDB. DIN PUNCTUL MEU DE VEDERE.

Evaluarea articolului

0%

Evaluare

evaluarea utilizatorului: 0,35 (1 voturi)

Principalele avantaje:

  • Rapid și eficient bazat pe baze de date
  • Interfață șablon
  • Motor de căutare puternic
  • Suport în mai multe limbi
  • Profilurile utilizatorilor
  • Panou de administrare puternic și ușor de utilizat
  • Număr nelimitat de secțiuni/subiecte/mesaje
  • Notificări prin email
  • Suport COPPA

Din cauza faptului că producătorul nu oferă un forum demo care să poată fi instalat, a trebuit să instalez versiunea din stânga descărcată dintr-un fel de warez. Prin urmare, este posibil ca instrucțiunile să nu se potrivească exact cu procesul de instalare a unui forum licențiat. După instalare, site-ul a fost îndepărtat și nu a fost folosit în scopul pentru care a fost prevăzut.

Pentru a instala vBulletin, accesați panoul de control al găzduirii (butonul cu roată din dreptul comenzii de găzduire din facturare), accesați „File Manager”, accesați directorul „www”. Faceți clic pe butonul „Încărcați fișierul în directorul curent”:

Specificați calea către fișierul de pe computer:

Selectați arhiva cu vBulletin, despachetați-o:

Ștergem fișierele și directoarele de care nu avem nevoie, inclusiv directorul domeniului nostru www - cu condiția ca acolo să nu aveți nimic de care aveți nevoie. Dacă nu îl puneți în rădăcina site-ului sau este ceva necesar în directorul site-ului, nu trebuie să ștergeți directorul www al domeniului:

Selectați directorul cu programul de instalare vBulletin, redenumiți-l:

Introduceți numele site-ului nostru ca nume de director:

Accesați secțiunea „Băzuri de date” a panoului de control al găzduirii:

Creați o nouă bază de date MySQL și un utilizator cu drepturi de acces complete la aceasta:

Vă rugăm să rețineți că atât utilizatorul, cât și baza de date sunt prefixate automat cu numele contului dvs. pe serverul de găzduire:

Mergem la pagina principală a site-ului nostru, primim următoarea eroare vBulletin:

Mergem pe calea către programul de instalare în bara de adrese, trebuie să adăugați „install / install.php”, după care se lansează programul de instalare a forumului vBulletin:

Programul de instalare vBulletin verifică fișierele:

Următorul pas este să verificați conexiunea la baza de date, nu trece - pentru că Date incorecte introduse în fișierul de configurare a forumului:

Ne întoarcem la panoul de control al găzduirii, managerul de fișiere, mergem la directorul forumului, apoi la subdirectorul „include”. Deschideți fișierul „config.php”:

Introducem datele corecte din baza de date în fișierul de configurare, după care îl închidem:

Revenim pe site, la instalator. apăsați „F5”, de data aceasta totul este în regulă, conexiunea la baza de date a crescut împreună:

Programul de instalare vBulletin creează tabele în baza de date:

Programul de instalare vBulletin modifică tipurile unor tabele:

Introducerea datelor în baza de date:

Limbi importate:

Stilurile sunt importate:

Ajutorul este importat:

Nu atingem setările implicite, programul de instalare vBulletin a determinat totul corect:

Setările implicite sunt importate:

Introduceți detaliile administratorului vBulletin:

Administratorul vBulletin a fost adăugat cu succes:

Instalarea vBulletin pe găzduire a fost finalizată cu succes:

Urmând ultimul sfat al programului de instalare, ștergeți fișierele inutile:

Puteți accesa forumul vBulletin pentru a vă asigura că totul funcționează corect: