( Simplu, dar greu de aflat! )

joi, 7 iulie 2011

Ce este CRLF injection?

Termenul crlf vine de la carriage return ( bagaj intoarcere) . acasetea sunt caractere acsii care nu se vad pe ecran sunt folosite in mod viclean
de windos penmtru a indica sfarsitul unei linii. In linux, sfarsitul liniilor este indicat doar de folosirea line feed.
Combinarea lui cr cu lr este folosita de exemplu atunci cand apasam enter pe tastatura. In functie de aplicatia folosita, in mod general instruim
aplicatia sa inceapa o noua linie sau sa trimita o comanda.
Un atac crlf apare atunci cand un hacker injecteaza comanda crlf in system.
Acest tip de atac nu este o gaura a tehnologiei in sistemul de opearare sau in softul serverului, dar depinde in mare masura de felul in care este
dezvoltat siteul. Unii constructori, sunt inconstienti de tipurile de atac de acest fel si lasa porti deschise atunci cand construiesc aplicatii
web, permitandu-le hackerilor sa infiltreze comenzi crlf.

Ce poate face un atacator daca siteul este vulnerabil.

Chiar dak atacatorul gaseste un site deschis infiltratiilor crlf, el este limitat de structura aplicatiei si cat de severa e fisura in system.
La unele tipuri de siteuri, aceasta fisura poate fi letala ptr. securitatea aplicatiei.in alte cazuri, acesta poate fi un mic bug, cu prioritati
minime.totul depinde de felul in care fisura permite userului sa manipuleze aplicatia web.
Exemplu 1 de CRLF Injection atac.
Orice tip de patrundere a userului poate fi o problema de securitate dak nu valida
Here is a sample basic log file:

Date UserName Message
25/07/2005-14:23:47 GoodSurfer I perfectly agree![/list:u]

This log file is perfectly normal, however if a user had to input something like:
I also agree with you..n25/07/2005-15:00:00 AnotherSurfer What are you talking about!?
The log file would then look like this:

Date UserName Message
25/07/2005-14:23:47 GoodSurfer I perfectly agree!
25/07/2005-14:42:19 BadSurfer I also agree with you..
25/07/2005-15:00:00 AnotherSurfer What are you talking about!?[/list:u]

In acest caz, din moment ce scurgerea nu este chiar filtrate de la cr si lf , userul a creat o intrare falsa in fisierul de logare.
Exemplu 2 de CRLF Injection atac
Multe protocoale de retea ( http) folosesc mult combinatii de comenzi carriage return si line feed din moment ce fiecare linie folosita in acest
protocol este separata de crlf. dak un user este capabil sa defineasca un salt http nefiltrat, it poses a risk, din moment ce userul poate fi
din acel moment capabil sa comunice direct cu serverul, facand legatura cu stratul aplicatiei.
.
De exemplu, headerul unui e-mail, news, si http se bazeaza pe structura “ cheie: valoare”,Si fiecare linie este definite printr-o combinatie
crlf la final.Locatia: headerul este folosit in http ptr a face redirectarea catre un alt url si un “set-cookie”:headerul este folosit ptr
cookie.Daca aceste intrari nu sunt validate , caracterele cr si lf pot fi introduce in user imput (intrarea userului) , si astfel scripurile
web pot fi prostite sa faca alte lucruri decat cele pentru care au fost create.
Daca intrarea nu este scanata de cr si lf si scripul contruieste o redirectare cu stringul:
.If the input is not checked for CR and LF and the script constructs a redirect with the string:
Location: $url%0d%0a
Noi putem redirecta spre un site in timp ce setam un cookie , setand $url (ca un singur string) catre:
http://www.i-was-redirected.com/%0d%0aSet-Cookie: Authenticated=yes%0d%0aReferer: www.somesite.com
Daca un atacator poate salva url-ul spre care este redirectat un alt user, inclusive cookie-urile,cu date importante, acest lucru poate deveni
serios.

Cum scanam dupa CRLF Injection
Cel mai bun mod de a scana siteul de vurnelabilitati este sa folosesti un web vulnerability scanner.Acesta verifica vulnerabilitati CRLF si
va vor da totul ptr. a le putea fixa.
Prevenirea atacurilor CRLF.
Cel mai bun mod de a te apara impotriva crlf-ului este sa filtrezi in mod extins orice intrare pe care oi poate face un user.Unul sa “stearga
totul mai putin informatiile bune” si sa filtreze meta caracterele primate prin intrarile userului.Aceasta va asigura ca doar ceea ce e util
va intra pe campul site-ului si si va fi trimis catre server.

Nu am tradus acolo unde pricepea toata lumea... imi pare rau daca nu e pe intelesul tuturor.