Články

WordCamp Praha 2022 Live!

26. února 2022 se sejdeme opět online, ale setkání to bude interaktivní:

Kromě právních a vývojářských přednášek na vás budou po celý den čekat tematické panely s živou diskusí. V každém slotu se sejdou pozvaní odborníci či odbornice a budou tam pro vaše dotazy. Vše proběhne v reálném čase a bez záznamu.

Na jaká témata budete moci s odborníky diskutovat?

  • Právo a weby (Tomáš Pauch, Petra Kristína Dolejšová, Jiří Hradský a další)
  • Tvorba přístupných webů (Roman Kabelka, Pavel & Michaela Vrankovi)
  • Page builders a práce s nimi – Gutenberg, Elementor, Divi, apod. (Miroslav Bartík, Honza Drábek, Pavel Vybíral, Petr Toman, …)
  • Design a UX při vývoji webových aplikací (Marek Čevelíček, Tomáš “Taja” Brza, Tomáš Makáň, Denis Držka, Monika Šormanová)
  • Business v digitálu (Tomáš Kocifaj, …)
  • Nejběžnější problémy vašich stránek

V průběhu dne bude také samozřejmě k dispozici technická poradna (s Vláďou Smitkou a dalšími)

Spontánně mohou také vznikat další diskuze na libovolná témata související s WordPressem i webem obecně. Seznam odborníků ještě není konečný, stále domlouváme další, aby mohlo vzniknout co nejvíce plodných debat.

Kromě Live diskuzí nabídneme i klasické přednášky

  • 7 tipů, jak postavit web právně správně (Karolína Kropíková)
  • GDPR: Jak se poprat s ochranou osobních údajů na webu? (Jiří Hradský)
  • Cookies – právní pohled, implementační wordpress pohled (Petra Kristína Dolejšová, Adam Laita)
  • Zkušenosti s multilingual a multicurrency řešení na WP a Woocommerce (Daniel Koch)
  • Cache snadno a zdarma: co udělat pro zlepšení TTFB (Honza Malý)
  • Moderní vývoj s JS (Riki Fridrich)
  • Security headers (Marek Gach)
  • Moderní vývoj ve WordPressu (Daniel Mejta, Václav Greif)

Program celé konference můžete najít na prague.wordcamp.org

Registrujte se zdarma už nyní!

O všem vás budeme průběžně informovat na Twitteru @WordCampPraha anebo přímo v platformě Hopin.

Těšíme se na vás.

WordCamp Praha 2020

7. ročník WordCampu Praha proběhne 29. února 2020!

Akce se stěhuje do nových, větších a lepších prostor – do Cubex Centra v Praze na Pankráci. Jako vždy se můžete těšit na kvalitní program, afterparty a mnoho zajímavých lidí.

První zvýhodněná vlna vstupenek je již v prodeji za 399,- Kč bez DPH.

Všechny informace naleznete na oficiálním webu WordCamp Praha 2020.

Další kanály:

WordCamp Praha 2019 očima organizátorů

Uff.

Letošní WordCamp je za námi.

Děkujeme, že jste se zúčastnili, a doufáme, že jste si ho stejně jako my náležitě užili.

Dovolte nám nyní krátce zhodnotit, co se nám v našich očích podařilo a co už tolik ne.

Nejprve trocha popela na naše hlavy.

Hned na začátku se nám nepodařilo odhadnout poměr účastníků uživatelské a developerské sekce u první přednášky. Při výběru sálů jsme vycházeli z dotazníku vyplňovaném při koupi vstupenek, ale magické slůvko SEO přilákalo tolik zájemců, že menší sál praskal ve švech. Bylo těsno a dusno. Zvažovali jsme prohození sálů, ale děsila nás představa hromadného přesunu několika stovek lidí a nabourání programu. Záznam naštěstí bude 😉

Plná vývojářská sekce

Doufáme, že nepříliš závažným problémem bylo množství jídla u svačiny. Při tak náročném programu člověku opravdu vytráví, což se v kombinaci s neočekávaným množstvím vstupenek zakoupených na poslední chvíli ukázalo jako zadělání si na problém, který nelze těsně před konferencí snadno vyřešit. Za poslední den se totiž přihlásilo dalších 40 lidí, pro které jsme přidali několik vstupenek navíc. Pro příště bude dobré množství občerstvení ještě trochu naddimenzovat.

Také nás zamrzelo, že reálná kvalita WordCamp triček byla nižší, než jsme očekávali. Zahráváme si proto s myšlenkou, že příště trička pro všechny vynecháme a kdo ho bude chtít, bude si moci připlatit, za kvalitní tričko. Co si o tomto nápadu myslíte?

