HTTP response splitting

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

HTTP response splitting je v informatice druh zranitelnosti webové aplikace spočívající v nesprávné kontrole vstupů od uživatele. Cílem útočníka je předat webové aplikaci takové vstupy, aby došlo k rozdělení původní odpovědi serveru na více odpovědí, které může následně využít k vykonání dalších útoků (např. Cross-User Defacement, Cache poisoning, Cross-site scripting či Page Hijacking).

Popis zranitelnosti

Zranitelnost spočívá v tom, že útočník vkládá do webové aplikace společně se vstupem také neočekávaný řetězec. Předpokládejme, že cílová aplikace nefiltruje ze vstupů znaky CR a LF. +more Pomocí těchto znaků útočník manipulovat s odpovědí a dává mu tak fakticky nástroj k ovlivnění zbytku nejen hlavičky a těla zprávy, ale také k vytvoření dalších odpovědí zcela pod jeho kontrolou. Je však důležité dodržet strukturu http odpovědi. Tedy dodržet prázdné řádky (znaky CR a LF zakódované jako %0d%0a), kterými je oddělena hlavička od těla. A dále také mezery zakódované jako %20. Požadavky na aplikaci k úspěšnému provedení útoku jsou dva:.

# musí docházet k přesměrování zdrojů # aplikace nesmí filtrovat ze vstupu znaky CR a LF

Příklad zranitelné aplikace

V tomto příkladu programátor aplikace chce přesměrovat uživatele na stránku podle hodnoty vstupní proměnné strana. Ta může být nastavena například pomocí kliknutí na odkaz, čímž se zavolá redirect. +morephp. strana=neco. php.

Při tomto volání dojde k vygenerování dvou odpovědí. První je odpověď se stavovým kódem [url=#302|302 Moved Temporarily]url=#200|200 OK][Stavové kódy[/url]] a druhá již má obsah stránky foobar. +morephp a stavový kód [[Stavové kódy[/url]].

Analýza webové aplikace

Předpokladem je, že aplikace přebírá jeden vstupní parametr a přesměrovává požadavek na jiný zdroj.

# Nastavení proxy serveru, např. WebScarab od organizace OWASP, na zachytávání požadavků i odpovědí. +more Případně lze využít [url=|stavovým kódem][plugin]] pro úpravu dat přenášených protokolem HTTP (např. Tamper Data), avšak v tomto případě nelze zachytávat i odpovědi. # Odeslání nějaké hodnoty. V proxy lze zjistit, že je odeslán požadavek, aplikace zdroj přesměruje (http stavový kód 302) a nakonec přichází odpověď (http stavový kód 200). # Pokud je jako parametr odeslán foobar%0d%0a (cílová platforma je Microsoft Windows), tak server vrátí též dvě odpovědi. První se stavovým kódem 302 Moved Moved Temporarily (předpoklad) a druhou se [[Stavové kódy[/url]] 200 OK, která obsahuje dokument.

Nedochází tedy k žádné změně oproti validnímu požadavku a s nejvyšší pravděpodobností nejsou v aplikaci mechanismy k filtrování vstupů. Pokud cílová aplikace běží na operačních systémech na bázi Unixu, tak je nutné nahradit znaky %0d%0a za znak %0a.

Obrana

Aby byla webová aplikace zabezpečena před útoky postavenými na HTTP Response Splitting je nutné ze všech uživatelských vstupů filtrovat znaky CR, LF a to v různých formách kódování před tím, než jsou použity při jakémkoliv generování hlaviček.

Externí odkazy

http://deadlytechnology. com/web-development/http-attack/ - HTTP Cache Poisoning on Deadly Technology * http://www. +moreowasp. org/index. php/HTTP_Response_Splitting] - HTTP Response Splitting na OWASP * http://www. owasp. org/index. php/Cache_Poisoning - Cache Poisoning na OWASP * http://yehg. net/lab/pr0js/training/webgoat. php - Řešení lekcí WebGoat .

Kategorie:Počítačové útoky

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top