Cross-User Defacement
Author
Albert FloresCross-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 [url= 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. +more Samozřejmě je nutné dodržet strukturu[/url]url= 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]url= požadavky patřičně upravovat, nebo pomocí metod [[Sociální inženýrství (bezpečnost)|sociálního inženýrství][HTTP response splitting]] tj. +more 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ý[/url]], který bude[/url]] 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. +more 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
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