Bylo i méně propagačních WP předmětů, bohužel se dopravce neobtěžoval nikoho informovat, že dorazily a poslal velkou bednu zpět od USA…

Letos jsme poprvé zkoušeli nový doplňkový program, jeho součástí bylo povídání o digitálním nomádství. Experiment vzbudil zájem, pro příště však víme, že bude nezbytné zajistit ozvučení.

A nyní k tomu příjemnějšímu 🙂

Konference rozhodně není o jídle, ale věříme, že kvalitní občerstvení napomůže dobrému pocitu z celé akce a příjemné atmosféře. Věříme, že si pravidelní účastníci všimli, že se v tomto ohledu snažíme zlepšovat, a doufáme, že to bylo vidět.

Jak oběd vypadal pár let zpět jste snad už zapomněli, ehm 🙂

https://twitter.com/alian/status/833013041205747712

A letos 🙂

Dalšího masivního rozdílu jste si mohli všimnout u registrací. SimpleTicket nám zničil fronty a odbavování jelo jak po másle 🙂

Fronty u registrací a dohledávání visaček jsme zanechali v minulosti (na obrázku ročník 2018)

Velmi dobře se nám dařilo dodržovat harmonogram přednášek a program tak jel přesně podle hodinek. Díky za to patří jak přednášejícím, tak moderátorům Pavlu Cahlíkovi a Tomáši Kocifajovi.

Víme, že se programem nemůžeme zavděčit každému, ale věříme, že se nám podařilo připravit zajímavý mix přednášek, kde si nějaké své téma našla většina účastníků. Některé přednášky proto byly odborné více, jiné méně. Myslíme, že přednášek bylo tak akorát, aby program nebyl uspěchaný a vládla pohoda. I našim zahraničním speakerům, kteří mají zkušenosti z mnoha dalších WordCampů, se tento přístup velmi líbil.

Za povedený považujeme i doplňkový program: Vanlife s Víťou Válkou, fitness s Helenou, Happiness Bar i stánky partnerů. Otestovali jsme i mobilní networkovací aplikaci ImpromptMe. Letos sice ještě nebyla úplně vyladěná, ale věříme, že její koncept dává smysl a tvůrce si odnesl cenný feedback.

Přišlo nás přes 500 a společně se nám tak podařilo uspořádat druhý největší národní WordCamp v Evropě! Před námi je už jen Londýn, ale přepočtěte si to na počet obyvatel 😉 Takže otázka na komunitu – kde uspořádat v Praze akci pro 800 lidí? 🙂

Jdeme stříhat videa, vyvolávat fotky a sesbírat slidy z prezentací. Odhadujeme, že nám to bude trvat zhruba 14 dní, tak nezapomínejte sledovat web, náš youtube kanál a hastag #WordCampPraha na twitteru ;-).

A jak se WordCamp líbil Vám? Zapomněli jsme na něco? Máte nějakou jinou výtku či pochvalu?

Těšíme se na setkání na dalších akcích – WordCamp Europe se blíží, děláme pravidelná mini setkání WP Pivo a na léto chystáme opět WordPress konferenci pro začátečníky.

Tak díky a zase za rok!

Networkujte během WordCampu naplno s ImpromptMe

Možná jste zaregistrovali, že letošní ročník WordCampu se rozhodl podpořit český startup ImpromptMe. O co jde? O aplikaci, která pomůže vylepšit vzájemný networking, jenž je stěžejním cílem celé konference.

Jak to funguje?

Ve zkratce – abyste se s někým zkontaktovali, nemusíte ho složitě hledat. Stačí se zaregistrovat do aplikace ImpromptMe (stahujte pro Android a iOS anebo využijte webové prostředí), ve které uvidíte seznam ostatních + informace o nich. Pak už se jen stačí domluvit, kde přesně a v kolik se potkáte a je to (aplikace bere v potaz agendy vás obou). Díky vyplněným profilům tak najdete přesně lidi, které chcete. 

  1. Zaregistrujte se na https://impromptme.com/
  2. Vyhledejte naši konferenci pomocí kódu WCP2019
  3. Jako vstupní kód použijte číslo/kód vašeho lístku (najdete na vstupence od SimpleTicketu)

V aplikaci pak také uvidíte program konference se speakery, můžete si nastavit upozornění na přednášky, které určitě nechcete minout a domluvené meetingy se vám přehledně řadí v seznamu.

