V tomto souhrnu si popíšeme způsob nelezení prvních 4 flagů v naší soutěži o volné lístky na WordCamp.
Flag 0: „Obrázky malé i velké“
Kdo už nějaké CTF hrál tak ví, že rozehřívací úkoly jsou často spojené s odhalením informací skrytých v různých metadatech. Náš CTF není výjimkou a tak jste mohli jednoduše najít obrázek flag-1024×413.jpg. Pak už stačilo zobrazit si jeho EXIF metadata a první flag byl váš. Pokud víte, jak WordPress s obrázky pracuje, jste se určitě brzo dostali k originálnímu obrázku v největším rozlišení a získali další flag. Poslední flag se naopak skrýval v nejmenším rozlišení 150×150 px používaném pro náhledy.
Metadata obrázků mohou mít i několik desítek kB a především u miniatur mohou zabírat více prostoru než samotná obrázková data. Na to je vhodné myslet při optimalizaci obrázků. V metadatech často naleznete informace, kdy byla fotografie pořízena, jakým fotoaparátem, případně jakým softwarem byla upravena.
Flag 1: „Moje lepší verze“
Při zkoumání zdrojového kódu stránky jste určitě velmi rychle nalezli meta tag „generator“, který většinou ukazuje verzi WP. Na našem testovacím webu prozradil část flagu 1. Původní číslo verze zde bylo přepsáno filtrem the_generator. Tato sada flagů se zaměřovala právě na prozrazení verze WP a pro získání flagů tak bylo třeba navštívit i další místa, kde je verze vypisována.
Readme.html již pro tento účel nějakou dobu použít nelze (i když alespoň prozradí, že se jedná o vcelku novou řadu WP).
Verze se často vyskytuje ve feedech. Po navštívení RSS feedu třeba na /feed jsme tak ihned získali další flag. Reálná verze zde byla nahrazena pomocí předefinování globální proměnné $wp_version. Tento flag tak bylo možné vyčíst i na /wp-links-opml.php.
Méně známým místem, kde lze vyčíst verzi WP, jsou soubory /wp-admin/install.php nebo /wp-admin/upgrade.php. Zde je v query parametrech statických souborů zobrazována nijak nefiltrovaná hodnota ze souboru version.php. To je důvod, proč tuto hodnotu nemohou modifikovat ani bezpečnostní pluginy.
Tím jsme získali poslední část klíče.
Přestože doporučení na skrytí verze WP často naleznete mezi tipy pro zvýšení bezpečnosti WordPress, má tato akce na bezpečnost minimální vliv. Jak můžeme vidět, tak lze verzi vyčíst mnoha způsoby a útočící boti rovnou zkouší známé exploity, aniž by web nějak zkoumali. Podrobnější informace o skrývání verzí.
Flag 2: „Pohozené soubory“
Ať už jste web zkoumali ručně, nebo jste web oskenovali nástroji, jako je například WP-SCAN, tak jste určitě odhalili některé soubory, které na produkční web určitě nepatří.
Bylo tak možné nalézt například /wp-content/debug.log, do kterého si můžete nechat logovat chyby, místo toho, abyste je zobrazovali návštěvníkům. Určitě není moudré tento soubor mít přístupný, protože z něj lze vyčíst mnoho informací a především to, co na vašem webu špatně funguje. V našem debug logu jste však nalezli „jen“ flag.
Mezi další nešvary patří soubor s výpisem funkce phpinfo(). V něm lze najít užitečné informace o konfiguraci webu, cestách na serveru a proměnné prostředí – informace, které se útočníkovi mohou hodit při dalších typech útoků.
U nás jste tak mohli nalézt phpinfo.php (zde byla malá zrada, protože tento soubor nám naschvál vrací stavový kód 404 a tím ho jednodušší automatizované scany přehlédnou).
Pokud pro vývoj používáte verzovací nástroj GIT, tak se může stát, že nedopatřením na serveru necháte přístupný celý repozitář. To se bohužel stalo i nám a tak jste z /.git/index mohli jednoduše zjistit přítomnost textového souboru s flagem v názvu v kořenové složce webu.
Více o problému s otevřenými .git repozitáři.
Flag 3: „Jen tak si listuji“
V předchozím klíči jsme našli flag v názvu textového souboru. Na webu jich bylo však několik dalších. Ty jste mohli nalézt díky povoleným výpisům adresářů, což je opět funkce, která by neměla být na produkci povolná. Tento problém vám samozřejmě nahlásí i wp-scan.
Stačilo se tedy podívat na 3 místa, kde WP soubory vypíše, protože ve složce standardně nemá žádný index.html/php:
- /wp-content/uploads
- /wp-includes/
- /wp-content/language
Povolený výpis adresářů může být kritickým problémem například v kombinaci se zálohovacím pluginem, který zálohy ukládá do složky uploads a nemá výpisy pohlídané.
Přišlo vám řešení jednoduché? Příště se podíváme na dalších pár flagů, které již mohou být složitější.