Delikatan vbilten. Koji je forum bolji vBulletin ili PunBB. Čitajte datoteke, izvršavajte naredbe

Vjerojatno ste mnogo puta vidjeli forume na vBulletin motoru. Forumi kao takvi više nisu u modi, ali vBulletin je i dalje jedan od najpopularnijih motora. U posljednjoj (petoj) verziji pronađeno je nekoliko ranjivosti koje mogu uvelike uništiti život administratora. U ovom članku ću vam reći kako se koriste.

Prvi problem je netočno filtriranje korisničkih podataka. Izvijestio je to neovisni sigurnosni istraživač koji je želio ostati anoniman. Ranjivost, iako ima neka ograničenja, dobila je kritični status jer vam omogućuje čitanje bilo koje datoteke i izvršavanje proizvoljnog koda na ciljnom sustavu.

Drugu ranjivost pronašli su istraživači iz TRUEL IT-a i dobila je identifikator CVE-2017-17672. Povezan je sa značajkama deserijalizacije podataka u motoru i napadač ga može koristiti za brisanje proizvoljnih datoteka na sustavu.

Potpuna izvješća koja detaljno opisuju oba problema objavljena su u sklopu SecuriTeamovog programa Beyond Security. Postoje i PoC eksploatacije za demonstraciju ranjivosti. Prođimo kroz sve ovo redom.

Pripreme

Koristio sam WAMP distribuciju kao poslužitelj.

Čitajte datoteke, izvršavajte naredbe

Dakle, razlog prve ranjivosti je netočna logika prilikom obrade parametra routestring, koja napadaču omogućuje uključivanje bilo koje datoteke na disku putem uključivanja i izvršavanje PHP koda koji se nalazi u njoj.

Naš put počinje najvažnijom datotekom - index.php, gdje se odvija osnovna inicijalizacija aplikacije.

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

Pogledajmo vB5_Frontend_Application::init metodu.