Pár tipů, jak ImpromptMe využít co nejlépe

  • Zaregistrujte se ještě před příchodem na konferenci
  • Vyplňte si svůj profil co nejlépe
  • Přidejte si plánované přednášky do své agendy (díky tomu vás nikdo nepozve na meeting v čase, kdy chcete být na přednášce)
  • Domluvte si co nejvíc meetingů ještě před konferencí, dokud lidé nemají již naplněný rozvrh
  • Pokud se objeví zádrhel v mobilní appce, zkuste si otevřít naši webovou aplikaci na adrese https://impromptme.com
  • Pokud ani to nebude fungovat, napište na support@impromptme.com nebo na knopova@impromptme.com

Nechtěli jsme vytvořit další aplikaci se seznamem přednášek, případně s chatem mezi návštěvníky, takových je na trhu spousta. Naše aplikace tedy neposílá klasické chatové zprávy, ale umožňuje vám velmi efektivně a jednoduše domluvit osobní meeting na konkrétní místo a čas. Když například potřebujete radu s PHPkem nebo naopak zadat někomu zakázku, stačí si to v appce ve filtrech nastavit a pozvat vybrané lidi. Zabere to jen 3 ťuknutí v případě, že někoho pozvete vy a 1 ťuknutí, pokud někdo pozve vás.

Zároveň bych ráda zmínila, že je to pro nás reálně první větší konference. Proto věříme, že návštěvníci letošního WordCampu nám odpustí případné počáteční zádrhely, které se jak na potvoru určitě objeví. U stolečku s registrací ale budeme nápomocni při jakémkoli problému a budeme rádi za jakoukoli zpětnou vazbu,“ zmiňuje spoluzakladatelka aplikace Andrea Knopová.

Helena Bartošová – trocha pohybu na WordCampu

Ahoj Heleno, pověz nám něco o sobě – kdo jsi, co děláš a čím se pracovně zabýváš?

Začínala jsem jako fitness trenérka. Ve fitness se mi líbila ta energie, která z něj doslova srší, ale současně mi po krátkém čase začalo i něco chybět. Zkusila jsem si soutěže a různé směry fitness světa, abych postupně zjišťovala, že se chci hýbat jinak a to v souladu s mým vlastním životem a zdravím. A to rozhodně nejsou tréninky 3krát až 5krát v týdnu do vyčerpání. Pohyb je často vnímán jako “výkon, síla, fyzička, námaha”. Nebo naopak v “pomalém” protipólů jako propojování mysli a těla, například v józe nebo pilates.

Během své 14leté trenérské zkušenosti a za spolupráce s fyzioterapeuty jsem objevila něco mezi těmito dvěma světy. Za nejdůležitější považuji to, aby naše tělo bylo pružné, pevné a abychom se po cvičení cítili svěže, nikoli úplně vyčerpaní. Moje metoda 5PRO vznikla propojování poznatků nejen z oblasti pohybu, ale i z psychologie. Trénuji ženy i muže – sportovce, mladé slečny, těhotné ženy, ženy po porodu, manažery, lidi, kteří chtějí hubnout, tvarovat a zpevnit postavu. Ženám se snažím předat to, aby se ve svém těle cítily krásné, uvolněné, aby si v pohybu nacházely eleganci a jemnost. Tím totiž změní i držení těla a jejich silueta získá jiný rozměr. Mužům pomáhám s protahováním a technikou cvičení. Ladíme detaily, které potom využívají v jakémkoliv tréninku či sportu. Téměř všichni jsou překvapeni jakých výsledků dosahují, ne vždy je to totiž s pohybem tak, jak si mysleli. Mému nejstaršímu klientovi je 80 let a jeho slovy ho naše spolupráce vrátila do života, opět se cítí jako platný člen společnosti. Pracuji také s postiženou ženu, u ní je vše složitější a jednodušší zároveň, ale děláme pokroky. Každý klient je pro mě velká škola pohybu.

Vůbec nejsi z oblasti webů a na WordCampu nebudeš přednášet. Co pro nás tedy chystáš?

Budu k dispozici v zázemí. Na přednáškách budete dlouho sedět a tak pro vás chystám “občerstvení” ve formě pohybu:

  • Vyzkoušíte si, jak si sami můžete protáhnout a uvolnit tělo po delším sezení nebo i stání a to už během pár minut.
  • Ucítíte vaše tělo tak, jak to neznáte – zkusíme si pár testů citlivosti a vnímavosti.
  • Dozvíte se jak cvičit, i když jste zrovna unaveni, máte náročný den nebo jste nemocní.
  • Budu s sebou mít balanční pomůcky, na kterých si vyzkoušíte svoji rovnováhu. Vysvětlím vám, proč je rovnováha důležitá a ukážu, jak s ní můžete pracovat a uklidnit vaši mysl nebo zlepšit koncentraci.

