Tag Archive cross site scripting attacks

Byhackeradvisor

Prevenirea Atacurilor de Tip Cross Site Scripting (Atac CSRF)

XSRF, cunoscut si sub numere de cross site request forgery sau CSRF, poate fi folosit pentru a pacali un utilizator autentificat sa faca anumite modificari neintentionate pe site. Profita de increderea pe care o ofera site-ul tau utilizatorilor deja autentificati.

 

Ce inseamna Cross Site Request Forgery?

 

Pentru ca un astfel de atac sa fie realizat cu succes, site-ul tau trebuie sa identifice utilizatorii inregistrati cu ajutorul cookie-urilor, si acestia trebuie sa fie autentificati la momentul vizitei pe site sau sa acceseze link-ul pe care atacatorul l-a pus la dispozitie.

Adesea, atacatorul nu are neaparat nevoie sa convinga utilizatorii sa dea click fizic pe link-ul care declanseaza atacul. Exista o multime de modalitati prin care un utilizator poate sa “acceseze” link-ul atacatorului. De exemplu, orice site la care atacatorul are acces, cum ar fi un forum sau un site de socializare, poate include anumite tag-uri pe imagine care duc catre link-ul atacatorului. Link-ul poate fi construit astfel incat sa forteze browser-ul web al utilizatorului, sa execute o anumita actiune folosindu-se de sesiunea deja deschisa pe site, impreuna cu alte riscuri care vin cu accesarea acelei adrese web. In acest fel, cand pagina este incarcata, este ca si cand utilizatorul a accesat intentionat link-ul, iar autentificarea si executatea acelei actiuni se va face fara a se mai solicita re-autentificarea utilizatorului.

 

Daca utilizatorul vizat pentru atac se intampla sa fie administratorul, acest atac ar putea garanta atacatorului controlul complet asupra intregului site.

 

Imaginati-va urmatorul scenariu:

 

  1. Boby navigheaza pe mysite.com, si este autentificat ca si utilizator legitim.
  2. Mysite.com are un buton, care atunci cand este apasat, va trimite automat un e-card la toate contactele lui Boby salvate, automat cu un link.
  3. In timp ce Boby navigheaza, are o intrebare despre anumite functii, si merge pe forumul favorit cu informatii despre mysite.com – mysiteforums.com
  4. El deschide un articol interesant al unui alt utilizator. Acesta contine o eticheta cu imagine care arata in felul urmator:  <img src=’http://www.mysite.com/send-e-cards’/>
  5. Browserul lui Boby incearca sa incarce imaginea, si trimite datele de autentificare ale lui Bob impreuna cu solicitarea pentru mysite.com/send-e-cards.
  6. Mysite.com primeste cererea de la Bob pentru trimiterea e-card-ului, si o trimite.
  7. Atacul a fost realizat cu succes, chiar daca Bob nu a apasat niciodata butonul send.

Acest tip de atac a fost utilizat cu succes in raspandirea virusilor, atat prin intermediul MySpace, cat si Facebook. Atacurile de aceasta natura, faciliteaza autopropagarea, deoarece ataca site-uri unde utilizatorii isi stocheaza informatii personale.

 

Impactul asupra site-ului tau si a bazei de utilizatori

 

Impactul XSRF poate minim sau critic in functie de natura site-ului tau. Este clasificat ca si un caz cu risc minim in timpul scanarii noastre din cauza lipsei de informatii suplimentare necesare pentru evaluarea completa a securitatii, care poate fi facuta numai de proprietarii site-urilor.

XSFR poate fi folosit pentru orice tip de atac, de la pacalirea unui utilizator pentru schimbarea parolei si pana la retragerea de fonduri, daca site-ul permite tranzactii cu banca. Exista posibilitatea prevenirii atacurilor XSRF prin respectarea recomandarilor din sectiunea solutii.

 

Cum sa previi atacurile CSRF ?

 

Prevenirea CSRF presupune modificarea modalitatii de functionare a cererilor de tip GET si POST pe site, pentru a te asigura ca utilizatorii care fac astfel de cereri sunt cei ce le-au facut cu adevarat si ca nu au fost pacaliti in trimiterea acestor cereri. Din cauza modului de operare al atacurilor XSRF, atacatorul nu are niciodata acces la datele din cookie-urile stocate pe calculatoarele tinta si acest lucru poate fi folosit in construirea unui mijloc de aparare.

Profitand de acest lucru, proprietarii de site-uri, pot genera valor unice pentru fiecare formular, astfel incat un atacator sa nu poata ghici aceste valori, inainte ca cererile de tip POST si GET sa fie trimise. Aceasta se numeste nonce sau valoare unica aleatorie.

Pentru implementarea acesteia, trebuie sa incluzi cateva layere logice in site-ul tau :

1. Introdu un camp ascuns in toate formularele de pe site-ul tau, care sunt necesar atunci cand un utilizator se autentifica. De exemplu, in aceasta situatie, il vom numi nonce.

2. Include valoarea nonce in variabilele sesiunii de utilizator, astfel incat utilizatorii sa aiba o copie.

