CRLF je zkratka používaná k označení liniového posuvu (\r). Jak si člověk může všimnout ze symbolů v závorkách, „návrat vozíku“ označuje konec řádku a „posuv řádku“ označuje nový řádek. Proto se CR i LF používají k označení koncového bodu přímky. Když uživatel požaduje obsah na webu, server vrátí obsah webu spolu s hlavičkami HTTP. Záhlaví a obsah jsou odděleny definovanou kombinací CR a LF. Je to kvůli CRLF, že server ví, kde začíná nebo končí nová hlavička. Carriage Return Line Feed (CRLF) Injekce zranitelnost je typ Serveru, na Straně Injekce, které dochází, když útočník vloží CRLF znaky ve vstupním poli, aby oklamat server tím, že si myslí, že objekt byl ukončen a nový začal. K tomu dochází, když webová aplikace dezinfikuje vstup uživatele pro znaky CRLF. Má střední stupeň závažnosti (P3 podle vrt Bugcrowd).
CRLF Injection attack má dva nejdůležitější případy použití:
- rozdělení Log: Útočník vloží znak konce řádku a další řádek, aby falšoval položky souboru protokolu, aby oklamal správce systému skrýváním dalších útoků.
- HTTP Response Splitting: CRLF injection se používá k přidání hlaviček HTTP do odpovědi HTTP a například k provedení útoku XSS, který vede k zveřejnění informací.
Příklad:
jednoduchý požadavek GET může být vytvořený takto:
GET /%0d%0aSet-Cookie:CRLFInjection=PreritPathak HTTP/1.1
Poznámka: %0d %0a jsou kódované formy \r a \n, resp. Pokud je webová aplikace zranitelná, útočník bude moci na webu nastavit soubor cookie.
Dopady CRLF injection
CRLF Injection umožňuje útočníkovi nastavit falešné soubory cookie ukrást CSRF tokeny, zveřejnit informace o uživateli tím, že napíchne script (XSS) a provádět různé další útoky. To také umožňuje útočníkům deaktivovat & obejít bezpečnostní opatření, jako jsou XSS filtry & same Origin Policy (SOP), což je náchylné k následující útoky:
1. XSS nebo Cross Site Scripting
XSS nebo Cross Site Scripting je bezpečnostní chyba, která umožňuje útočníkovi vložit škodlivý kód JavaScript do webové aplikace. Následující požadavky GET jsou vytvořeny v Pokusovém řetězci CRLF injekce s XSS.
Praskání upozornění, které obsahují citlivé informace o uživateli,
www.target.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
Zakázáním XSS Ochrana
www.target.com/%0d%0aContent-Length:35%0d%0aX-XSS-Protection:0%0d%0a%0d%0a23
2. Cookie Injection
HTTP Response Split umožňuje útočníkovi nastavit škodlivé soubory cookie v prohlížeči oběti. Ve většině případů, tyto SE žádost bude mít za následek 307 Přesměrování, a tak oběť bude přesměrována na target.com & URL nebude obsahovat Set-Cookie parametr. Na pozadí však bude soubor cookie nastaven.
www.target.com/%0d%0aSet-Cookie:CRLFInjection=MaliciousCookieSet
3. Phishingové útoky
útočník může nastavit hlavičku umístění, která by oběť přesměrovala na zlou webovou stránku. Tento web může být vyvinut tak, aby vypadal stejně jako cílový web, a když oběť zadá své přihlašovací údaje,budou odeslány útočníkovi. Záhlaví umístění lze nastavit jako:
GET /%0d%0aLocation:%20https://evil.com HTTP/1.1
4. Fixace relace
podobně jako u útoku na injekci souborů Cookie zde útočník nastaví id relace uživatele na určitou hodnotu. Tento odkaz je odeslán oběti a když se oběť přihlásí pomocí této relace, útočník se může také přihlásit pomocí stejného ID relace.
www.target.com/%0d%0aSet-Cookie:session_id=942....
5. HTTP Header Injection
útočník může využít injekci CRLF k injekci hlaviček HTTP do aplikace, aby porazil bezpečnostní mechanismy, jako jsou filtry XSS nebo zásady stejného původu.
www.target.com/%0d%0aHackersHeader:NewHeader
CORS (Cross Origin Sdílení Zdrojů) aktivace záhlaví může být aplikován & může útočník využít JavaScript pro přístup k citlivým zdrojům, které jsou jinak chráněny SOP (same Origin Policy), která zabraňuje weby z různých zemí původu, přístup k sobě navzájem.
6. Otrava Web Cache
otrava Web-cache je technika, díky které může útočník obsluhovat otrávený obsah manipulací s webovou mezipamětí. Aby bylo možné tento problém úspěšně využít, útočník by musel otrávit zranitelné webové stránky caching proxy, syndikátory, sítě pro doručování obsahu (CDN) nebo jiné mechanismy ukládání do mezipaměti mezi klientem a serverem. Po úspěšné otravě webovou mezipamětí nebude mít oběť tušení o škodlivém obsahu, který jim cache poskytuje. Níže je uveden příklad toho, jak by útočník mohl potenciálně zneužít injekci záhlaví hostitele (pomocí CRLF) otravou webové mezipaměti.
pro následující požadavek:
$ telnet www.target.com 80Trying x.x.x.x...Connected to www.target.com.Escape character is '^]'.GET /%0d%0aX-Forwarded-Host:hacker.com HTTP/1.1 //or HostHost: target.com
existuje následující odpověď:
HTTP/1.1 200 OK
<
title
>Example</
title
>
<
script
src
=
"http://hacker.com/script.js"
>
Různé Případy Použití:
1. Vložení falešné hlavičky odpovědi HTTP:
Content-Length: 10
nyní webový prohlížeč analyzuje pouze dalších 10 bajtů.
2. Vstřikování falešné záhlaví HTTP odpověď:
Content-Length: 0
Tento je považován za ukončeno odpověď & webové prohlížeče begin rozebrat novou odpověď.
Omezení:
vývojář by měl mít tyto věci na paměti, aby se zabránilo CRLF injection:
- Zpřístupnění uživatelského vstupu.
- Kódujte CR & LF znaky (\r, \n), takže i když jsou dodány, nejsou serverem rozpoznány.
- ověřte vstup uživatele dříve, než dosáhne záhlaví odpovědí (např. pomocí metod jako StringEscapeUtils.escapeJava ()).
- zbytečná hlavička by měla být zakázána.
následující tabulka zdůrazňuje závažnost injekce CRLF podle různých průmyslových standardů:
Classification | ID / Severity |
---|---|
OWASP 2017 | A1 |
CWE | 93 |
CVSS:3.0 | CVSS:3.0: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:H |
Bugcrowd VRT | P3 |