Kupte si vstupenku a přijďte na WordCamp

Capture the Flag – řešení flagu 9

Jako třešničku na dortu jsme si nechali řešení poslední flagu, který odolal statisícům pokusů o jeho rozluštění.

< flagy 7 – 8

Flag 9: „Zákaz vstupu se zvířaty“

Umístění flagu bylo jasné poměrně brzo. Při objevení souboru phpinfo.php jsme se dozvěděli i o existenci zvláštní složky secret-flag9-dir.

Před samotnou cestou k flagu jsme se vydali několika slepými uličkami.

WP-Scan ukázal, že je na webu plugin se zranitelností typu Local File Inclusion. Z jeho kódu však bylo patrné, že se nám příliš nehodí – soubory načítá pomocí require_once a PHP soubory vykoná a nezobrazí. Pro získání jiných citlivých informací by se však velmi hodil.

Při skenování portů se ukázalo, že je otevřený port 22 – SSH. Při pokusu, zda náhodou správce serveru nepoužil nějaké primitivní heslo, vyšlo najevo, že heslo lze velmi jednoduše odhadnout a administrátorský přístup byl náš. Alespoň zdánlivě. Brzy se ukázalo, že SSH není opravdové SSH, ale pouze jeho simulace. Tudy cesta také nevedla.

Dalším dobrým nápadem bylo využití nalezeného Admineru. Bylo možné se připojit k externímu databázovému serveru s oprávněním pro práci se soubory a díky tomu číst libovolné soubory z klienta:

LOAD DATA LOCAL INFILE "/home/flag5a6557/htdocs/www/flag.php" INTO TABLE test.a

Bohužel zatím neznáme jméno souboru, který se snažíme získat. Pokud tedy nechceme slepě zkoušet, není to pro nás vhodná cesta.

Pokusy o přihlášení do administrace přes login formulář byly také liché, ze zdrojového kódu stránky šlo zjistit, že formulář není pravý. A i kdyby pravý byl, tak WP samotný byl upraven tak, aby byl jen read-only a přihlášení by tak možné nebylo.

Přes administraci však jedna z cest vedla. Z předchozích flagů jsme totiž získali dostatek informací, abychom byli schopni vygenerovat přihlašovací cookies.

  • Hash hesla z databáze
  • Krypto klíče z wp-config.php
  • Session_token z uživatelských metadat v databázi

Za normálních okolností by potřebný session token byl k ničemu, protože se jedná o sha256 hash z více než 40 znakového náhodného řetězce, který v cookie musí být v originální podobě. U nás se však jednalo pouze o hash slova wordpress a tak ho bylo možné jednoduše zneužít.

Stačilo připravit další WP web, kterému se předhodily získané krypto klíče a založil uživatel se stejným hashem hesla (je jedno, že heslo neznáme) a nechat si vygenerovat přihlašovací cookies, které následně stačilo vložit do prohlížeče pod správným názvem obsahujícím md5 hash adresy webu:

wp_generate_auth_cookie(1,1560620800,'logged_in', 'wordpress')
wp_generate_auth_cookie(1,1560620800,'secure_auth', 'wordpress')

Díky tomu jsme se dostali do administrace, ta sice byla jen pro čtení, to však nezabránilo nahrání vlastního pluginu i když nešel aktivovat. Takto jsme na web propašovali cizí kód v podobě prohlížeče souborů.

Touto poměrně komplikovanou cestou jsme byli schopni získat přístup k poslednímu flagu.

Byla zde však i mnohem jednodušší cesta. Mohli jsme si všimnout, že je na webu nahrán Adminer ve starší verzi 4.2.3, která navíc podporuje mnoho dalších databázových systémů – včetně SQLite.

SQLite má nepříjemnou vlastnost, že při přístupu k neexistující databázi ji na disku vytvoří. Vytvořit lze pouze soubory s koncovkou .db (a několika dalšími). To nás ale příliš nezbrzdilo. Pomocí příkazu ATTACH DATABASE jsme jednoduše vytvořili novou prázdnou databázi s koncovkou .php. Pak už stačilo jen vytvořit novou tabulku a naplnit ji PHP kódem. I přes trochu binárních dat na začátku souboru se náš kód bez problémů pustil a mohli jsme tak jednoduše získat poslední flag! Stačilo už jen určit výsledek logické podmínky:

