Nebezpečí zvané Cross-Site Scripting

Cross-Site Scripting (XSS) je jeden z nejrozšířenějších útoků na WordPress. Navíc může být velmi zákeřný. Za určitých okolností totiž můžete mít web “hacknutý” i “nehacknutý”. Ale projdeme si to spolu pěkně popořádku.

XSS je v podstatě vložený škodlivý kód, který když se zobrazí tak se spustí. Představte si neošetřený formulář, třeba pro komentáře, kam cokoliv vložíte, tak se zobrazí všem ostatním. Co do takového formuláře můžete vložit, pokud byste z toho chtěli mít prospěch? Například vyskakovací popup okno, kde bude bude hláška “Navštivte stránku hustýweb.cz”. Každý kdo na stránku přijde, pak toto popup okno uvidí.

Samozřejmě útočníci se pokusí o něco více ziskového. Například takto protlačit do zranitelného webu reklamu, přesměrování, malware, DoS a tak dále. V každém případě neošetřený formulář plus javascript rovná se XSS 🙂

Tahle verze XSS se nazývá Persistent XSS (někdy také Stored XSS). Kód Javascriptu se uloží na server (většinou do databáze) a PHP jej pak zobrazuje. Jakmile se ta stane, máte napadený web a je nutné odstranit javascript a samozřejmě zabezpečit formulář.

Existuje však i takzvaný Non-persistent XSS (Reflected XSS). Ten je daleko záludnější a je i náročnější na něj přijít. Váš web totiž může být napaden a zároveň napaden není.

Ok jak to funguje. Představte si neošetřený formulář, který něco zobrazí jen pro daného návštěvníka. Například políčko vyhledávání. Za normálních okolností, tam zadáte klíčové slovo a WordPress zobrazí výsledky. Toto klíčové slovo se nikam neukládá, prostě se využije jen k hledání.

Asi si říkáte, jaký bude mít smysl, pokud se útočníkovy zobrazí vyskakovací okno s reklamou na vlastní stránku. Vždyť to uvidí jen on sám. Vtip je v tom, že tento útok lze často provést přes URL, respektive metodu GET (zranitelnýweb.cz/?s=škodlivý-kód). Může tak hodit odkaz ve stylu “Neuvěřitelný článek na zranitelnýweb.cz, přečtěte si jej ” a hodí za to odkaz na vyhledávání se škodlivým kódem.

Takovouto metodou jde využít dobrého jména jakéhokoliv webu k šíření malware. Škodlivý kód totiž může obsahovat i funkci automatického sdílení na sociální sítě, no a pak už se to šíří fakt rychle.

Síla XSS je v tom, že využívá váš prohlížeč. Posílá mu přes Javascript příkazy a ten je plní. Samozřejmě prohlížeče s tím dneska počítají a mají určitou formu ochrany. Například stránky na jedné doméně nemohou číst obsah stránky na jiné doméně přes Javascript. Obdobně se proti tomu chrání i weby, které generují různé řetězce. Pokud je volající Javascript nezná, tak mu nepovolí akci.

Je dobré o XSS útocích vědět. U WordPress se s nimi totiž setká snad každý. Pokud máte nějaký log, tak je uvidíte téměř každý den. Roboti jej prostě zkouší.