Simpatie.ro - matrimoniale
H4cky0u Forum
Tutoriale de toate tipurile
Nou pe simpatie:
kristyna26
Femeie
24 ani
Satu Mare
cauta Barbat
24 - 47 ani
H4cky0u ForumReguliInregistrareLoginPozeNu sunteti logat. Lista Forumurilor Pe Tematici
H4cky0u Forum / Tutoriale /

Cross-Site Request Forgery [CSRF]

Pagini: 1 Moderat de PaiN
#1
GaMa
Administrator
Postari: 205
Ce inseamna Cross-Site Request Forgery ?

Cross-Site Request Forgery (se mai gaseste si sub numele de XSRF sau CSRF) funtioneaza prin exploatarea
increderii pe care un site o are in user. Taskurile unui site sunt legate de obicei de niste url-uri
specifice (ex:http://site/stoc?cumpara=100&stoc=ebay) care permit rularea unor actiuni specifice,

atunci cand sunt cerute. Daca un user este logat intr-un site iar atacatorul pacaleste browserul prin
crearea unui request de genul siteului dat in exemplul de mai sus, atunci task-ul este indeplinit ca
si cum ar veni din partea acelui user logat. De obicei, atacatorul introduce un html sau javascript
malicios intr-un email sau intr-un website pentru a executa un asftel de request fara ca victima sa aibe habar.
Acest lucru va fi facut ori direct, ori printru xss. Se mai poate actiona si prin vulnerabilitati in
bbcode sau in orice alt limbaj markup.

Cum se face un atac CSRF

Cele mai populare metode sunt executarea atacurilor prin tagul de imagine din HTML sau image object-ul
din Javascript. De obicei atacatorul le introduce intr-un email sau website astfel incat in momentul
in care victima incarca acea pagina sau email, ele vor crea un web request catre orice link pe care
atacatorul l-a introdus. Mai jos am pus o lista cu niste modalitati uzuale prin care se poate trimite un request:

Metode html

Code:

IMG SRC
  <img src="http://host/?comanda">

  SCRIPT SRC
  <script src="http://host/?comanda">

  IFRAME SRC
  <iframe src="http://host/?comanda">

Metode javascript

Code:

'Image' Object
  <script>
  var x = new Image();
  x.src = "http://host/?comanda";
  </script>

'XMLHTTP' Object (blabla)
  IE
  <script>
  var post_data = 'name=value';
  var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  xmlhttp.open("POST", 'http://url/cale/fisier.ext', true);
  xmlhttp.onreadystatechange = function () {
  if (xmlhttp.readyState == 4)
  {
  alert(xmlhttp.responseText);
  }

Mozilla
  <script>
  var post_data = 'name=value';
  var xmlhttp=new XMLHttpRequest();
  xmlhttp.open("POST", 'http://url/cale/fisier.ext', true);
  xmlhttp.onreadystatechange = function () {
  if (xmlhttp.readyState == 4)
  {
  alert(xmlhttp.responseText);
  }
  };
  xmlhttp.send(post_data);
  </script>

Atentie! Aceasta vulnerabilitate nu este limitata numai la browsere. Atacatorul poate introduce
scriptul intr-un document word, intr-un flash, film, rss feeder sau orice alt document care permite scripting.



Cum poti detecta daca un site este vulnerabil la CSRF

Daca siteul permite functionarea url-urilor statice sau requesturilor POST, atunci este posibil sa fie vulnerabil.

Prevenire

Pentru siteuri, trecerea de la o autentificare persistenta (cookieuri sau http auth) la una
tranzitorie (ex un field ascuns afisat la fiecare form) poate ajuta in prevenirea acestor
atacuri. O apropiere similara este includerea unui token secret in form-urile care sunt verificate.

O metoda alternativa este dubla trimitere a cookieurilor insa aceasta metoda merge numai in
requesturile AJAX. Daca un cookie de autentificare este citit folosind javascript inainte ca
post-ul sa fie facut, atunci se vor aplica regulile cross-domain. Daca serverul doreste ca
in acel request sa existe valoarea cookie-ului de autentificare in POST sau in url-ul GET-ului,
atunci acel request ar trebui sa provina de la un domeniu de incredere (trust domain). Intr-o alta
ordine de idei, aceasta metoda forteaza userul sa activeze javascript-ul, blocand-ui singura cale
prin care poate preveni un atac de tip xss.

Folosirea POST-ului in loc de GET nu ofera o protectie mai mare, deoarece javascript-ul poate fi
folosit in furtul acestor request-uri.


Este esential sa se seteze o perioada scurta pentru sesiune. Siteurile care cer userului sa se
logheze inainte sa indeplineasca o actiune, pot seta sesiunea acestuia la o perioada scurta,
de genul 5 minute. Acest lucru reduce probabilitatea unui atac csrf.

Autor:---


 
   
Pagini: 1  
Mergi la