I přes to, že jsou existující soubory na serveru pouze pro čtení, šlo tímto způsobem modifikovat vzhled webu. Stačilo například vytvořit soubor home.php ve složce šablony a díky hierarchii šablony byl pak místo samotného webu zobrazen on.

Objevením posledního flagu naše CTF soutěž končí. Doufáme, že vás bavila, že  jste se třeba i něco zajímavého naučili a že se uvidíme na WordCampu.

 

Kupte si vstupenku a přijďte na WordCamp

Contributor Day: Co to je a proč na něj dorazit?

Věděli jste, že díky Contributor Day se můžete setkat s profesionály v oboru a posouvat jak své dovednosti, tak i komunitní akce? Contributor Day (zkráceně CD) vznikl jako podpůrná akce pro rozšíření řad aktivních členů WordPress „rodiny“. Samozřejmě WordCamp k tomu slouží také, ale na něm se seznámíte většinou už s koncovým výsledkem a jeho vysvětlením. Co se ale děje za oponou a jak to všechno vzniká? Nejen, že se to na CD můžete dozvědět, ale můžete toho být i součástí.

Pokud byste například rádi přispěli do jádra WordPressu, přeložili nějaký plugin či naplánovaly další komunitní akci, rádi vás přivítáme na letošním CD, který se bude konat jako každý rok následující den po WordCampu. Tedy konkrétně v neděli 24. 2. v krásných prostorách Pražského kreativního centra od 10 hodin. A co se konkrétně chystáme zařadit do programu?

1. Nadcházející akce

Rádi bychom rozebrali možnosti dalších akcí. Jak jistě víte, jedná se o WordCamp a o letní WP konferenci pro začátečníky. Jsme ale pro jakékoli nové nápady, jak například dostat WordPress i do menších měst.

2. naswp.cz

Web naswp.cz je tu již několik let, a proto bylo potřeba z něj smést prach, nově ho natřít a naplnit novým obsahem, což se nám povedlo. Rádi bychom ale neusli na vavřínech a pokračovali v jeho rozšiřování, protože, jak víte, odborné články pomáhají nám všem, a to jak v řešení technických problémů, tak i vzdělávání. Jestliže rádi píšete nebo dokážete navrhnout nové změny pro náš web, rádi si vás poslechneme. Nejen, že pomůžete veřejnosti, ale také se můžete zviditelnit.

3. Rozšíření cs.wordpress.org

Na naší stránce cs.wordpress.org bychom se tentokrát zaměřili na přesunutí českého fóra přímo na interní fórum WordPressu. Přesuneme tak „zodpovědnost“ jednoho člověka na zbytek komunity, jelikož nyní fórum spravuje „praotec“ WordPress překladů Pavel Hejn. Na přesun se proto bude hodit každá ruka.

4. Sdružení

Už na minulém setkání CD jsme se snažili vyřešit jednu zajímavou myšlenku – mohli bychom založit oficiální sdružení, přes které bychom vedli účetnictví vzhledem ke konání neziskových akcí? Tato myšlenka nás velice nadchla, protože díky tomu můžou být peníze pro komunitní akce transparentní, a dává to také možnost dalšího rozvinu komunity. Nezisková sdružení navíc získávají různé výhody v online službách, které by nám mohly pomoci rozšiřovat povědomí, na něž občas nejsou dostatečné finance.

5. Udržitelnost komunity

Základním kamenem pro konání akcí typu WordCamp je udržitelnost týmu lidí, kteří jsou ochotni ze svého času věnovat vždy něco navíc. To samozřejmě není vždy jednoduché, proto bychom se chtěli pobavit o možnostech každého z nás a ideálně bychom rádi přivítali nové členy, kteří by nám s tím mohli pomoci. Tak neváhejte a pojďte to zkusit, věřte, že na našich akcích není jen tvrdá práce, ale i spousta zábavy a nových zkušeností. Jak pracovních, tak i životních.

6. Překlady

Nedílnou součástí programu CD budou samozřejmě i překlady, na které jsme se více soustředili v minulých letech. Tentokrát pro nás ale budou mít menší váhu – což neznamená, že se zde nepotkáte s lidmi, jako je například Michal Janata, který má za sebou tisíce překladů WordPress jádra. Pro širší dostupnost WordPressu (například na školy nebo do různých zaměstnání) lokální překlady vždy pomáhají. A kdybyste přeložili byť jedno slovo, tak i to je krok dál.


