Nezabezpečený WordPress je jako časovaná bomba!

Nezabezpečený WordPress je jako časovaná bomba!

2347

Vznik webových stránek postavených na WordPress má ve valné většině podobný průběh. Koupit levný hosting, nainstalovat WordPress a najít „freečkovou“ šablonu. Jakmile se stránka rozběhne, trochu se upraví a naplní. Tím často domnělá práce končí a webové stránce se nikdo nevěnuje, protože přeci běží. Postup je to logický, neboť stojí nejméně peněz, bohužel často se stává, že taková stránka je terčem útoku. Riziko se stupňuje s počtem instalovaných, neprověřených pluginů, které nikdo neaktualizuje.

 

Takový web se stává časovanou bombou. Jako v této případové studii. Fotograf, který je několikrát oceněn cenou fotografa snímku přírody Nature’s Best Photography, používá WordPress jako prodejní kanál svých fotografií. Na webových stránkách je tedy závislý. Jedno z bezpečnostních pravidel je nikdy se nechlubit tím, jak je web zabezpečen, protože je to výzvou pro útočníky. Nemůžeme tedy uvádět konkrétní webovou stránku, ale popíšeme celý případ, aby byla situace pochopitelná.

Web nefunguje! Co mám dělat?!

Poprvé jsme spolu mluvili v březnu 2013, s tím že někdo (v tomto případě obyčejný automatizovaný robot) stránku shodil. Když jsme provedli preanalýzu webové stránky, připravili nabídku na nápravu a zabezpečení, byla odmítnuta se slovy, že se na to podívá známý, který s tím něco udělá. V srpnu jsme byly v kontaktu opět. Od té doby byla webová stránka opakovaně napadena. Vzhledem k tomu, že zadavatel právě fotil na Filipínách a potřeboval fungující web, dostali jsme objednávku k odstranění problému a zabezpečení webové stránky. Vzhledem k povaze problému, jsme jej začali řešit týž den.

Základní zabezpečení WordPress

Než začnete s jakoukoliv úpravou, odvirováním a tak podobně, je vhodné vytvořit lokální zálohu všech souborů a databáze. V případě komplikací se tak můžeme vrátit k původní verzi. Potom se již můžeme pustit do samotné práce.

Pokud se jedná o webové stránky, které mají významný traffic, je dobré po dobu nefungování aplikace nahrát nahrát statickou webovou stránku vysvětlující nedostupnost a informaci, kdy bude provedena náprava. Poté webovou stránku ze zálohy spustíme na testovacím serveru a můžeme začít.

V první fázi jsme aplikovali základní bezpečnostní opatření v podobě změny přejmenování uživatele „admin“ a změnu hesla, jelikož ani tento základ nebyl ošetřen. Dále jsme ochránili wp-admin heslem skrze soubor .htaccess, do kterého jsme dále přidali detekci potenciálně škodlivých parametrů. Vhodné je také omezit přístup k administrační části na konkrétní IP adresu.

Následovala úprava souboru wp-instal.php a wp-upgrade.php, přesunutí wp-config.php a změna ID administrátora a náhodně navýšily index tabulky. Scripty totiž celkem správně očekávají, že existuje uživatel s ID = 1 a je to administrátor. V závěru první fáze jsme upravili zobrazování informaci o verzi a ořezali chybový výpis, tak aby zobrazoval co nejméně informací a přes definici vypnuli možnost editovaní zdrojového kódu přímo z administrace WordPress.

To by pro znepříjemnění robotickým útokům mělo být přiměřeně dostatečné. Problémem aplikací s přístupným zdrojovým kódem je fakt že po vydání aktualizace je velmi snadné najít rozdíly (tedy i bezpečnostní chyby). Dokonce existuji i veřejné exploity (kód připravený k využití chyby) a s ním může webovou stránku bez nadsázky napadnout i desetileté dítě.

Aktualizace pluginů a šablon

Druhou fází byla aktualizace pluginů a šablon včetně odstranění nepoužívaných, které také představují bezpečnostní hrozbu.

Zde nastává problém, pokud někdo neodborně upraví pluginy, jelikož při aktualizaci může dojít k přepsání změn a tedy ke změně funkcionality. Obvykle se jedná o problémy ve stylování, které se přepíší.

Odstranění škodlivých kódů a potenciálních hrozeb

Posledním krokem bylo zkontrolovat šablonu. Šablona nebyla „freečková“, ale používala (z povahy věci – změna souborů na disku) nebezpečný kód knihovny na práci s obrázky TimThumb. Ten jsme ze šablony „chirurgicky“ odebrali a nahradili generátorem náhledu z jádra WordPresu. S tím souvisela drobná úprava CSS kódu tak, aby vše vypadalo identicky.

Druhá část kontroly se zaměřila na přítomnost atypického kódu přímo v šabloně. Jedna se především o funkce eval(), base64_encode(), str_rot13 …. a další. Podotýkám, že ne vždy slouží pro škodlivé účely, je proto potřeba rozumět kódu a zohlednit kontext.

Po těchto úpravách jsme celý web ručně otestovali. Zda vše funguje a vypadá jak má. Druhý den ráno jsme zprovozněný web předali klientovi. Ten po návratu z focení ještě detailně prošel webové stránky a drobné niance reportoval. Drobné nedostatky jsme obratem odstranili.

Závěrem

Otevřený zdrojový kód má své výhody i nevýhody. Výhodou je svoboda rozhodování v tom, kdo bude webovou stránku upravovat, spravovat apod. Přechod od dodavatele k dodavateli je tak výrazně snažší. Daní za tuto svobodu jsou bezpečnostní rizika a potřeba se o webovou stránku starat, tedy minimálně aktualizovat a instalovat pouze ověřené pluginy.

V AW-dev nabízíme službu Chytrý hosting, který má tu výhodu, že krom základní hostingové služby webovou stránku monitorujeme a v případě nedostupnosti adhoc řešíme problém. Dále klientům doporučujeme službu
Servis 1+, což je měsíčně placená služba zahrnující rozvoj a úpravy webové stránky, včetně telefonické podpory. Díky tomu jsme schopni obvykle předcházet problémům, případně je obratem řešit.

Autor: Ing. Jakub Frieb, senior programátor AW-dev