Introducere
Comunicarea este esențială pentru creșterea gradului de conștientizare a proprietarilor de site-uri și pentru ai ajuta să înțeleagă de ce este important să remedieze vulnerabilitățile prezente în site-urile lor.
Ceea ce am observat până acum, când raportam vulnerabilități web printr-un raport, este că acestia nu iau suficient in serios aceste rapoarte. Se impune sa tot mai des sa-i arătatm clientului sau echipei de dezvoltatori a clientului, exemple reale cu privire la modul în care un atacator poate profita de o vulnerabilitate pentru a compromite confidențialitatea, integritatea și / sau disponibilitatea datelor lor.
În cazul atacului de tip Cross-site scripting, atacul vizează cel mai important activ al lor, si anume clienții. Creșterea gradului de conștientizare și ajutarea unui client să înțeleagă ce riscuri sunt asociate cu o astfel de vulnerabilitate, cred ca sunt foarte importante atunci când vine vorba de prevenirea atacurilor impotriva aplicațiilor web.
Așadar, în acest articol, în loc să arăt doar un text “Proof of concept” și apoi o grămadă de text care descrie impactul atacurilor Cross-site scripting, voi face un demo care cred ca va ajuta sa prezint mai bine impactul pe care-l are un atac Cross-site scripting, proprietarilor de site-uri și echipelor lor de dezvoltatori.
Vom incepe prin a face o scurtă introducere a atacurilor de tip Cross-site scripting și apoi vom coda un exemplu ușor, reproductibil, care sper să demonstreze cat de important este să remediați vulnerabilitatile de acest tip.
Cross-Site Scripting attacks
Un atac de tip Cross-site scripting, cunoscut și sub numele de atac XSS, se întâmplă atunci când cineva este in situatia să exploateze o vulnerabilitate într-o aplicație / site pentru a rula cod JavaScript în browserul web al victimei.
Atacurile XSS ar trebui au loc deoarece browserele nu aplică principiul celui mai mic privilegiu și acordă tuturor scripturilor de pe un site același nivel de privilegii, indiferent de unde provine scriptul sau cine l-a pus acolo, Codul JavaScript al atacatorului va primi aceleași privilegii ca scripturile legitime din site-ul web.
Printr-un cod JavaScript malicios se poate controla orice din ceea ce poate face un browser, cum ar fi: schimbarea aspectului vizual al unui site, modificarea adresei URL, adăugarea și ștergerea intrărilor din istoricul browserului web, efectuarea acțiunilor în numele unui utilizator autentificat sau descărcarea și executarea JavaScript rău intenționat de pe orice alt server web.
Sunt trei tipuri de atac Cross-site scripting:
Stored
Se întâmplă atunci când vulnerabilitatea permite atacatorului să stocheze codul JavaScript în baza de date a aplicațiilor web. Acesta este cel mai prost scenariu, deoarece atacul va viza toți utilizatorii care vizitează partea afectată a site-ului web. De exemplu, gândiți-vă la un magazin online, dacă vulnerabilitatea se găsește în câmpul de comentarii al unui produs, atacul va viza toți utilizatorii care vizitează pagina produsului.
Reflected
Se întâmplă atunci când vulnerabilitatea permite atacatorului să execute codul JavaScript inclus într-o cerere HTTP. Codul JavaScript poate fi inserat într-un antet HTTP, parametru șir de interogare sau parametru body. De exemplu, gândiți-vă din nou la un magazin online care are un formular de căutare vulnerabil; dacă în loc să caute un produs, un utilizator introduce cod JavaScript ca termen de căutare, iar termenul de căutare este afișat pe ecran după efectuarea căutării, codul JavaScript care a fost injectat ca termen de căutare va fi executat.
DOM based
Se întâmplă atunci când există o vulnerabilitate în codul JavaScript al site-ului web care permite atacatorului să-l manipuleze și să execute propriul său cod JavaScript. Poate fi reflectat sau stocat.
Vulnerabilitatea care duce la atacuri DOM-XSS nu se află în codul din partea serverului care gestionează cererea HTTP, ci în codul client al aplicației web.
De exemplu, gândiți-vă la o secțiune de documentare a unei aplicații web sau a unei cărți online; s-ar putea să existe un index care, după ce este dat clic, ne duce la o parte specifică a documentației fără a reîmprospăta pagina sau a face nicio solicitare HTTP. În unele dintre aceste cazuri, când numele secțiunii apare în URL după un simbol #, ceea ce face de obicei aplicația este să identifice conținutul după simbolul hash:
https://anawesome.book/#chapten
În acest exemplu, capitolul 1 ne duce în acea parte a paginii. Dacă schimbăm conținutul după # cu un cod JavaScript:
https://anawesome.book/# <script> console.log („exemplu”) </script>
ar putea duce la executarea codului JavaScript dacă nu există validare.
La sfarsitul acestui articol sunt prezentate cateva resurse si tutoriale care va vor ajuta sa intelegeti mai bine atacurile Cross-site scripting.