Už jsou to 3 roky, co se podílím na organizování různých akcí pro WordPress komunitu, což mi přineslo nejen nové zkušenosti, ale také skvělé kontakty. Rozhodně nikoho nechci přesvědčovat k tomu, aby jakýmkoliv způsobem přispíval WordPress komunitě, je to na každém z vás. Co vám ale mohu slíbit je to, že se na takových akcích určitě nudit nebudete a jen na tom získáte.

Pokud jste dospěli k závěru, že „na tom něco je“, tak už neváhejte a přijďte v neděli za námi.

Adam Laita, hlavní organizátor

Contributor Day na Facebooku

Registrace na Contributor Day

Capture the Flag – řešení flagů 7 – 8

Flagů už moc nezbývá, pojďme se tedy podívat na další dva.

< flagy 4 – 6 > flag 9

Flag 7: „Včera, dnes a zítra“

Tyto flagy byly zaměřeny na databázi. V robots.txt jsme se dozvěděli o existenci souboru backup.sql. To však byla ošklivá nástraha a při pokusu o jeho stažení jsme získali ban. Cesta to ale nabyla úplně slepá a získali jsme nápovědu, že podobné soubory je dobré zkomprimovat – backup.sql.gz byl už na dosah.

Při prohlídce dumpu databáze jsme mohli vidět odkazy na některé již ulovené flagy, ale v tabulce ctf_options jsme nalezli i zvláštní vlastnost flag7_option a první polovinou tohoto klíče.

Někdy nás však stará hodnota nezajímá a chtěli bychom spíše přítomnost. Cílem tedy bylo zjistit jakou hodnotu má flag7_option nyní. K  tomu bylo potřeba získat přístup k živé databázi. Možností zde bylo více.

Tu první nám prozradil wp-scan, který poukázal na použití pluginu se zranitelností typu SQL injection. Po prozkoumání zranitelného kódu a několika pokusech na živém webu stačilo jen připravit dotaz, který nám hodnotu z databáze vyčetl. Drobným zádrhelem zde mohl být fakt, že plugin nahrazuje mezery za znak %, to však šlo jednoduše obejít náhradou mezer za prázdný komentář v našem payloadu.

Výsledný dotaz

K získání informací z databáze bylo samozřejmě možné použít automatizovaný nástroj SQLmap, nicméně cesta s UNION SELECT je trochu elegantnější.

Díky této zranitelnosti jsme zkompletovali sedmou sadu flagů.

Flag 8: „Heslo, heslo, heslíčko“

Při zkoumání databáze bylo možné narazit na další z flagů. Zjistili jsme, že zde existují 3 další uživatelé WordPressu – flag8a, flag8b a flag8c. Každý z nich používal jiný hash hesla – staré jednoduché MD5, aktuální PHPASS a moderní BCRYPT. Máme tedy 3 hashe a z principu pravidel naší CTF soutěže tak víme, že každý bude složen z 4 číslic. Stačilo je tedy cracknout a to nebylo vůbec složité.

V ukázce jsme na to použili nástroj John the Ripper s maskou pro 4 číslice: john --mask=?d?d?d?d --format=raw-md5 soubor-s-hashi.txt

MD5 byla prolomena ve zlomku vteřiny. PHPASS netrval o mnoho déle i když drobné zpomalení bylo znát. Na BCRYPT jsme si museli několik minut počkat.

Při použití grafické karty bychom samozřejmě měli výsledky mnohem dříve.

Prolomením všech 3 hashů jsme získali další klíč.

 

Alternativní cestou k získaní informací z databáze byl fakt, že na webu byl zapomenutý nástroj Adminer (skvělý tool, ale stejně jako PHPmyAdmin ho není rozumné nechávat přístupný). Z wp-scanu jsme dále zjistili, že je na webu přístupný swap soubor .wp-config.php.swp, který vznikl při úpravě konfiguračního souboru na produkci editorem vim. Po stažení jsme získali přístupové údaje k databázi. Skoro…

Heslo bohužel nebylo v souboru přítomné, protože bylo získáno pomoci proměnné prostředí „dbpass“. Proměnné prostředí lze však vyčíst z výpisu phpinfo(), který jsme již dříve objevili v souboru phpinfo.php. S těmito znalostmi tak nebyl problém získat přístup do databáze mnohem pohodlněji.

Do příště nám zbývá už jen poslední flag 9, na kterém si mnoho soutěžících vylámalo zuby.

 

 

Kupte si vstupenku a přijďte na WordCamp

Capture the Flag – řešení flagů 4 – 6

