HTTP response splitting (CRLF Injection)

HTTP response splitting (CRLF Injection)

CRLF injection je tip ranjivosti web aplikacija i posljedica je nedostatka korektne obrade ulaznih vrijednosti. Napad se sastoji od primoravanja servera da ispise Carriage Return Line Feed sekvencu u headeru responsa i unošenja proizvoljnih vrijednosti u response. CRLF sekvenca se interpretira kao razmak između dva headera a dve uzastopne kao razmak između header i body segmenta responsa. Uspješnim napadom se dobija kontrola nad body segmentom i omogućava napadaču da postavlja proizvoljne header vrijednosti i rastavi jedan response na više, odakle i potiče ime HTTP response splitting.

Ranjivost se često eksploatiše u slučajevima kada aplikacija koristi neke informacije preuzete od korisnika. Obzirom da neke web aplikacije koriste takav korisnički unos za generisanje vrijednosti u headerima responsa, korisnički unos će se kao parametar koristiti u headeru i omogućiti napadaču da preuzme kontrolu nad njim.

U jednostavnom primjeru aplikacije koja uzima kao parametar neki korisnički izbor, npr za tip prikaza na ekranu, header bi mogao sadržati sledeću sekvencu karaktera : 

HTTP/1.1 302 Moved Temporarily
Date: Thu, 04 Jun 2015 10:22:19 GMT
Location: http://primjer.com/main.jsp?prikaz=napredni

Prosljeđivanjem sledeće vrijednosti za parametar prikaz vrši se separacija responsa CRLF sekvencom (%0d%0a) i omogućava prosljeđivanje proizvoljnog headera koji će biti response.

napredni%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-
Type:%20text/html%0d%0aContent-Length:%2029%0d%0a%0d%0a<html>CRLF ranjivost</html>

Nakon obrade server vraća dva responsa :

HTTP/1.1 302 Moved Temporarily
Date: Thu, 04 Jun 2015 10:23:05 GMT
Location: http://primjer.com/main.jsp?prikaz=napredni
Content-Length: 0

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 27

<html>CRLF ranjivost</html>

Rezultat je ispis teksta “CRLF ranjivost” na strani klijenta. Napadač je u mogućnosti da kontroliše prikaz sadržaja na korisničkoj strani a pri tome korisnik sve podatke dobija od servera kome vjeruje. CRLF se moze iskoristiti za izvođenje XSS i sličnih napada.

Zaštita od ovakve vrste napada postiže se korektnom obradom podataka primljenih od strane klijenta i prijavljivanja potencijalno opasnih sekvenci. 

Izvor:https://www.owasp.org

Leave a Reply