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

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