Přinášíme ukázku řešení dalších 3 flagů z naší CTF soutěže.

< flagy 0 – 3 > flagy 7 – 8

Flag 4: „Chybovat je lidské“

Při bezpečnostních testech je běžné, že se snažíme aplikaci donutit udělat nějakou chybu, aby nám prozradila nějaké informace, nebo provedla něco nečekaného.

U webových aplikací je častým prohřeškem zobrazování chybových hlášek s informacemi, které by měl znát jen administrátor.

Nejjednodušší cestou jak toto ověřit je navštívení adresy /wp-includes/rss-functions.php, čímž vyvoláme chybu 500. Podobně funguje i volání přímo šablony (např. /wp-content/themes/twentynineteen/index.php), nebo různých souborů z administrace (/wp-admin/admin-header.php). Jako odměnu za vyvolání chyby 500 získáme první flag. Pro zobrazení vlastní chyby jsme si museli pohrát s PHP funkci register-shutdown-function.

Další běžnou chybou je 404 – nenalezeno. WP nám v tomto případě vrací poměrně použitelnou stránku, což je častým problémem u jednodušších systémů. Ta je typicky renderována ze souboru 404.php v šabloně. Při infekci webu se tento soubor často zneužívá jako odložený spouštěč infekce – spuštění škodlivého kódu se odloží do vyvolání chyby 404 návštěvníkem, nebo přímo útočníkem. Na našem webu je v něm však ukryt pouze další flag.

Pokud se pokusíme provést nějakou nepovolenou akci, tak nám WordPress zobrazí chybovou hlášku pomocí funkce wp_die() a pošle stavový kód 403. Tuto chybu mimo administraci můžeme získat například přímým přístupem k souboru wp-mail.php. Pro úpravu této chybové hlášky jsme použili wp_die_handler a nechali ji prozradit další flag.

Poučení: výpisy chyb na produkčním serveru nemají co dělat.

Flag 5: „Známe své lidi“

Chyba 500 z minulé sady flagů nám prozradila i umístění aplikace na serveru. Z toho bylo možné získat jméno uživatele, pod kterým na serveru aplikace běží. Není náhoda, že jeho jméno je prvním flagem tohoto klíče. Za normálních okolností by bylo možné tuto informaci získat i z informací v zapomenutém phpinfo.php z předchozích úkolech. Tam jsme však cestu naschvál zcenzurovali 🙂

Zajímavé informace o uživatelích můžeme získat i na jiných místech. Pokud nás zajímají přímo uživatelé WordPressu, můžeme je zkusit vyčítat pomocí parametru ?author=X. Nebo je můžeme získat moderněji – použitím REST API a endpointu /wp-json/wp/v2/users. Našem webu tak nalezneme velmi zajímavého uživatele s id = 5. Pokud tedy navštívíme adresu /?author=5, adresa se magicky změní a prozradí nám login našeho uživatele, což je zároveň další flag.

Dalším typem uživatelů jsou komentující návštěvníci. V základním nastavení sbírá WordPress jejich e-maily, ze kterých následně generuje adresu pro gravatary. To je poměrně nešťastné, protože služba gravatar používá k hashování e-mailu md5 a tak není příliš složité e-maily reverzovat zpět.

Stejně, jako na mnoha dalších webech, jsme nesmazali testovací příspěvek s id = 1 – stačí navštívit /?p=1. Zde číhá drobná zrada. Pokud ve WP vypneme komentáře, tak se změna aplikuje pouze na nově přidané příspěvky – ty staré se řídí původním nastavením a je potřeba u nich komentáře povypínat ručně a na to se často zapomíná. Tento první zapomenutý příspěvek je proto často terčem různých spambotů.

Podivný komentář jste tak mohli najít i u nás:

Jméno uživatele prozrazuje, že hodnota flagu se skrývá v jeho e-mailu. Stačilo tedy získat adresu obrázku jeho gravataru, vzít si z ní md5 hash a ten zkusit prolomit. Protože to jsou jen 4 čísla, nebylo to nic těžkého a flag byl náš!

Tyto informace o uživatelích běžně získáme i z REST API (můžete si to vyzkoušet na webu WP Exposé). My jsme však aplikovali filtr, který se snaží citlivá data z REST API odstraňovat. Pokud nechcete, aby unikaly informace o e-mailech, je lepší gravatary zakázat, nebo pro ně použít jiné řešení.

Flag 6: „Důvěrné informace“