3. Dupa ce toate evaluarile POST sau GET sunt securizate, asigura-te ca variabila nonce din browser (sesiunea) este aceeasi cu variabila nonce din formular (valoarea GET/POST).

4. Daca ele nu conincid, cererea ar putea fi inaintata fraudulos (XSRF).

5. Variabila nonce, poate fi generata pentru fiecare formular nou sau stocata pe server, intr-o baza de date. De retinut este faptul ca, daca este generata una noua de fiecare data, o sa intampinati dificultati cu functionalitatea back din browserele utilizatorilor, sau browserele cu taburi multiple.

 

Aici este un exemplu de cod PHP, care nu salveaza valorile intr-o baza de date:

Prima Pagina ( formularul )

<?php
  //start the user session (set session cookie)
  session_start();
  //generate nonce - this nonce will be used for this session only, using random values and the time
  $nonce=hash("md5",rand().time().rand());
  echo "<br />Nonce: ".$nonce."<br />";
  $_SESSION['nonce']=$nonce;
?>

<!-- Now create the form, and include the same nonce we generated above-->
<form name="do_some_action" action="completeAction.php" method="POST">
  <input type="hidden" name="nonce" value="<?php echo $nonce?>"/>
  <input type="submit" value="do Action"/>
</form>

Pagina unde  userul face click pe buton

<?php
  //start session
  session_start();
  //get the POST nonce
  $post_nonce=$_POST['nonce'];
  //get the session nonce
  $session_nonce=$_SESSION['nonce'];
  //make sure to validate the post input to prevent other types of attacks! Not shown here for brevity
  if($post_nonce===$session_nonce)
  	echo "Request is safe!";
  else
  	echo "Data might be stolen!";
?>

Additional Resources


Prevent CSRF on Your Website

HackerAdvisor.com  include scanari numeroase si diferite, care te vor ajuta sa-ti securizezi site-ul, inclusiv te vor ajuta sa descoperi amenintari legate de Cross Site Scripting Forgery, sau alte tipuri de atacuri cross site scripting.

Byhackeradvisor

Seturile de caractere si securitatea

Seturile de caractere transmit browserelor ce tip de text primesc de la site-ul dvs., de exemplu, textul în limba engleză sau text în limba chineză. Fiecare document sau pagină de pe site-ul dvs. ar trebui să includă un set de caractere bine definite. Cum ar fi UTF-8 sau USASCII.

 

Cum sunt utilizate in site seturile de caractere?

Prin omiterea unui set de caractere poate duce la situatia in care unele browsere sa fie nevoite sa „ghiceasca” setul corect de caractere. Dacă ele ghicesc în mod incorect, un atacator ar putea genera un script cross site împotriva utilizatorilor. În general, acest lucru nu este o amenințare decât dacă utilizatorii au acces la modificarea sau încărcarea de conținut pe site-ul dumneavoastră.

Folosind un set de caractere incorect este potențial mai rău decât nefolosirea nici unui set de caractere. Un set de caractere incorect poate permite unui atacator să creeze un conținut special pentru a fi trimis catre site-ul dvs., știind dinainte cum va fi interpretat, generand vulnerabilitati de tip cross site scripting.

Cum afecteaza aceasta securitatea mea?

Seturile de caractere incorecte sau lipsa lor ridica gradul de risc al securitatii de la unul cu risc scăzut la unul cu risc ridicat. În cazurile cu impact redus, setul de caractere necorespunzătoare este foarte puțin probabil să conducă la o vulnerabilitate de securitate, dar poate avea un impact pentru utilizatorii din diferite țări, în moduri diferite. Unele browsere pot ghici caracterul setat incorect, conducand ca site-ul dvs. să apară ca și cum ar fi scrias într-o altă limbă. Prin urmare,este indicat ca toate seturile de caractere să fie setat corect, pentru a maximiza gradul de utilizare al site-ului.

Setările pentru seturile de caractere cu grad mai mare de risc sunt stabilite pe renderables, cum ar fi o imagine. Un caracter incorect setat aici poate declansa atacuri cross site scripting, și poate duce la pierderea de date și de informatii private.

Solutii

 

Asigurați-vă că fiecare pagină care conține un text, include de asemenea un set de caractere, și asigurați-vă că setul de caractere este setat corect pentru continutul dvs. În aproape toate cazurile, setul de caractere UTF-8 este o alegere bună pentru text, cu toate acestea pentru fiecare caz specific poate varia. Pentru a seta setul de caractere de pe pagina dvs., includeti tag-uri HTML în partea de sus a fiecărei pagini pentru a rezulta ceva similar cu textul de mai jos. Rețineți faptul că seturile de caractere sunt de multe ori stabilite în același timp, si ca tip de conținut.

<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>

 

Resurse Suplimentare

Gaseste Setari necorespunzatoare pe Web serverul dvs

 

Hackeradvisor.com, include in procesul de scanare, diferite setari de test, care te vor ajuta sa reduci expunerea site-ului la atacuri, inclusiv impotriva setarilor Setului de Caractere.