/includes/vb5/frontend/application.php
13: klasa vB5_Frontend_Application proširuje vB5_ApplicationAbstract 14: ( 15: javna statička funkcija 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();

Ovdje nas zanima metoda setRoutes.

47: javna funkcija setRoutes() 48: ( 49: $this->processQueryString(); ... 54: if (isset($_GET["routestring"])) 55: ( 56: $path = $_GET[" niz usmjeravanja"];

Varijabla $path sadrži vrijednost korisničkih podataka iz parametra routestring. Možete mu proslijediti put do stranice foruma i on će se učitati.



Recimo da smo položili /test .

Nakon dodjele varijable, postoji dio koda koji se rješava kose crte na početku retka, ako postoji.

/includes/vb5/frontend/routing.php
75: if (strlen($path) I $path(0) == "/") 76: ( 77: $path = substr($path, 1); // $path = "test" 78: )
uključuje\vb5\frontend\routing.php
83: if (strlen($path) > 2) 84: ( 85: $ext = strtolower(substr($path, -4)) ; 86: if (($ext == ".gif") ILI ($ext == ".png") ILI ($ext == ".jpg") ILI ($ext == ".css") 87: ILI (strtolower(substr($path, -3)) == ".js" )) 88: ( 89: zaglavlje("HTTP/1.0 404 nije pronađeno"); 90: umri(""); 91: ) 92: )

Kao što vidite, ček je prilično čudan. U najmanju ruku, prisutnost popisa zabranjenih ekstenzija upisanih izravno u kod je zbunjujuća. I općenito, sama činjenica da se proširenje dobiva rezanjem četiri znaka s kraja retka (redak 85) zbunjuje. Općenito, ako pokušamo primiti datoteku s ekstenzijama gif, png, jsp, css ili js, poslužitelj će vratiti stranicu 404 i skripta će se prestati izvršavati. Kada prođu sve provjere, poziva se metoda getRoute iz klase vB_Api_Route koristeći callApi. Traži prikladne rute na temelju podataka koje daje korisnik.

Nastavak je dostupan samo članovima

Opcija 1. Pridružite se zajednici "site" kako biste pročitali sve materijale na stranici

Članstvo u zajednici unutar navedenog razdoblja omogućit će vam pristup SVIM hakerskim materijalima, povećati vaš osobni kumulativni popust i omogućiti vam da skupite profesionalnu ocjenu Xakep Score!

Samo u informativne svrhe. Administracija nije odgovorna za sadržaj. Preuzmite besplatno.


vBulletin Connect v5.3.3 moćan je, skalabilan i potpuno prilagodljiv forumski paket za vašu web stranicu.

Verzija: 5.3.3 (Poništio vBSupport.org)

Minimalni zahtjevi php 5.6
Kompatibilan s php 7.1
Za novu instalaciju morate preimenovati datoteku htaccess.txt u .htaccess
Prilikom ažuriranja izbrišite mapu s fontovima (prije pokretanja ažuriranja).

Nove mogućnosti:
Novo korisničko sučelje s opsežnom društvenom integracijom;
Optimizirano za mobilne uređaje;
Pojednostavljena instalacija, upravljanje i konfiguracija;
Nova arhitektura baze podataka za poboljšano pretraživanje i bolje performanse;
Zgodna dinamička promjena sadržaja;
Napredno za dijeljenje videa i slika;
Potpuna integracija s VigLinkom;
Više od 100 drugih novih značajki i poboljšanja;

Ugrađene aplikacije:
Forum za rasprave
grupe
Ankete
Blog

Optimizacija pretraživača:
URL-ovi prilagođeni SEO-u
META oznaka prilagođene ključne riječi/opisa

Fleksibilnost:
Proširivi korisnički profili
Prepisivanje URL-a
Lokalizacija sučelja
Metapodaci

Usklađenost sa standardima:
Distribucija sadržaja (RSS)
Sindikacija sadržaja: RSS, Atom, XML
PHP v5.4 kompatibilan

Neprekidni integrirani sustav:
Jedina uključena prijava
Sustav s jednom rezolucijom
Jedina administrativna upravljačka ploča
Stvorite kontinuirani stil/temu kroz članke, blogove, forum

Nadzorne ploče za svaku ulogu:
Administrativne kontrole
Upravljačka ploča moderatora
Prilagođena upravljačka ploča
Unified Resolution System
Power predložak za naprednu prilagodbu

Korisnička kontrola:
Višekorisnički sustav s neograničenim ulogama i ovlastima
Uključene grupe
Sigurnost
Zrnate ovlasti
Obavijest o problemu
Kompatibilan SSL
Captcha
Potvrda adrese e-pošte
Uređivač vijesti na administrativnoj kontrolnoj ploči
Login "strike" sustav
Promjene e-pošte i lozinke zahtijevaju trenutnu lozinku
U skladu sa Zakonom o zaštiti privatnosti djece na internetu (COPPA) iz 1998

1. Idite na upravljačku ploču administratora:
Jezici i fraze - preuzmite/prenesite jezike.
2. U polje "ILI prenesite XML datoteku sa svog računala" unesite put do
datoteku vbulletin-language_ru.xml na vašem računalu.
3. U opciji "Overwrite Language" odaberite "Create New Language"
4. U polje "Naslov za preneseni jezik" unesite naziv jezika.
Ako nema unesenih podataka, jezik će se zvati "ruski (RU)"
5. Postavite "Da" na "Zanemari jezičnu verziju"
6. Postavite "Yes" na "Read Charset from XML File"
7. Pritisnite gumb "Uvezi" i pričekajte da se proces preuzimanja završi.
7A Ako želite, novi jezik možete postaviti kao “zadani” jezik,
klikom na gumb "Default" / "Default Value" pokraj njega.





Glavne prednosti:

  • Brz i učinkovit okvir baze podataka
  • Sučelje koje se sastoji od predložaka
  • Snažna tražilica
  • Višejezična podrška
  • Korisnički profili
  • Snažan i praktičan administrativni panel
  • Neograničen broj odjeljaka/tema/poruka
  • Obavijesti putem e-maila
  • Podrška za COPPA

S obzirom na to da proizvođač ne daje demo foruma koji se može instalirati, morao sam instalirati lijevu verziju, skinutu s nekog Vareznika. Stoga upute možda neće u potpunosti odgovarati postupku instalacije foruma za licenciranje. Nakon instalacije, stranica je izbrisana i nije korištena za namjeravanu svrhu.

Da biste instalirali vBulletin, idite na upravljačku ploču hostinga (gumb sa zupčanikom pored redoslijeda hostinga u naplati), tamo u “File Manager”, u njemu idemo na “www” direktorij. Kliknite gumb "Učitaj datoteku u trenutni direktorij":

Navedite put do datoteke na vašem računalu:

Odaberite arhivu s vBulletin i raspakirajte je:

Brišemo datoteke i direktorije koji nam ne trebaju, uključujući direktorij naše www domene - pod uvjetom da tamo nemate ništa što vam treba. Ako ga ne stavite u korijen web stranice ili postoji nešto što je potrebno u direktoriju web stranice, nema potrebe brisati direktorij www domene:

Odaberite direktorij s vBulletin instalacijskim programom i preimenujte ga:

Unesite naziv naše stranice kao ime direktorija:

Idite na odjeljak "Baze podataka" na upravljačkoj ploči hostinga:

Napravite novu MySQL bazu podataka i korisnika s punim pravima pristupa njoj:

Imajte na umu da su i korisnik i baza podataka automatski dobili prefiks na temelju naziva vašeg računa na hosting poslužitelju:

Idemo na glavnu stranicu naše stranice i dobivamo sljedeću vBulletin pogrešku:

U adresnu traku unesemo put do instalatera, dodamo “install/install.php”, nakon čega se pokreće instalacijski program vBulletin foruma:

Instalacijski program vBulletin provjerava prisutnost datoteka:

Sljedeći korak je provjeriti vezu s bazom podataka, ne radi - jer... Konfiguracijska datoteka foruma sadrži netočne podatke:

Vraćamo se na upravljačku ploču hostinga, upravitelj datoteka, idemo u direktorij s forumom, zatim poddirektorij "uključuje". Otvorite datoteku "config.php":

U konfiguracijsku datoteku unosimo točne podatke iz baze, nakon čega je zatvaramo:

Vraćamo se na mjesto, instalateru. pritisnite “F5”, ovaj put je sve u redu, veza s bazom podataka je srasla zajedno:

Instalacijski program vBulletin stvara tablice u bazi podataka:

Instalacijski program vBulletin mijenja tipove nekih tablica:

Podaci se unose u bazu:

Uvezeni jezici:

Stilovi se uvoze:

Pomoć se uvozi:

Ne diramo zadane postavke; instalacijski program vBulletin je sve ispravno odredio:

Zadane postavke se uvoze:

Unesite detalje vBulletin administratora:

Administrator vBulletin je uspješno dodan:

Instalacija vBulletin-a na hosting je uspješno završena:

Slijedeći posljednji savjet instalatera, izbrišite nepotrebne datoteke:

Možete otići na vBulletin forum da provjerite radi li sve ispravno:

  • Iz:
  • Registriran: 2014.07.07
  • Postovi: 3,825
  • Samo volim PunBB:
  • 5 godine, 8 mjeseci, 20 dana,
  • Sviđa mi se: 480

Tema: Koji je forum bolji vBulletin ili PunBB

VBulletin (Vobla ili Bulka, kako ga mi volimo zvati) jedan je od najstarijih komercijalnih forumskih motora napisan korištenjem PHP i MySQL tehnologija. Od izdavanja prve verzije 2000. godine učinjena je ogromna količina posla na poboljšanju funkcionalnosti, što je omogućilo VB-u da bude uvršten na popis najboljih softverskih proizvoda.

VBulletin licenca koštat će vas oko 250 USD. Budite uvjereni, ovo je potpuno opravdan trošak koji će se sigurno isplatiti uštedom radnog vremena i živčanih stanica. Većina tog novca ide programerima i programerima, koji će ga kasnije koristiti za poboljšanje funkcionalnosti i izdavanje zakrpa i dodataka (da, sva ažuriranja bit će vam isporučena besplatno tijekom cijele godine).

2 Odgovori od PunBB

  • Iz: Moskva, Sovkhoznay 3, apt. 98
  • Registriran: 2014.07.07
  • Postovi: 3,825
  • Samo volim PunBB:
  • 5 godine, 8 mjeseci, 20 dana,
  • Sviđa mi se: 480

Nema smisla nabrajati sve VBulletin funkcije. Implementirali su gotovo sve što bi administratorima foruma moglo trebati. Podcasting, višecitatna podrška, podjela na društvene grupe i zajednice, sustav ocjenjivanja (reputacija). Osnovni paket može se nadopuniti ekstenzijama trećih strana.

VBulletin forumski motor stvara ozbiljno opterećenje na poslužitelju, posebno ako su instalirani dodaci i skripte trećih strana. Da biste izbjegli probleme s učitavanjem stranica u budućnosti, morat ćete se odvojiti za uobičajeni hosting. Pogotovo ako predviđate više prometa za svoj resurs u budućnosti.

3 Odgovori od PunBB

  • Iz: Moskva, Sovkhoznay 3, apt. 98
  • Registriran: 2014.07.07
  • Postovi: 3,825
  • Samo volim PunBB:
  • 5 godine, 8 mjeseci, 20 dana,
  • Sviđa mi se: 480

Re: Koji je forum bolji vBulletin ili PunBB

VBulletin se zbog svoje izuzetne otpornosti na hakiranje i spambotove preporučuje za korištenje u velikim ozbiljnim projektima. Osim toga, standardne postavke i konfiguracijske datoteke mogu se jednostavno mijenjati na vlastiti način, postižući još veći učinak. Na internetu postoji mnogo uputa i uputa narodnih obrtnika, iako ne treba svima vjerovati.

VBulletin implementira velike ideje na najbolji mogući način. Stalna ažuriranja, visokokvalitetna usluga, dodatna proširenja i pouzdani sigurnosni mehanizmi - sve to u potpunosti opravdava novac potrošen na proizvod.

4 Odgovori od PunBB

  • Iz: Moskva, Sovkhoznay 3, apt. 98
  • Registriran: 2014.07.07
  • Postovi: 3,825
  • Samo volim PunBB:
  • 5 godine, 8 mjeseci, 20 dana,
  • Sviđa mi se: 480

Re: Koji je forum bolji vBulletin ili PunBB

Nema smisla nabrajati sve funkcije - on (ili dodaci) implementira gotovo sve što bi administrator mogao trebati za stvaranje foruma. Postoji višestruko citiranje, podrška za podcasting, korisničke zajednice, društvene grupe, fleksibilan sustav reputacije i još mnogo toga.

Naravno, vBulletin ima veliki broj dodataka i korisničkih zajednica, tako da neće biti problema s održavanjem, pogotovo jer postoji službeni tim za podršku. Mana vBulletina, iako ne baš velika, jesu plaćeni dodaci, primjerice, za blogove korisnika.

Uglavnom, forum nema nedostataka. Može se preporučiti za velike ozbiljne projekte upravo zbog svoje pouzdanosti i otpornosti na sve vrste napada. Kao rezultat toga, stvara značajno opterećenje na poslužitelju, pogotovo s instaliranim dodacima, ali za ozbiljne projekte obično koriste ozbiljne poslužitelje i ozbiljne administratore.

Svaki motor zahtijeva određene radnje kako bi se optimizirao za bolje i brže performanse. U našem slučaju, govorit ćemo o optimizaciji Vbulletina 4.

Budući da se naš forumski mehanizam stalno ažurira, neću pisati o optimizaciji ranijih verzija Vbulletina, već ću početi s verzijom 4.1.12. Iako ću možda postupno nadopunjavati ovaj članak optimizacijom za prethodne verzije, jer ne prelaze svi na novije.

Ovdje ću dati neke primjere kako bi vaš Vbulletin forum bio brži i bolji (počevši od najjednostavnijih stvari pa prijeći na one složenije). Imajte na umu da ono što meni odgovara, neće nužno odgovarati i vama. Stoga, sve promjene radite na vlastitu odgovornost i rizik.

Onemogućivanje popisa korisnika.

Postoji jednostavan način da jednostavno onemogućite značajku u AdminCP-u. (Postavke -> Opcije -> Opcije popisa korisnika)

Ovo nije globalno, naravno, i možete to preskočiti i ne raditi, samo se zapitajte treba li vam to? Budući da imaju popis, korisnici ga mogu sortirati, vidjeti tko ima više poruka, reputaciju i tako dalje. Koriste li ovo vaši korisnici? Vjerojatno ne... kada ste zadnji put koristili ovaj popis?

Što se mene tiče, čini mi se da ovi popisi idu samo u korist spamerima, jer je to najlakši način da se prikupe sva imena sudionika Vbulletin 4 foruma za slanje spama u privatnim porukama.

Osim toga, upit potreban za generiranje popisa korisnika je užasan za poslužitelje baza podataka i može dovesti do velikog opterećenja poslužitelja.

Povećana brzina prilikom obrade popisa osobnih poruka.

Ako nikada niste uvozili privatne poruke iz vanjskih izvora koristeći Impex ili neki drugi način, možete se sigurno osloniti na sortiranje ID-a za privatne poruke. Sortiranje po ID-u će učiniti tako da vaš poslužitelj baze podataka ne mora ispuštati privatne poruke u privremenu tablicu da bi izvršio sortiranje (čime je upit puno brži).

Da biste to učinili, trebate registrirati mali modul s lokacijom u private_messagelist_filter i u njega napisati sljedeće:

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

I to je to, upravo ste private.php učinili ~20% bržim.


Postavili smo učinkovitiju pretragu najnovijih poruka korisnika.

Idemo na FTP, tražimo datoteku koja uključuje /class_userprofile.php i zamijenimo podatke u njoj na sljedeći način, tražimo:

$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 . "nit KAO nit USING (threadid) WHERE thread.visible = 1 AND post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ORDER BY post.dateline DESC OGRANIČENJE 20 ");

i zamijenite ga ovim (točnije 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 . "nit KAO nit USING (threadid) WHERE thread.visible = 1 AND post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ORDER BY post.postid DESC OGRANIČENJE 20 ");

Ovo čini zahtjev malo ispravnijim nego što već jest. Na taj način nećete morati sortirati u privremenu tablicu. Za korisnike s više od 1000 poruka, početni zahtjev bi trajao oko 10 sekundi, u našem slučaju puno manje. To se prvenstveno odnosi na Vbulletin 4 korisnički profil za prikaz nedavnih objava.

Provjera indeksa tema.

Ako vaši forumi imaju zadani redoslijed sortiranja koji je postavljen bez promjena kao što smo mi učinili gore, provjerite nalaze li se svi vaši indeksi u njihovim tablicama. Bilo je slučajeva da su se indeksi preklapali iz meni nepoznatih razloga i da se neki forumi nisu otvarali.

Predlažem da zadano razvrstavanje bude u obliku datuma (stupac koji koristi te podatke naziva se "datumska linija"), a da bismo to implementirali, pokrenimo upit:

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

Ovaj zahtjev se posebno odnosi na mene, u vašem slučaju forumid2_dp bi trebao imati vaše ime. Koristite na vlastitu odgovornost.

Budite oprezni kada instalirate dodatke.

Samo zato što netko izrađuje module i hakira ne znači da su napravljeni samo za vas, da su radili na velikim Vbulletin 4 forumima i da su bez grešaka. Izvrstan primjer su izvješća o masovnim hakiranja putem jednog ili drugog hakiranja.

Naravno, možemo pretpostaviti da programeri ne mogu uzeti sve u obzir, i prosijati sve hakove kako ne bi bili u sukobu, ali... Provjerite da Vbulletin modul ne uzrokuje velika opterećenja baze podataka, provjerite da hak ima potencijal za zaštitu od SQL injekcija ili XSS-a. Nažalost, postoje tisuće aplikacija i modifikacija i jednostavno nije moguće sve provjeriti. Bit će bolje ako sami napišete sve hakove ili ih naručite od nekog drugog. Posebno prilagođen vama i vašim zadacima.

Nemojte koristiti tablice u InnoDB-u.

Ovdje mi, naravno, mogu pljunuti u lice, jer je ova tema već milijun puta raspravljena, ali iz vlastitog iskustva mogu reći da radim 100% na MyISAM tablicama za bilo koju akciju. Ponekad obradim 1000 zahtjeva u sekundi.

Ako već počinjete šiziti gdje sve visi tijekom upita, posebno u novom Vbulletin pretraživanju, promijenite InnoDB tablice u MyISAM. MyISAM brže odgovara na pojedinačne zahtjeve jer ne morate upravljati pojedinačnim zaključavanjem zapisa. InnoDB je općenito brži, ali samo zato što dopušta istovremeno izvođenje upita. Ako se vaši upiti već izvode brzo pod MyISAM-om, nema potrebe za prebacivanjem na InnoDB. IMHO.

Ocjena članka

0%

Ocjena

Korisnička ocijena: 0,35 (1 glasova)