V jednom z předchozích flagů jsme zjistili, že na webu je otevřený git repozitář. Zjistili jsme také, že se zde vyskytuje soubor flag.php, ve kterém jsou určitě zajímavé informace. Bohužel se při přímém přístupu vykonal a nic zajímavého neprozradil.

Není však nic lehčího, než z git repozitáře získat zdrojové kódy a podívat se přímo do nich. Pomohli jsme si automatickým nástrojem, který prochází známé soubory ze struktury repozitáře a snaží se z nich vyparsovat jednotlivé objekty.

Po rekonstrukci repozitáře a zdrojových kódů se již stačilo jen podívat do obsahu flag.php a půlka klíče byla naše.

Při podrobnějším zkoumání změn v repozitáři bylo dále možné získat informaci, že se upravoval soubor search.php v šabloně (git whatchanged -n 1). A navíc změna není už od pohledu úplně bezpečná – není zde ošetřený uživatelský vstup, což s sebou přináší možnost XSS.

Pokud jste zkusili tento kód zneužít a dokázat existenci XSS a zavolat si nějaký pěkný javascriptový alert(), web tento pokus detekoval a místo toho zobrazil hlášku s odměnou ve formě flagu :-).

WordPress se sám o sobě snaží uživatelské vstupy dobře ošetřovat, nevhodně použitý vlastní kód však může jeho principy narušit.

Poučení: nechávat přístupný git repozitář na webu rozhodně není dobrý nápad.

Získání těchto flagů již vyžadovalo trochu úsilí a zkoušení. A příště se to nezlepší.

 

Kupte si vstupenku a přijďte na WordCamp

Vláďa Musílek – workshop o řešení problémů s WooCommerce

Kdo někdy řešil WooCommerce eshop na WordPressu, tak pravděpodobně narazil i na tvoji práci. Mohl by ses přesto krátce představit?

Jsem vývojář lokálních doplňků pro WooCommerce. V podstatě rozšiřuji funkčnost e-shopu o další funkce a propojuji jej s lokálními službami, ať již to jsou dopravci, či poskytovatelé platebních řešení. Stavím e-shopy na tomto systému a pomáhám s provozem těm, kteří potřebují mít volné ruce pro svůj obchod a nechtějí neustále řešit aktualizace a problémy s WordPressem.

Pokud zrovna neprogramuješ, věnuješ se nějakým koníčkům? Co tě baví mimo WordPress a WooCommerce?

Pracovní vytížení je poměrně vysoké, takže na koníčky není moc času. Nejvíce času mi zabírá práce a zdraví, protože dlouhodobě bojuji s prokletím programátorů –  obezitou, která si vybírá svou daň. Když mám ale čas, věnuji se numismatice.

Od e-shopů k numismatice to není úplně daleko 🙂 Vraťme se ale zpět k WooCommerce. Co tě v poslední době na něm nadchlo či naopak nemile překvapilo a co bys nejraději změnil na tomto oblíbeném řešení?

Na WooCommerce se mi líbí ta variabilita. Často se mi stává, že přichází klienti, kteří nejsou schopni na jiných systémech dosáhnout požadovaného výsledku a tady se to dá zvládnout. Také se mi líbí směr vývoje, kdy se celý WooCommerce stále vyvíjí. Co mě leze na nervy, jsou zpětně nekompatibilní aktualizace a uživatelé, kteří jsou schopni instalovat naprosto bezhlavě pluginy na produkční web. Nejvíc mě ale štve, že s příchodem Gutenbergu přesunuli WooCommerce vývojáři pozornost k podružným věcem, jako je nová verze vzhledu statistik v administraci přepsaná do javascriptu. Uvítal bych spíše vylepšení filtrací a přepsání pokladny do no jQuery verze.

Co jsi si letos připravil pro návštěvníky WordCampu v rámci svého workshopu?

Připravil jsem se řadu tipů a postupů, pro práci s WooCommerce. Postavit e-shop zvládne kde kdo, ale stále více práce je s udržováním a úpravou již fungujících webů. Častá praxe je použít pluginy a šablony a problémy řešit až následně. Takže budu ukazovat pomůcky, které pomáhají najít problém a vyřešit ho. Ať už to je nefugující kód, nebo pomalá administrace eshopu.

To zní skvěle. Je případně ještě něco na závěr, co bys rád vzkázal čtenářům?

Je jedno, jestli přijdete na přednášky pro uživatele nebo vývojáře, protože WordCamp je především o komunitě. Tak přijďte pobejt.

 

Kupte si vstupenku a přijďte na WordCamp

WordCamp Praha 23 .2. 2019 is over. Check out the next edition!