V jednom z minulých článků jsem se zmiňoval o chybě na stránkách mozaiky pro Tábor, která již byla opravena. Nyní bych se s vámi rád podělil o způsob, kterým byl web napadnutelný.


Jednalo se o špatné zabezpečení stránek proti vložení a spuštění skriptu z vnější sítě internetu označované jako (php) injection. Tato chyba se dá jednoduše zneužít bez větších znalostí php nebo programování, spousta návodů se dá najít na internetu. Všechno spočívá v tom, že spustíte na vzdáleném serveru svůj php skript, který provede přesně to, co potřebujete, takže si pak na serveru můžete dělat co vás napadne.

Ve skriptech mozaikyprotabor tato chyba nebyla vůbec ošetřena. Vkládání obsahu stránek spočívalo v uložení názvu stránky do proměnné what a načtení souboru s názvem stránky a příponou php. Když jste tedy do proměnné vložili ahoj, zobrazila se vám stránka ahoj.php. Toho šlo snadno zneužít následujícím způsobem:

Do proměnné what jste vložili například http://napriklad.cz/hoj a web se snažil načíst stránku http://napriklad.cz/hoj.php. Stačilo tedy do souboru hoj.php na našem serveru (http://napriklad.cz/) vložit php skript, který by se spustil na webu mozaiky. Ovšem menší problém byl v tom, že php skript se vždycky provede na serveru a server odešle už jen výsledek. Tuto překážku šlo jednoduše vyřešit více způsoby. Já jsem zvolil způsob s přesměrováním.

Pomocí mod_rewrite jsem v souboru .htaccess na našem serveru nastavil „podstrčení“ souboru hoj.txt za soubor hoj.php, čili pokud jste zažádali o soubor hoj.php, dostali jste místo něho hoj.txt. Pak už jednoduše stačilo do souboru hoj.txt napsat vlastní skript a ten spustit na serveru mozaiky.

Stálo by za to také zmínit, jak tuto chybu ošetřit. Lze zvolit velmi snadný (i když ne zcela bezpečný, pokud nemáte vlastní server) způsob, a tím je načítání vkládaných stránek pouze z vlastního serveru. V případě webu mozaiky by stačilo místo stranka.php načítat ./stranka.php. Takhle už útočník nebude moci vložit skript z vnější sítě. Spoustu dalších návodů na zabezpečení najdete na internetu.

Doufám, že tento článek přinese poučení pro všechny, kteří tento způsob na svých stránkách používají.

Důležité: tento „návod“ nemá sloužit jako pomůcka pro to, abyste pomocí něho napadali jiné weby, ale jako upozornění na závažnost a snadné zneužití této chyby.