Cross-User Defacement je v informatice druh zranitelnosti webové aplikace založený na technice HTTP response splitting. Cílem útočníka je nahradit odpověď od serveru podvrženým dokumentem.

Popis zranitelnosti Předpokladem k provedení Cross-User Defacement je aby aplikace byla zranitelná na HTTP response splitting tj. nesmí být filtrovány znaky CR a LF a musí docházet k přesměrování.

Pokud jsou tyto dvě podmínky splněny, tak je útočník schopen vytvořit podvržený HTTP požadavek tak, aby rozdělil odpověď od serveru na odpovědi dvě a to s tím, že obsah druhé odpovědi je zcela v jeho režii. Původní požadovaný dokument prohlížeč zahodí a je nahrazen podvrženým dokumentem. Samozřejmě je nutné dodržet strukturu HTTP odpovědi.

Takto upravená stránka může být dále zneužita například k vylákání soukromých informací či hesel. K provedení útoku může útočník využít veřejně dostupný proxy server, který bude HTTP požadavky patřičně upravovat, nebo pomocí metod sociálního inženýrství přinutit oběť kliknout na upravený odkaz.

Struktura HTTP odpovědi Aby byl útok proveden, je nutné při upravování odpovědi zachovat její strukturu. První obsaženou informací v odpovědi je verze použitého protokolu a stavový kód. HTTP/1.0 200 OK Následují další, v tomto případě, ne moc zajímavé informace jako je datum, verze webového serveru, jazyk, etc. Pokud jsou vynechány, tak se nic neděje. Date: Fri, 15 Oct 2004 08:20:25 GMT Server: Apache/1.3.29 (Unix) PHP/4.3.8 X-Powered-By: PHP/4.3.8 Vary: Accept-Encoding,Cookie Cache-Control: private, s-maxage=0, max-age=0, must-revalidate Content-Language: cs Hlavičky popisující typ dat v odpovědi a obsah. Content-Type: text/html Content-length: 47 -- prázdný řádek -- A za prázdným řádkem je umístěn samotný dokument.

Útok na zranitelnou aplikaci Identifikace parametru pro přesměrování. Vložení nějaké hodnoty: foo

Přechod na nový řádek pomocí znaků CR a LF: %0d%0a

Nastavení Content-Length na nulu (Content-length: 0), kterou je nutné zakódovat jako URL do sekvence %200: Content-length:%200

Vložení hlavičky další odpovědi (speciální znaky je nutné převést do URL kódování): HTTP/1.1 200OK Content-Type: text/html Content-length: 47 Deface Odeslání dotazu.

Odesílaný dotaz by měl vypadat nějak takto:

foobar%0d%0aContent-length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent- length:%2047%0d%0a%0d%0aDeface

Obrana Obranou před Cache poisoning je neumožnit útočníkovi provést HTTP Response Splitting, čehož lze dosáhnout odfiltrováním znaků CR a LF od všech uživatelských vstupů zejména tam, kde jsou hodnoty parametrů vkládány do hlaviček.

Související články HTTP response splitting Cache poisoning

Externí odkazy http://www.owasp.org/index.php/Cross-User_Defacement () http://www.securiteam.com/securityreviews/5WP0E2KFGK.html () http://yehg.net/lab/pr0js/training/webgoat.php – Řešení lekcí WebGoat ()

Kategorie:Webové exploity Kategorie:Anglická slova a fráze