Chladnokrevný vbulletin. Které fórum je lepší vBulletin nebo PunBB

Určitě jste viděli fóra na enginu vBulletin více než jednou. Fóra jako taková už nejsou na vrcholu módy, ale vBulletin je stále jedním z nejoblíbenějších enginů. V jeho nejnovější (páté) verzi bylo nalezeno několik zranitelností, které mohou velmi zničit život administrátora. V tomto článku vám ukážu, jak fungují.

Prvním problémem je nesprávné filtrování uživatelských dat. Oznámil to nezávislý bezpečnostní výzkumník, který si přál zůstat v anonymitě. Tato chyba zabezpečení, i když má určitá omezení, získala status kritické, protože umožňuje číst libovolné soubory a spouštět libovolný kód v cílovém systému.

Druhá zranitelnost byla nalezena výzkumníky z TRUEL IT a obdržela identifikátor CVE-2017-17672. Souvisí s funkcemi deserializace dat v enginu a může být použit útočníkem k odstranění libovolných souborů v systému.

Úplné zprávy s podrobnostmi o obou problémech byly zveřejněny jako součást programu Beyond Security společnosti SecuriTeam. Existují také exploity PoC, které demonstrují zranitelnosti. Pojďme si to všechno projít popořadě.

přípravky

Jako server jsem použil distribuci WAMP.

Čtení souborů, provádění příkazů

Důvodem první zranitelnosti je tedy nesprávná logika při zpracování parametru routesstring, který umožňuje útočníkovi přidat libovolný soubor na disk prostřednictvím include a spustit PHP kód, který se v něm nachází.

Naše cesta začíná tím nejdůležitějším souborem – index.php, kde probíhá základní inicializace aplikace.

/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();

Podívejme se na metodu vB5_Frontend_Application::init.

