• Pozorování vBulletinu nebo pokusy o ukládání dynamického obsahu do mezipaměti. Pozorování vBulletinu nebo pokusy o ukládání dynamického obsahu do mezipaměti Opatrný vbulletin

    Pokud provozujete své vlastní fórum vbulletin, pak dříve nebo později budete muset myslet na ochranu svého fóra. Začněme:

    1) Pojďme aktualizovat až na úplný konec našeho řádku (3.5.x, 3.6.x, 3.7.x)

    Popis: -
    Proč?: JelSoft neustále uzavírá vznikající zranitelnosti.

    2) Přejmenujte panely pro správu a moderování

    Popis: Přejmenujeme admin panel, ale v konfiguraci za žádných okolností nepíšeme cestu k našemu přejmenovanému admin panelu. Mod také přejmenujeme, ale lze jej již zaregistrovat v konfiguraci (i když to také není vhodné), protože je méně zranitelný
    Proč?: Pokud přejmenujete admin panel a neuvedete cestu v konfiguraci, bude mnohem obtížnější jej najít a tedy aplikovat XSS nebo horší. Existují nevýhody: - úprava profilu a přidávání moderátorů přestane fungovat bez ruční úpravy odkazů.

    3) Umístěte .htaccess na panel administrátora:

    Popis:
    a) pokud je ip statická, pak
    Kód:

    Objednávka povolit, odmítnout odmítnout od všech povolit od you.ip.add.res

    b) Nastavíme také další heslo:
    Klikněte na odkaz: _http://vbsupport.org/htaccess.php, vyplňte pole a přidejte podle pokynů do našeho souboru htaccess.
    Proč?: Dodatečná ochrana heslem pro administrátorský panel nikdy neuškodí.

    4) Odstraňte soubory a složky:

    Popis:
    a) Smazat soubory:
    /validator.php (pokud je k dispozici)
    /checksum.md5 (pokud je k dispozici)
    b) Odstraňte složky:
    /Nainstalujte/
    Proč?: Nebezpečné soubory z nulových verzí mohou umožnit zobrazení seznamu souborů a instalační složka je velmi škodlivá =)

    5) Přesunout přílohy a avatary

    Popis:
    Přejděte na panel správce a poté:
    a) Přílohy -> Způsob uložení příloh
    Přílohy musí být uloženy v databázi
    Citát:
    Přílohy jsou nyní uloženy v databázi
    , pokud tomu tak není, přesuňte je tam pomocí tlačítka „Vpřed“.
    b) Avatary -> Typ úložiště uživatelských obrázků
    Avatary musí být uloženy v databázi
    Citát:

    Nyní jsou snímky uloženy v databázi, pokud tomu tak není, přeneseme je tam pomocí tlačítka „Vpřed“.

    Proč?: Řádek 3.5, pokud mě paměť neklame, dával přímé odkazy na obrázky, které, pokud byla konfigurace hostingu nesprávná, dávaly šanci nahrát přes něj shell.
    6) Nastavte oprávnění ke složkám
    Popis: Pokud byl dokončen krok 5), nyní můžeme bezpečně nastavit oprávnění pro vlastní ***** složky na 644, protože je nyní nepotřebujeme (nebo je můžete odstranit). Dále, pokud jste nainstalovali vbulletin podle pokynů, všechny složky v / (root) by měly mít oprávnění 644. Zaškrtněte toto, pokud ne, nastavte oprávnění na 644.
    Proč?: Ztěžuje hackerům nahrání shellu.
    7) Nikdy, nikdy nikomu nepovolíme možnost „Povolit html“.
    Popis: -
    Proč?: Možnost XSS útoků, když je funkce povolena.

    8) Umístěte .htaccess do složky include

    Popis: Do složky include jsme vložili .htaccess s následujícím obsahem:

    Objednávka povolit, odepřít všem odepřít

    Proč?:
    - pokud je tam nějakým způsobem zaplavena skořápka, nebudou se k ní moci dostat.
    - pokud vás ddoss, pak je možné, že php interpret spadne a zůstane pouze Apache - a Apache vám umožní číst soubory php - proto bude možné číst všechny soubory ze složky /includes/ - stejná konfigurace .php, což není moc dobré.
    9) Zatlačte jej do dir. se soubory s atributy 0777 jako xtax: - (c) kerk _http://vbsupport.org/forum/member.php?u=30
    Popis:
    Kód:

    RemoveHandler .phtml RemoveHandler .php RemoveHandler .php3 RemoveHandler .php4 RemoveHandler .php5 RemoveHandler .cgi RemoveHandler .exe RemoveHandler .pl RemoveHandler .asp RemoveHandler .aspx RemoveHandler .shtml


    Objednávka povolit, zamítnout
    Ode všech popřít

    v případě potřeby přidejte své manipulátory
    to je vše, v tomto adresáři nelze spustit žádný z uvedených skriptů
    Proč?:-

    10) Nainstalujte hack: http://allcheats.ru/product-firewall_vb_rs.xml

    Popis:
    Importujte hack a vytvořte soubor: logfile_worms.txt s oprávněním k zápisu pro webový server (777)
    Proč?:-
    Ochrana před hromadou „špatných“ přiřazení k proměnným Přečtěte si více v příspěvku níže


    11) Upravte config.php, do pole undeletable user zadejte id administrátorů.

    Popis:
    /vb/includes/config.php. Po provedení všech nezbytných změn v profilu stačí zadat ID administrátorů.
    Proč?:-


    12) Po odstranění modů/hacků nezapomeňte smazat soubory, které jste si stáhli spolu s nimi.

    Popis: -
    Proč?:-


    13) Nikdy neukládejte zálohy do složky public_html.

    Popis: -
    Proč?: Budou k dispozici ke stažení každému, kdo zná název zálohy.

    14) Nainstalujte plugin "File Inspector". Autor – Ghost (http://www.vbsupport.org/forum/member.php?u=38422)
    Popis:

    Při procházení mých starých skriptů jsem narazil na tento produkt - File Inspector. Jedná se o několik modulů pro vBulletin, pomocí kterých můžete uložit seznam existujících souborů v databázi a čas od času zkontrolovat, zda se některý z nich nezměnil (u každého souboru je uložena velikost, vlastník a přístupová práva) - vestavěný cron task upozorní administrátora e-mailem na všechny nalezené nesrovnalosti. V databázi můžete uložit několik různých kopií (revizí) seznamů souborů pro porovnání (automatické ověřování s upozorněním na e-mail je kontrolováno pouze u poslední revize). Vzhled a dostupná nastavení lze vidět na snímcích obrazovky.

    INSTALACE: Pro instalaci je potřeba nahrát dva PHP soubory z archivu na server a importovat produkt ze souboru "product-gfi.xml".

    AKTUALIZACE: Aktualizace verze není poskytována, takže pro instalaci nové se doporučuje nejprve odinstalovat předchozí verzi.

    Z Y Produkt úspěšně fungoval na všech verzích od 3.6.8 do 3.8.1 včetně. Pravda, na různých místech byl přidán odkaz na rozbalovací nabídku v navigační liště, ale to jsou drobnosti.

    Kliknutím rozbalíte...

    Plugin si můžete stáhnout z odkazu: http://allcheats.ru/gfi.zip nebo http://www.vbsupport.org/forum/showthread.php?t=29131 (nutná registrace)

    Proč?: Nenahraditelná věc při hledání skořápek na webu, ale musí být nainstalována předem.

    ----------

    Krátké shrnutí:

    Je docela obtížné získat přístup k administračnímu panelu - proto můžete nahrát shell také přes admin panel, což znamená, že můžete nahrát shell přes zranitelnosti vola, ale pokud to nalijete do include - existují soubory pro některé hacky, které vyžadovat 777 - pak v naší složce include je odepřeno od všech - Nepoužívejte shell!
    a na zbylých složkách si můžete nastavit oprávnění na 644, pokud jste udělali všechny kroky - tak to bude docela těžké nahrávat, pokud je správně nakonfigurován chrooting (nebo jak se to jmenuje - to slovo vyletělo z mé ne úplně střízlivé hlavy )...
    Přidali jsme také ochranu před samotnými správci, kteří se plíží, aniž by se nikam dostali, a vystavují se tak XSS a trojským koním.
    (c) já

    Vyberte modul fóra. IPB, vBulletin, Phpbb


    Motor fóra je nezbytná věc pro seriózní web. Princip je dobře známý: každý web by měl být interaktivní. Existuje mnoho způsobů, jak dosáhnout interaktivity, od komentářů přes články až po vlastní tematickou sociální síť. Fórum je snad nejuniverzálnějším nástrojem pro skutečnou zpětnou vazbu od návštěvníků.

    Fórum vám umožňuje:

    Vytvořte stálé publikum uživatelů webu, kteří se budou neustále vracet a být aktivní. Aktivita návštěvníků jsou skutečné peníze.

    Úspora na obsahu. Pokud vytvoříte fórum, pak obsah vytvoří uživatelé a majitel nemusí kupovat velké množství textů pro propagaci.

    Rozšíření sémantického jádra webu. Vytvoření fóra umožňuje bez velkého úsilí ze strany vlastníka rozšířit počet požadavků, pro které je stránka propagována.

    Instalace enginu fóra je jednoduchý proces, ale nastavení a další administrace může začátečníkovi způsobit spoustu potíží. Ke každému oblíbenému enginu však existuje obrovské množství dokumentace, takže pokud si přejete, můžete všemu porozumět. Nebo si najměte profesionálního správce.

    Celkově je naprostá většina motorů docela vhodná pro běžný provoz fóra, mají přibližně stejnou sadu základních funkcí, včetně flexibilního systému pro nastavení přístupových práv pro uživatele. Liší se snadností administrace, sadou šablon a pluginů, spolehlivostí a technickou podporou ze strany výrobce. Recenzi začnu třemi nejlepšími v Runetu: Phpbb je možná nejoblíbenější engine pro vytváření fóra na Runetu. Pro začátečníka je hlavní výhodou Phpbb to, že jak samotný engine fóra, tak všechny druhy doplňků jsou zdarma. Existuje také mnoho různých komunit fanoušků Phpbb, a to jak na rusky mluvícím, tak zahraničním internetu.

    Mezi další výhody patří rychlost ovládání, jednoduchost a relativní flexibilita nastavení, velké množství šablon a doplňků. Pokud uděláte fórum v phpbb, tak se dá použít jako součást webu (je zde možnost integrace s mnoha cms), ale můžete na něm udělat i víceméně plnohodnotný portál.

    Phpbb má ale také nevýhodu – je vysoce zranitelný jak vůči spamovým útokům, tak proti hackerům se zavedením vlastního kódu. Abyste tomu zabránili, musíte nainstalovat speciální doplňky na ochranu před spamem a také pravidelně aktualizovat motor instalací nových verzí. Bohužel to ne vždy poskytuje 100% ochranu, takže to budete muset sledovat ručně sami nebo určením moderátorů. Stáhnout si ho můžete na oficiálních stránkách https://www.phpbb.com/

    IPB (Invision Power Board) je placený engine fóra, který většinu začátečníků okamžitě vyděsí. Pokud je však projekt zamýšlen jako seriózní, pak částka kolem 200 $ pro IPB pravděpodobně nezastaví odhodlaného webmastera. Ale desetkrát si rozmyslete, zda jste připraveni, i kvůli velmi široké škále možností, neustále předělávat IPB engine pro sebe, s rizikem, že si zkomplikujete podporu a aktualizace.

    Systém má obrovské množství možností integrace s různými službami - různé cms, blogy, chaty, fotogalerie atd. Snad lze portál na tomto enginu považovat za zcela plnohodnotný web, samozřejmě s určitým nastavením.

    A tady je podstatná muška - IPB engine je aktualizován poměrně zřídka, samotní uživatelé fungují jako testeři, kteří sami nacházejí zranitelnosti a chyby. V každém případě je kód nakonec „křivý“ a neoptimální. Neexistují žádné kvalitní ruské fanouškovské komunity, všechny problémy budou muset být vyřešeny nezávisle. Ruské lokalizace mají k dokonalosti také daleko, jazykové soubory se pro normální zobrazení musí často upravovat.

    Kvůli složitosti a nesprávnosti kódu se fóra na IPB zobrazují správně pouze ve FireFoxu, v jiných prohlížečích mohou nastat drobné problémy.

    Problém může nastat i při upgradu z druhé na třetí verzi – změnila se struktura skinů a tříd a pokud bylo upraveno fórum, bude upgrade problematický.

    Šablonový systém IPB je extrémně nepřehledný, změna vzhledu není tak snadná, budete muset „prostrčit“ spoustu souborů. Standardní provedení není špatné a docela známé – je však standardní, což samo o sobě může být pro mnohé značnou nevýhodou. Invision Power Board si můžete stáhnout na oficiálních stránkách http://www.invisionpower.com/apps/board/
    vBulletin (vb). V rusky mluvícím segmentu internetu se vBulletin tradičně nazývá „vobla“ nebo „bun“. Toto je možná nejlepší engine fóra, není co dodat. Cena cca 250 $ (licence se kupuje na rok a zahrnuje bezplatné aktualizace po tuto dobu) je zcela oprávněná a jistě se vyplatí v úspoře času a nervů. Všechno tady funguje jako hodinky. Proč se ty peníze berou, je celkem jasné – engine vBulletin se neustále vylepšuje a je vidět, že na něm pracují profesionální programátoři a nejen fanoušci.

    Nemá smysl vypisovat všechny funkce - on (nebo jeho doplňky) implementuje téměř vše, co může správce potřebovat k vytvoření fóra. Nechybí multi-citace, podpora podcastingu, uživatelské komunity, 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 s údržbou nebudou žádné problémy, zvlášť když existuje oficiální tým podpory. Nevýhodou vBulletinu, i když není příliš velká, jsou placené přídavky 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 obvykle používají seriózní servery a seriózní správci. Stáhnout si jej můžete na oficiálních stránkách http://www.vbulletin.com/

    SMF (Simple Machines Forum). Jednoduchý motor, který zvládne každý začátečník. Jednoduchost je kompenzována nedostatkem funkčnosti, ale ne každý potřebuje celou sadu „triků“. Instalace zásuvných modulů (modů) je pohodlně organizována v enginu, lze je stáhnout a nainstalovat přímo z administračního panelu několika kliknutími.

    Administrativní panel je poněkud nezvyklý, ale pro začátečníka to není nevýhoda, protože nemá zkušenosti ani návyky s jinými motory. Neznalost neznamená nepohodlí. Další výhodou je přítomnost velkého množství měničů pro přepínání z jiných motorů.

    Fórum je velmi spolehlivé, co se hackování týče, a spamu... no, spam je věčný problém, se kterým je potřeba a lze s ním bojovat. Navzdory skutečnosti, že SMF je zdarma, vývojáři a zkušení uživatelé poskytují pomoc všem v nouzi na oficiálním fóru projektu.

    Na základě tohoto enginu lze také vytvářet plnohodnotné weby pomocí speciálních doplňků pro portály (Adk Portal, EzPortal atd.) Velkou otázkou však je, zda se vyplatí dělat portál založený na fóru. Logičtější je udělat fórum jako doplněk k hlavnímu webu na plnohodnotném enginu.

    Intellect Board (IntBoard). Motor fóra pro fanoušky, napsaný fanouškem a jím úspěšně opuštěný. Opuštění však není důvodem k tomu, abychom to kategoricky nedoporučovali.

    Promluvme si hned o nedostatcích. Problémy často vznikají zčistajasna, chybí velká podpora, oficiální fórum je prakticky mrtvé a majitelé fór na tomto enginu se tam ozývají jen zřídka. Prakticky neexistují žádné doplňky ani šablony – vše si musíte udělat sami.

    Ale jsou tu i výhody. Kód motoru je natolik jednoduchý, že na něj může přijít i začátečník a sám opravit některé problémy a také upravit některé funkce pro sebe. Motor je velmi lehký a server nezatěžuje. Administrátorský panel je extrémně nestandardní, ale má možná nejlepší příležitost ke konfiguraci práv pro uživatele; systém skupin a přístupových práv ke každé konkrétní sekci vám umožní vytvořit výkonný a efektivní systém moderování.

    PunBB. Jednoduchý, lehký engine s poměrně výkonnou komunitou, která pomůže vyřešit problémy, které se objeví. Nenáročné na zdroje serveru. Administrační panel je intuitivní.

    Rozvržení je vytvořeno pomocí CSS, takže pro začátečníky, kteří jsou zvyklí na rozvržení tabulky, bude neobvyklé upravovat šablony. To je však také plus - je čas zvládnout moderní technologie.

    Vážným nedostatkem je vysoká dostupnost pro spam – to je potřeba kromě nainstalovaných pluginů hlídat i ručně.

    ExBB je bezplatný engine, jehož zvláštností je, že pracuje s textovými databázemi bez použití MySQL. Možná před 10 lety to byla výhoda - takové stránky vytvářely menší zátěž a hosting s podporou databáze byl mnohem dražší. V dnešní době každý hosting podporuje MySQL a nevýhodou jsou textové databáze; jsou mnohem pomalejší a méně spolehlivé.

    Můžete však vytvořit fórum pomocí tohoto cms pro malý web, kde se neočekává velký příliv návštěvníků a zpráv. Snadno se instaluje, snadno se udržuje a má velký počet uživatelů a fórum podpory na oficiálních stránkách.

    Vanilla – tento málo známý engine je umístěn jako doplněk k Wordpressu, jednomu z nejoblíbenějších cms. Mezi standardní funkce WordPressu není možnost vytvoření fóra. Samozřejmě si můžete přizpůsobit jakýkoli engine fóra, ale není to tak snadné. Vanilla se instaluje jako běžný plugin.

    Systém osobních zpráv je implementován neobvyklým způsobem - jsou zveřejňovány jako běžná témata, ale jsou viditelné pouze pro toho, komu jsou určeny. V jakémkoli tématu, kromě toho veřejného, ​​můžete zanechat osobní vzkaz. Neobvyklé, ale docela pohodlné. Obecně se zdá, že se vývojáři rozhodli vytvořit fórum na rozdíl od všech ostatních. Zda je to plus nebo mínus, je na vás.

    Obecně existuje spousta motorů - můžete vyzkoušet, můžete se okamžitě spokojit s něčím oblíbeným, můžete dokonce napsat nebo objednat něco vlastního. Nelze jednoznačně říci, která možnost bude pro každý konkrétní případ optimální.

    Správa takovýchto služeb většinou za nic nenese odpovědnost, takže pokud vaše fórum v nějakém nádherném okamžiku zmizí, v nejlepším případě se omluví.

    V příštím článku vám řeknu, co tam je

    Mám na starosti několik VPS, na kterých se točí... obecně to není moje oblast odpovědnosti, a proto to, co se tam točí, se točí, mírně zpomaluje, středně funguje. A ukázalo se, že na jednom z nich běží jisté fórum a fórum se začalo zpomalovat. A chtěl jsem na to přijít...

    Zdroj
    • Fórum pro vBulletin 3.8.x
    • Přesunuto na subdoménu forum.domain.com
    • Nginx 1.1.13, php 5.3.x (fpm)
    • Kromě fóra na tomto serveru nic neběží. ( to je důležité).
    • Mysql na samostatném serveru, komunikace přes TCP/IP.
    Pozadí
    Žil jsem pro sebe na fóru, neobtěžoval jsem se, ukazoval xm nahoře zatížení se pohybuje kolem 30-40 procent. A pak přišla hodina „X“ a zatížení vyskočilo na rovnou plošinu 90 procent s vyššími špičkami, což obecně není bzučení. Podezření na DDOS se nepotvrdilo. Protokoly ukazovaly normální pracovní vytížení. Před hloupým navyšováním zdrojů vznikl nápad pochopit, co se děje, a pokusit se ukládat do mezipaměti vše, co bylo možné.
    Vyšetřování. Část první – co si přeje návštěvnice?
    Protože jsem nebyl obeznámen s ideologií a funkcemi tohoto softwaru, začal jsem problém studovat analýzou protokolů a provozu mezi návštěvníky a serverem. Za prvé mě překvapilo zjištění, že přílohy zpráv ve fóru jsou dány výhradně skriptem příloha.php, přičemž samotné soubory mohou být uloženy v databázi, případně na lokálním disku, ale návrat je pouze přes skript. A nic jiného. To znamená, že dostaneme 8-10 dalších záškubů PHP interpretu na vlákno zprávy s 8-10 fotografiemi. A to je pro každého návštěvníka. Vzhledem k tomu, že pro prohlížení příloh není nutná registrace na tomto fóru, mohou být přílohy uloženy do mezipaměti, řekněme, několik dní. Něco takového:
    location = /attachment.php (vyprší max.; limit_req zone=lim_req_1s_zone burst=5; fastcgi_pass forum__php_cluster; include /etc/nginx/fastcgi_params; include /etc/nginx/fastcgi_params_php-fpm; CFC Cookie ; fastcgi_hide_header Set-Cookie; fastcgi_hide_header Pragma; fastcgi_cache_key "$request_method:$http_if_modified_since:$http_if_none_match:$host:$request_uri:"; fastcgi_cache_use_stale_che_chyba rychlé aktualizace http při vypršení časového limitu rychlé aktualizace_rychlé_cache_gig_cche50 timeout 2m; fastcgi_cache_valid 2d; ) a někde v sekcích http deklarovat forum_att__cache: fastcgi_cache_path /var/cache/nginx/att levels=1:2 keys_zone=forum_att__cache:4m max_size=2g inactive=2d;

    Druhým „odhalením“ pro mě bylo, že na fóru jsou archivy a nejenže existují, ale téměř polovina žádostí pochází právě z nich. Vzhled stránek také umožňuje uložení jejich obsahu do mezipaměti:
    umístění /archive/ (vyprší 10d; limit_req zone=lim_req_1s_zone burst=2; umístění ~ \.css$ (vyprší max; ) fastcgi_pass forum__php_cluster; fastcgi_index index.php; zahrnout /etc/nginx/fastcgi_params; zahrnout /etcmfastsphp_nginx -fpm; fastcgi_param SCRIPT_FILENAME $document_root/archive/index.php; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_cache forum_arc__cache; fastcgi_hide_header Set-Cookie; fastcgi_ignore_header Set-Cookie $metcgi_ignore_headers Set-Cookie$; _if_modified_since:$http_if_none_match:$host: $request_uri:"; timeout chyby aktualizace fastcgi_cache_use_stale invalid_header http_500; fastcgi_cache_valid 2d; ) a do sekce http: fastcgi_cache_path /var/cache/nginx/arc levels=1:2 keys_zone=forum_arc__cache:2dg max; Zároveň se chraňme před DDOS útoky: limit_req_zone "$psUID" zone=lim_req_1s_zone:2m rate=1r/s;
    O vytvoření klíče „$psUID“ vám povím později.

    Vyšetřování. Část druhá - autorizace ve vBulletinu
    Z pohledu návštěvníka fóra může být návštěvníkem buď registrovaný uživatel, nebo host. Zcela jiná situace se ale vyvíjí, pokud situaci „přišel, šel, přihlásil se, šel, odhlásil, šel“ sledujeme z pohledu výskytu a mizení cookies v prohlížeči. Takže vymažte soubory cookie pro doménu a její subdomény, otevřete HTTPfox a uvidíte, co se stane:
    HTTP/1.1 200 OK Set-Cookie: PHPSESSID=cdme9rrptft67tbo97p4t1cua5; expires=St, 22-Feb-2012 15:04:12 GMT; cesta=/; domain=.domain.com Set-Cookie: bblastvisit=1329059052; expires=Po, 11-Feb-2013 15:04:12 GMT; cesta=/; domain=.domain.com Set-Cookie: bblastactivity=0; expires=Po, 11-Feb-2013 15:04:12 GMT; cesta=/; domain=.domain.com Set-Cookie: uid=XCuiGU831OyC8VLqAx/QAg==; expires=Čt, 31-Prosinec-37 23:55:55 GMT; doména=.domena.com; cesta=/
    S uid A PHPSESSID vše je jasné - to jsou machinace nginx a php interpret s nainstalovanou možností session.auto_start, ale zbytek jsou monitory aktivity na fóru. Ale soubor cookie hlavní relace vBulletin dosud nebyl pozorován. Při pohledu do budoucna řeknu, že vBulletin nepoužívá standardní PHP relaci (přesněji ji TÉMĚŘ nepoužívá), ale udržuje si svou vlastní, jejíž identifikátor je uložen v cookie bbsessionhash. Uživatel se tedy přihlásil, ale neprobíhá žádná relace – to znamená, že je anonymní bez relace. V tomto případě mohou mít odkazy na fórum dva typy (to znamená všechny odkazy na stránce, nikoli jeden takový a druhý takový):
    forum.domain.com/forumdisplay.php?s=12b66e447be52ebc84ab16d3f39626fb&f=69
    forum.domain.com/forumdisplay.php?f=69
    A pokud budete následovat odkaz prvního typu, další odpovědí z fóra bude cookie relace, ale pokud budete následovat odkaz druhého typu, nebude. Pokud jste neobdrželi cookie z relace s druhou odpovědí, můžete se bez relací a neklidu potulovat po fóru, dokud nenarazíte na odkaz prvního typu (nepodařilo se mi zjistit vzorec jejich vzhledu), nebo se chcete přihlásit. Pokud je přihlášení úspěšné, cookie relace dorazí jakýmkoli způsobem. Pokud byl host před přihlášením anonymní s relací, bude mu tato relace nahrazena. Vypadá to takto:
    HTTP/1.1 200 OK Set-Cookie: bbsessionhash=85745bc6110db5221e159087bf037f24; cesta=/; doména=.domena.com; Pouze HTTP
    Po přihlášení je relace „stabilní“ a nedochází k žádnému přeskakování odkazů. Postup odhlášení se nijak neliší - všechny existující soubory cookie fóra jsou smazány (i ty, které nebyly nastaveny) a je zapsán soubor cookie nové (“anonymní”) relace:
    HTTP/1.1 200 OK Set-Cookie: bbsessionhash=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bblastvisit=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bblastactivity=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bbthread_lastview=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bbreferrerid=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bbuserid=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bbpassword=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bbthreadedmode=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bbstyleid=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bblanguageid=deleted; expires=Čt, 01-Jan-1970 00:00:01 GMT; cesta=/; domain=.domain.com Set-Cookie: bbsessionhash=3d0bdc5dbe8dabae361deebe8f6048d2; cesta=/; doména=.domena.com; Pouze HTTP
    To znamená, že na výstupu dostaneme anonyma (hosta), ale stoprocentně s relací.
    V důsledku toho z pohledu softwaru fóra A HTTP hlavičky máme tři typy uživatelů: host bez relace, host s relací, přihlášený návštěvník. Navíc na úrovni nginx je rozlišení druhého od třetího extrémně problematické.

    Nyní, když jste pochopili, které soubory cookie a jak cestují mezi návštěvníkem a serverem, můžete přistoupit k problému ukládání dynamického obsahu do mezipaměti. Jak víte, funkce pro ukládání odpovědí do mezipaměti z backendu fastcgi v nginx je zabudována do modulu ngx_http_fastcgi_module. Chcete-li to provést, musíte globálně zaregistrovat zónu mezipaměti v sekci http a klíč v požadovaném umístění. A pokud by pro podmíněně statický obsah (obrázky, archivy) mohl být klíč pro ukládání do mezipaměti považován za URI s drobnými dodatky, pak pro dynamiku ukládání do mezipaměti musíte také vzít v úvahu a uživatele.Vypadalo by to jako pravidlo
    fastcgi_cache_key "$request_method:$http_if_modified_since:$http_if_none_match:$host:$request_uri:$cookie_bbsessionhash:";
    mohl uspokojit hosty i přihlášené uživatele, ale v praxi se návštěvníkům začal dostávat obsah mezipaměti někoho jiného. Ukládání „skutečné“ dynamiky muselo být zakázáno. Doufám, že verdikt není pravomocný.

    Tyto informace však nejsou zbytečné. Na jeho základě dokážeme vygenerovat klíč pro omezení frekvence požadavků nejen na základě IP adresy návštěvníka, ale také jeho stavu.
    nastavit $psUID "anon"; nastavit $psUCL "anon"; if ($cookie_bbsessionhash) ( nastavit $psUID "$cookie_bbsessionhash"; nastavit $psUCL "user"; ) if ($psUCL = "anon") ( nastavit $psUID "anon:$remote_addr"; )
    Tento fragment konfigurace umístíme do sekce serveru konfigurace nginx, než popíšeme všechna umístění. Výsledkem je, že obdržíme originální klíč pro uživatele, který má relaci, a klíč založený na IP adrese pro návštěvníky, kteří relaci nemají (například pro vyhledávací roboty).

    Výsledek
    V důsledku těchto snah se celkové zatížení virtuálního stroje snížilo z plató 90 procent na 40 procent pilového zatížení, přičemž špičky dosahovaly až 80 procent.

    VBulletin nabízí vše, co může správce fóra potřebovat. Podcasting, podpora multi-quotování, rozdělení do komunit a skupin, uživatelská pověst – to vše je dostupné v základní konfiguraci, kterou lze rozšířit instalací rozšíření třetích stran.

    Motor vytváří vysoké zatížení serveru, zejména po instalaci doplňků a skriptů třetích stran. Pro běžný provoz si tedy budete muset pořídit běžný hosting – zapomeňte na nabídky zdarma a junior plány za haléře, které web vizitky dokonce zpomalují. Čím vyšší provoz, tím větší zatížení serveru, takže je potřeba brát šířku pásma s rezervou. Nejlépe neomezeně.

    Na hostingu nelze ušetřit také proto, že Vbulletin je určen pro vytváření velkých projektů. Engine je odolný proti útokům hackerů a spamu, takže se návštěvníci mohou cítit bezpečně. Moderátor bude potřeba, ale ne k čištění vláken reklamních příspěvků, ale ke správě diskuzí.

    Pro základní přizpůsobení vzhledu, přidávání a úpravy stránek můžete využít vestavěného návrháře. Chcete-li na něj přejít, musíte se na web přihlásit pomocí účtu správce. Vedle uživatelského jména je přepínač, který by měl být nastaven na Zapnuto. Po opětovném zadání hesla se stránka otevře v režimu návrhu.

    V návrháři můžete přidat stránku, přesunout na ni prvky a poté přidat odkaz na stránku do hlavní nabídky webu. To vše se provádí stejně jednoduše jako ve vizuálním návrháři. Globální přizpůsobení rozhraní však bude vyžadovat programovací dovednosti, které lze použít v panelu administrátora.

    Pro uživatele, kteří nechtějí interagovat se serverovou infrastrukturou, vývojáři nabízejí řešení vBulletin Cloud. S jeho pomocí můžete získat plně funkční fórum se všemi administrativními funkcemi, které obejdou fáze stahování, instalace a konfigurace motoru. V podstatě po zakoupení plánu vše, co musíte udělat, je upravit web tak, aby vyhovoval vašim potřebám, než na něj spustíte návštěvníky.

    Design

    Na oficiálních stránkách enginu si můžete stáhnout témata pro základní design. Snadno se instalují na stránky a lze je měnit podle přání webmastera. Pro správu stylů je v administrativním panelu sekce Reklama. V něm můžete:

    • Změňte nebo přidejte pozadí webu.
    • Místo pozadí přidejte obrázek.
    • Upravit soubor stylu.

    Základní změny lze provést prostřednictvím konstruktoru. Chcete-li například změnit logo, musíte otevřít kartu Záhlaví a nahrát příslušný soubor. Na kartě Navigační lišta můžete spravovat hlavní nabídku webu: přidávat a odebírat odkazy na jiné stránky, měnit jejich pořadí, přiřazovat názvy.

    To nevyžaduje znalosti programování, to znamená, že základní nastavení vzhledu zvládne i začínající webmaster, který nikdy nepracoval s enginy fóra.

    Optimalizace pro vyhledávače (SEO)

    CMS vBulletin nemá speciální modul pro optimalizaci pro vyhledávače. To však neznamená, že není potřeba na fóru pracovat. Stránky podléhají požadavku, že musí mít značku H1, která se používá k určení tématu stránky pro robota. Pro nastavení indexování je potřeba upravit soubor robots.txt – tipy, jak jej správně naformátovat, najdete na fórech věnovaných webům na vBulletinu.

    Optimalizace pro vyhledávače je z velké části vázána na povolení či zakázání jednotlivých funkcí. Například je nutné zakázat skokové menu pro uložení kódu. Takových maličkostí je spousta, zjistíte je jen na specializovaných fórech - v nápovědě vBulletinu nic takového není.

    Pro přidání nových funkcí jsou k dispozici SEO pluginy. Nejznámější je VBSEO. S jeho pomocí můžete optimalizovat fórum tak, aby splňovalo požadavky vyhledávačů: nastavit přesměrování, odstranit duplicity a vyloučit jednotlivé stránky z indexování. Hlavní nevýhodou je, že VBSEO vytváří další zátěž na serveru, který je na CMS už tak dost velký.

    Sazby

    Doživotní licence s ročními aktualizacemi bude stát 250 USD. Za tyto peníze jsou k dispozici všechny funkce motoru:

    • Vestavěné aplikace: fórum, skupiny, ankety, blog.
    • Nástroje pro optimalizaci pro vyhledávače.
    • Profesionální podpora.
    • Flexibilní nastavení rozhraní.
    • Ovládací panely pro všechny účastníky: správce, moderátor, uživatel.
    • Nástroje pro správu uživatelů.

    250 $ není konečná cena. Za tyto peníze si koupíte pouze právo používat motor doživotně.

    • Chcete-li nadále dostávat aktualizace, musíte každý rok zaplatit 209 $. Vývojáři také nabízejí placené doplňky:
    • Odstranění značky v zápatí z celého vašeho webu je jednorázový poplatek ve výši 169 USD.
    • Další telefonická podpora nebo podpora vstupenek je 49 $ měsíčně nebo 329 $ ročně.
    • Profesionální instalace nebo upgrade motoru – jednorázový poplatek 149 USD.

    Pokud chcete, aby fórum vypadalo dobře na menších obrazovkách, můžete si zakoupit Mobile Pack. Licence bude stát 399 USD a obnovení bude stát 359 USD ročně. Mobilní verze stojí samostatně 199 dolarů. Bez něj lze fórum normálně používat pouze na počítači.

    Při výběru vBulletin Cloud jsou k dispozici tři plány: bronzový, stříbrný a zlatý. Všechny nabízejí:

    • Automatická aktualizace na nejnovější verzi systému.
    • Používání serverů optimalizovaných pro vBulletin.
    • Změňte dostupné místo na disku podle svých potřeb.
    • Automatické vytváření záloh.

    Minimální plán stojí 19,95 $ měsíčně (14,99 $, pokud se platí ročně). Nabízí šířku pásma 25 GB, bezplatnou podporu a bezplatnou doménu. Toto je vynikající řešení pro malá fóra s nízkou návštěvností.

    Stříbro nyní stojí 39,95 $ měsíčně (29,99 $, pokud se platí ročně) a poskytuje 75 GB šířky pásma a také podporu prostřednictvím lístkového systému. Tento plán je vhodný pro rostoucí komunity se střední návštěvností.

    Nejvyšší plán je Gold za 74,95 $ měsíčně (59,99 $, pokud se účtuje ročně). Šířka pásma 200 GB, bezplatná telefonická podpora. Optimální řešení pro velká fóra.

    Výhody a nevýhody

    VBulletin existuje již velmi dlouho, takže má rozvinutou uživatelskou komunitu, podrobnou dokumentaci a spoustu souvisejících materiálů: motivy, šablony, rozšíření. Mezi další výhody si všimneme:

    • Velké množství designových témat.
    • Možnost rozšíření funkčnosti instalací pluginů a modulů, kterých je již více než 1000.
    • Jednoduché nástroje pro tvorbu obsahu a správu webových stránek.
    • Zjednodušené přizpůsobení designu.
    • Rychlé publikování fotografií a videí uživateli.
    • Optimalizováno pro mobilní zařízení při nákupu příslušného balíčku.

    Pokud jste dříve používali jiný modul fóra, bude trvat dlouho, než si zvyknete na administrativní panel VBulletin. Není to špatné - jen neobvyklé a v některých momentech nepohodlné.

    VBulletin měl vždy vysoké zatížení serveru, zejména při instalaci více rozšíření. To je třeba vzít v úvahu při výběru hostingu a zahrnout do rozpočtu, abyste si mohli koupit plán s větším výkonem. Náklady jsou velmi vysoké a rozhodně nebudete moci ušetřit - riskujete tím, že fórum „spadne“, když dojde k přílivu návštěvníků.

    Po změně vývojového týmu vyvstává mnoho otázek ohledně bezpečnosti motoru. Nejstabilnější verzí zůstává 3.8. Čtvrtá a pátá verze neustále dostávají bezpečnostní aktualizace, které naznačují, že vývojáři po vydání produktu opravují díry.

    Pravděpodobně jste mnohokrát viděli fóra o enginu vBulletin. Fóra jako taková už nejsou v módě, 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 řeknu, jak se používají.

    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 kritický stav, protože vám 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.

    Číst soubory, spouštět příkazy

    Důvodem první zranitelnosti je tedy nesprávná logika při zpracování parametru routestring, který útočníkovi umožňuje zahrnout jakýkoli soubor na disku 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 obsahuje 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é existuje kus kódu, který se zbaví lomítka na začátku řádku, pokud je přítomen.

    /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 docela zvláštní. Přinejmenším matoucí je přítomnost seznamu zakázaných rozšíření zapsaný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 přijmout 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. Na základě informací poskytnutých uživatelem vyhledává vhodné trasy.

    Pokračování je 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ě ve stanoveném období vám umožní přístup ke VŠEM hackerským materiálům, zvýší vaši osobní kumulativní slevu a umožní vám získat profesionální hodnocení Xakep Score!