/includes/vb5/frontend/application.php
13: třída vB5_Frontend_Application rozšiřuje vB5_ApplicationAbstract 14: ( 15: veřejná statická funkce init($configFile) 16: ( 17: parent::init($configFile); 18: 19: self::$instance = new vB5_Frontend_Application(2); self::$instance->router = new vB5_Frontend_Routing(); 21: self::$instance->router->setRoutes();

Zde nás zajímá metoda setRoutes.

47: veřejná funkce setRoutes() 48: ( 49: $this->processQueryString(); ... 54: if (isset($_GET["routestring"])) 55: ( 56: $cesta = $_GET[" routestring"];

Proměnná $path získá hodnotu userdata z parametru routestring. Můžete do něj předat cestu ke stránce fóra a ta se načte.



Řekněme, že jsme prošli /test .

Po přiřazení proměnné následuje kus kódu, který se zbaví lomítka na začátku řádku, pokud je přítomno.

/includes/vb5/frontend/routing.php
75: if (strlen($cesta) AND $cesta(0) == "/") 76: ( 77: $cesta = substr($cesta, 1); // $cesta = "test" 78: )
zahrnuje\vb5\frontend\routing.php
83: if (strlen($cesta) > 2) 84: ( 85: $ext = strtolower(substr($cesta, -4)) ; 86: if (($ext == ".gif") NEBO ($ext == ".png") OR ($ext == ".jpg") OR ($ext == ".css") 87: OR (strtolower(substr($cesta, -3)) == ".js" )) 88: ( 89: header("HTTP/1.0 404 Not Found"); 90: die(""); 91: ) 92: )

Jak vidíte, kontrola je poněkud zvláštní. Přinejmenším matoucí je přítomnost seznamu zakázaných rozšíření všitých přímo do kódu. A obecně už samotný fakt, že rozšíření se získá vyříznutím čtyř znaků z konce řádku (řádek 85), je záhadný. Obecně platí, že pokud se pokusíme získat soubor s příponami gif, png, jsp, css nebo js, ​​server vrátí stránku 404 a skript se zastaví. Když projdou všechny kontroly, zavolá se metoda getRoute ze třídy vB_Api_Route pomocí callApi . Vyhledává vhodné trasy na základě informací poskytnutých uživatelem.

Pokračování dostupné pouze pro členy

Možnost 1. Připojte se ke komunitě „stránky“ a přečtěte si všechny materiály na stránce

Členství v komunitě během stanoveného období vám umožní přístup ke VŠEM materiálům Hacker, zvýší vaši osobní kumulativní slevu a umožní vám nashromáždit profesionální hodnocení Xakep Score!

Pouze pro informační účely. Správa nenese odpovědnost za její obsah. Stažení zdarma .


vBulletin Connect v5.3.3 je výkonný, škálovatelný a plně přizpůsobitelný balíček fóra pro váš web.

Verze: 5.3.3 (vynulováno vBSupport.org)

Minimální požadavky php 5.6
Kompatibilita s php 7.1
Při nové instalaci musíte přejmenovat soubor htaccess.txt na .htaccess
Při aktualizaci smažte složku písem (před zahájením aktualizace).

Nové příležitosti:
Nové uživatelské rozhraní s rozsáhlou sociální integrací;
Optimalizováno pro mobilní zařízení;
Zjednodušená instalace, správa a konfigurace;
Nová architektura databáze pro lepší vyhledávání a lepší výkon;
Pohodlná dynamická změna obsahu;
Rozšířeno pro sdílení videa a obrázků;
Plná integrace s VigLink;
Více než 100 dalších nových funkcí a vylepšení;

Vestavěné aplikace:
Diskuzní fórum
Skupiny
Ankety
Blog

Optimalizace pro vyhledávače:
SEO Friendly URL
Vlastní META tag klíčového slova/popisu

Flexibilita:
Rozšiřitelné uživatelské profily
přepisování URL
Lokalizace rozhraní
metadata

Standardy shody:
Syndikovat obsah (RSS)
Syndikace obsahu: RSS, Atom, XML
kompatibilní s PHP v5.4

Nerozbitný integrovaný systém:
Zahrnuje jediné přihlášení
Jediný systém povolení
Jediný administrátorský ovládací panel
Vytvořte nepřetržitý styl/téma prostřednictvím článků, blogů, fóra

Ovládací panely pro každou roli:
Administrativní kontroly
Ovládací panel moderátora
Uživatelský ovládací panel
Společný systém povolení
Motor šablony Power pro pokročilé přizpůsobení

Uživatelské ovládání:
Víceuživatelský systém s neomezenými rolemi a pravomocemi
Zapojené skupiny
Bezpečnostní
Granulované síly
Upozornění na problém
Kompatibilní SSL
captcha
Potvrzení e-mailu
Administrátorský editor zpráv ovládacího panelu
Přihlašovací "strike" systém
Změny e-mailu a hesla vyžadují aktuální heslo
Kompatibilní se zákonem o ochraně soukromí dětí online (COPPA) z roku 1998

1. Přejděte do ovládacího panelu správce:
Jazyky a fráze – jazyky ke stažení/nahrání.
2. Do pole „BUĎ nahrajte soubor XML z vašeho počítače“ zadejte cestu k
vbulletin-language_ru.xml na vašem počítači.
3. V možnosti „Přepsat jazyk“ vyberte „Vytvořit nový jazyk“
4. Do pole „Název pro nahraný jazyk“ zadejte název jazyka.
V případě absence zadaných údajů se jazyk bude nazývat „ruština (RU)“
5. Nastavte "Ano" na "Ignorovat jazykovou verzi"
6. Nastavte "Ano" na "Číst znakovou sadu ze souboru XML"
7. Klikněte na tlačítko "Importovat" a počkejte na dokončení procesu stahování.
7A V případě potřeby můžete nový jazyk nastavit jako „Výchozí“ jazyk,
kliknutím na tlačítko "Výchozí" vedle něj.





  • Z:
  • Registrovaný: 2014.07.07
  • Příspěvky: 3,825
  • Mám rád PunBB:
  • 5 roky, 8 měsíce, 20 dny,
  • Líbí se: 480

Téma: Které fórum je lepší vBulletin nebo PunBB

VBulletin (Vobla nebo Bulka, jak mu rádi říkáme) je jedním z nejstarších komerčních fór napsaných pomocí technologií PHP a MySQL. Od vydání úplně první verze v roce 2000 byla vykonána obrovská práce na vylepšení funkčnosti, což umožnilo VB dostat se do seznamu nejlepších softwarových produktů.

Licence VBulletin vás bude stát kolem 250 $. Neváhejte, je to zcela oprávněné plýtvání a jistě se vám vyplatí úsporou pracovního času a nervových buněk. Většina těchto peněz jde vývojářům a programátorům, kteří je později použijí na dolaďování funkčnosti a vydávání záplat a doplňků (ano, všechny aktualizace vám budou během roku doručovány zdarma).

2 Odpovědět od PunBB

  • Z: Moskva, Sovchoznay 3, apt. 98
  • Registrovaný: 2014.07.07
  • Příspěvky: 3,825
  • Mám rád PunBB:
  • 5 roky, 8 měsíce, 20 dny,
  • Líbí se: 480

Nemá smysl vyjmenovávat všechny funkce VBulletinu. Implementovali téměř vše, co by správci fóra mohli potřebovat. Podcasting, podpora multiquoting, rozdělení do sociálních skupin a komunit, systém hodnocení (reputace). Základní balíček lze doplnit o rozšíření třetích stran.

Modul fóra VBulletin vytváří vážné zatížení serveru, zejména pokud jsou nainstalovány doplňky a skripty třetích stran. Abyste se v budoucnu vyhnuli problémům s načítáním stránek, budete se muset rozdělit na normální hosting. Zvláště pokud předpovídáte v budoucnu velký provoz vašeho zdroje.

3 Odpovědět od PunBB

  • Z: Moskva, Sovchoznay 3, apt. 98
  • Registrovaný: 2014.07.07
  • Příspěvky: 3,825
  • Mám rád PunBB:
  • 5 roky, 8 měsíce, 20 dny,
  • Líbí se: 480

Re: Které fórum je lepší vBulletin nebo PunBB

VBulletin se vzhledem ke své extrémní odolnosti vůči hackingu a spamovacím robotům doporučuje pro použití ve velkých seriózních projektech. Kromě toho lze výchozí nastavení a konfigurační soubory snadno změnit podle vlastního vkusu a dosáhnout tak ještě většího efektu. Na internetu je mnoho návodů a návodů od řemeslníků, i když ne všem by se mělo věřit.

VBulletin, implementuje rozsáhlé nápady nejlepším možným způsobem. Neustálé aktualizace, vysoce kvalitní služby, další rozšíření a spolehlivé bezpečnostní mechanismy - to vše plně ospravedlňuje peníze vynaložené na produkt.

4 Odpovědět od PunBB

  • Z: Moskva, Sovchoznay 3, apt. 98
  • Registrovaný: 2014.07.07
  • Příspěvky: 3,825
  • Mám rád PunBB:
  • 5 roky, 8 měsíce, 20 dny,
  • Líbí se: 480

Re: Které fórum je lepší vBulletin nebo PunBB

Nemá smysl vypisovat všechny funkce - implementuje (nebo v dodatcích) téměř vše, co může administrátor potřebovat k vytvoření fóra. K dispozici je také multiquoting a podpora pro podcasting, uživatelské komunity a sociální skupiny, flexibilní systém reputace a mnoho dalšího.

VBulletin má samozřejmě velké množství doplňků a uživatelských komunit, takže nebudou žádné problémy s údržbou, zvláště když existuje oficiální služba podpory. Nevýhodou vBulletinu, i když nepříliš velkou, jsou placené doplňky například pro uživatelské blogy.

Celkově fórum nemá žádné nedostatky. Lze jej doporučit pro velké seriózní projekty právě pro jeho spolehlivost a odolnost vůči všem druhům útoků. Výsledkem je značné zatížení serveru, zejména s nainstalovanými doplňky, ale pro seriózní projekty se obvykle používají seriózní servery a seriózní správci.

Každý motor vyžaduje určité akce k optimalizaci pro lepší a rychlejší výkon. V našem případě budeme hovořit o optimalizaci Vbulletin 4.

Vzhledem k tomu, že engine našeho fóra je neustále aktualizován, nebudu psát o optimalizaci dřívějších verzí Vbulletinu, ale začnu verzí 4.1.12. I když je to možné, postupně budu tento článek doplňovat o optimalizace pro předchozí verze, jelikož ne každý přechází na novější.

Zde uvedu několik příkladů, aby bylo vaše fórum Vbulletin rychlejší a lepší (začínaje nejjednoduššími věcmi a přecházím ke složitějším). Mějte prosím na paměti, že věci, které fungují mně, nemusí nutně fungovat vám. Veškeré změny proto provádíte na vlastní nebezpečí a riziko.

Zakázat seznam uživatelů.

Existuje jednoduchý způsob, stačí tuto funkci deaktivovat v AdminCP. (Nastavení -> Možnosti -> Možnosti seznamu uživatelů)

Není to samozřejmě globální a můžete to přeskočit a nedělat to, jen se sami sebe zeptejte, zda to potřebujete? Vzhledem k tomu, že mají seznam, uživatelé jej mohou třídit, vidět, kdo má více zpráv, pověst a tak dále. Používají to vaši uživatelé? Pravděpodobně ne… kdy jste tento seznam naposledy použili?

Pokud jde o mě, zdá se mi, že tyto seznamy jsou pouze ve prospěch spammerů, protože je to nejjednodušší způsob, jak shromáždit všechna jména členů fóra Vbulletin 4 pro spamování v soukromých zprávách.

Dotaz, který je nutný pro vygenerování seznamu uživatelů, je navíc pro databázové servery hrozný a může vést k velkému zatížení serveru.

Zvýšená rychlost při zpracování seznamu soukromých zpráv.

Pokud jste nikdy neimportovali soukromé zprávy z externích zdrojů pomocí Impexu nebo jiných prostředků, můžete se u soukromých zpráv bezpečně spolehnout na třídění podle ID. Řazení podle ID zajistí, že váš databázový server nebude muset kvůli třídění ukládat soukromé zprávy do dočasné tabulky (dotaz je mnohem rychlejší).

Chcete-li to provést, musíte napsat malý modul s umístěním v private_messagelist_filter a napsat do něj následující:

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

A je to, právě jste zrychlili private.php o ~20 %.


Nakonfigurujeme efektivnější vyhledávání nejnovějších zpráv od uživatele.

Přejdeme na ftp, vyhledáme soubor include / class_userprofile.php a nahradíme data v něm následovně:

$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 PŘIPOJTE SE " . TABLE_PREFIX . "vlákno JAKO vlákno USING (threadid) WHERE thread.visible = 1 AND post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ORDER BY post.dateline DESC LIMIT 20");

a nahraďte jej tímto (konkrétněji OBJEDNAT PODLE):

$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 PŘIPOJTE SE " . TABLE_PREFIX . "vlákno JAKO vlákno USING (threadid) WHERE thread.visible = 1 AND post.userid = " . $this->userinfo["userid"] . " AND post.visible = 1 ORDER BY post.postid DESC LIMIT 20");

Díky tomu je dotaz o něco přesnější, než je aktuálně. Nemusíte tedy třídit do dočasné tabulky. Uživatelům, kteří mají více než 1000 zpráv, by počáteční požadavek trval asi 10 sekund, v našem případě mnohem méně. To se týká především uživatelského profilu Vbulletin 4 pro zobrazení nejnovějších příspěvků.

Kontrola rejstříku témat.

Pokud mají vaše fóra výchozí pořadí řazení a jsou nastavena beze změny, jako jsme to udělali výše, ujistěte se, že všechny vaše indexy jsou v jejich tabulkách. byly případy, kdy se indexy z mně neznámých důvodů protnuly a některá fóra se neotevřela.

Můj návrh je nastavit výchozí řazení na datum (sloupec, který používá tato data, se nazývá „dateline“), a abychom to implementovali, spustíme dotaz:

ALTER TABLE vlákno ADD INDEX forumid2_dp (forumid, viditelný, lepivý, datová čára)

Tato žádost se týká konkrétně mě, ve vašem případě by forumid2_dp mělo být vaše jméno. Použití na vlastní nebezpečí.

Při instalaci doplňků buďte opatrní.

To, že někdo vyrábí moduly a hackuje, neznamená, že jsou vyrobeny jen pro vás, pracovali na velkých fórech Vbulletinu 4 a nemají chyby. Vynikajícím příkladem jsou zprávy o masivních hackech prostřednictvím toho či onoho hacku.

Samozřejmě se dá předpokládat, že vývojáři nemohou za všechno počítat a hodit všechny hacky tak, aby nebyly v konfliktu, ale... Ujistěte se, že modul Vbulletin nezpůsobuje velké zatížení databáze, ujistěte se, že hack má potenciál ochrany proti SQL injection nebo XSS . Aplikací a úprav jsou bohužel tisíce a zkontrolovat vše prostě není reálné. Bylo by lepší, kdybyste si všechny hacky sepsali sami, nebo si od někoho objednali. Konkrétně pro vás a vaše úkoly.

V InnoDB nepoužívejte tabulky.

Tady mi samozřejmě můžou naplivat do obličeje, když už tohle téma bylo probráno milionkrát, ale z vlastní zkušenosti můžu říct, že na tabulkách MyISAM pracuji na 100% na jakoukoliv akci. Někdy zpracuji 1000 požadavků za sekundu.

Pokud už začínáte šílet, kde všechno visí při dotazu, zejména v novém vyhledávání Vbulletin, změňte tabulky InnoDB v MyISAM. MyISAM reaguje rychleji na jednotlivé požadavky, protože není potřeba spravovat zamykání jednotlivých záznamů. InnoDB je obecně rychlejší, ale pouze proto, že umožňuje souběžné spouštění dotazů. pokud vaše dotazy již běží rychle pod MyISAM, není třeba přecházet na InnoDB. IMHO.

Hodnocení článku

0%

Hodnocení

uživatelské hodnocení: 0,35 (1 hlas)

Hlavní výhody:

  • Rychlá a efektivní databáze založená
  • Rozhraní šablony
  • Výkonný vyhledávač
  • Vícejazyčná podpora
  • Uživatelské profily
  • Výkonný a uživatelsky přívětivý administrátorský panel
  • Neomezený počet sekcí/témat/zpráv
  • Upozornění e-mailem
  • Podpora COPPA

Vzhledem k tomu, že výrobce neposkytuje demo na fóru, které lze nainstalovat, musel jsem nainstalovat levou verzi staženou z nějakého warezu. Pokyny tedy nemusí přesně odpovídat procesu instalace licencovaného fóra. Po instalaci byl web odstraněn a nebyl používán k zamýšlenému účelu.

Chcete-li nainstalovat vBulletin, přejděte na ovládací panel hostingu (tlačítko s ozubeným kolem vedle objednávky hostingu ve vyúčtování), přejděte do „Správce souborů“ a přejděte do adresáře „www“. Klikněte na tlačítko "Nahrát soubor do aktuálního adresáře":

Zadejte cestu k souboru v počítači:

Vyberte archiv s vBulletinem, rozbalte jej:

Smažeme soubory a adresáře, které nepotřebujeme, včetně adresáře naší www domény – za předpokladu, že tam nemáte nic, co potřebujete. Pokud jej nevložíte do kořenového adresáře webu nebo je v adresáři webu něco nezbytného, ​​nemusíte adresář www domény mazat:

Vyberte adresář s instalačním programem vBulletin, přejmenujte jej:

Jako název adresáře zadejte název našeho webu:

Přejděte do části "Databáze" ovládacího panelu hostingu:

Vytvořte novou databázi MySQL a uživatele s plnými přístupovými právy k ní:

Upozorňujeme, že uživatel i databáze mají automaticky předponu názvu vašeho účtu na hostitelském serveru:

Přejdeme na hlavní stránku našeho webu, zobrazí se následující chyba vBulletin:

Vjíždíme do cesty k instalačnímu programu v adresním řádku, musíte přidat „install / install.php“, poté se spustí instalační program fóra vBulletin:

Instalační program vBulletin zkontroluje soubory:

Dalším krokem je kontrola připojení k databázi, neprojde - protože Nesprávná data zadaná v konfiguračním souboru fóra:

Vrátíme se do ovládacího panelu hostingu, správce souborů, přejdeme do adresáře fóra, poté do podadresáře „includes“. Otevřete soubor "config.php":

Do konfiguračního souboru zadáme správná data z databáze, poté jej zavřeme:

Vrátíme se na stránku, k instalačnímu programu. stiskněte "F5", tentokrát je vše v pořádku, spojení se základnou se srostlo:

Instalační program vBulletin vytvoří tabulky v databázi:

Instalační program vBulletin mění typy některých tabulek:

Zadání údajů do databáze:

Importované jazyky:

Importují se styly:

Nápověda je importována:

Nedotýkáme se výchozího nastavení, instalační program vBulletin správně určil vše:

Importuje se výchozí nastavení:

Zadejte podrobnosti správce vBulletin:

Správce vBulletinu úspěšně přidal:

Instalace vBulletinu na hosting úspěšně dokončena:

Podle poslední rady instalačního programu odstraňte nepotřebné soubory:

Můžete přejít na fórum vBulletin, abyste se ujistili, že vše funguje správně: