javascript injection tutorial
Ce este Javascript Injection?
Javascript este una dintre cele mai populare tehnologii și este cel mai utilizat pentru pagini web și aplicații web.
Poate fi folosit pentru realizarea diferitelor funcționalități ale site-ului web. Cu toate acestea, această tehnologie poate aduce unele probleme de securitate, de care dezvoltatorul și testerul ar trebui să fie conștienți.
Javascript poate fi folosit nu numai în scopuri bune, ci și pentru unele atacuri rău intenționate. Unul dintre acestea este Javascript Injection. Esența JS Injection este de a injecta codul Javascript, care va fi rulat din partea clientului.
În acest tutorial, vom afla mai multe despre cum să verificăm dacă este posibilă injectarea Javascript, cum poate fi efectuată injecția JS și care sunt consecințele pe care JS Injection le poate aduce.
Ce veți învăța:
- Riscurile injecției JavaScript
- De ce este important să testați injecția JS?
- Comparație cu alte atacuri
- Se verifică injecția JavaScript
- Modificarea parametrilor
- Modificarea proiectării site-ului web
- Cum se testează împotriva injecției JavaScript
- Posibilă protecție împotriva acestui atac
- Concluzie
- Lectură recomandată
Riscurile injecției JavaScript
JS Injection aduce o mulțime de posibilități pentru un utilizator rău intenționat de a modifica designul site-ului web, de a obține informații despre site-ul web, de a schimba informațiile afișate ale site-ului web și de a manipula cu parametrii (de exemplu, cookie-urile). Prin urmare, acest lucru poate aduce unele pagube grave pe site-ul web, scurgeri de informații și chiar hack.
Scopul principal al JS Injection este de a schimba aspectul site-ului web și de a manipula parametrii. Consecințele injecției JS pot fi foarte diferite - de la proiectarea pagubelor web la accesarea contului altcuiva.
De ce este important să testați injecția JS?
Mulți ar întreba dacă testarea pentru injecția JS este cu adevărat necesară.
Verificarea vulnerabilităților JS Injection face parte din testarea securității. Testarea securității se efectuează de obicei numai dacă a fost inclusă în planificarea proiectului, deoarece necesită timp, multă atenție și verificarea mai multor detalii.
Am observat că în timpul realizării proiectului este destul de obișnuit să omiteți testarea împotriva eventualelor atacuri - inclusiv JS Injection. În acest fel, echipele încearcă să economisească timpul proiectului. Cu toate acestea, această practică se încheie foarte des cu reclamațiile clienților.
Trebuie știut că testarea securității este foarte recomandată chiar dacă nu este inclusă în planurile de proiect. Ar trebui să se verifice principalele atacuri posibile - în același timp trebuie să se verifice dacă există vulnerabilități JS Injection.
Lăsând Javascript simplu Vulnerabilități de injecție în produs poate costa calitatea produsului și reputația companiei. Ori de câte ori am învățat să testez împotriva posibilelor atacuri și în testele generale de securitate, nu omit niciodată această parte a testării. În acest fel, sunt mult mai sigur de calitatea produsului.
Comparație cu alte atacuri
Trebuie menționat faptul că injecția JS nu este la fel de riscantă ca Injecție SQL , deoarece este efectuat pe partea client și nu ajunge la baza de date a sistemului așa cum se întâmplă în timpul atacului SQL Injection. De asemenea, nu este la fel de riscant ca atacul XSS.
Uneori, în timpul acestui atac, doar aspectul site-ului web poate fi schimbat, în timp ce scopul principal al atacului XSS este de a hack alte date de conectare.
Cu toate acestea, JS Injection poate provoca, de asemenea, unele pagube grave pe site-ul web. Nu numai că poate distruge aspectul site-ului web, ci poate deveni și o bază bună pentru piratarea datelor de conectare ale altor persoane.
Se verifică injecția JavaScript
Când începeți să testați împotriva JS Injection, primul lucru pe care ar trebui să-l faceți este să verificați dacă JS Injection este posibilă sau nu. Verificarea acestui tip de posibilitate de injectare este foarte ușoară - atunci când navigați la site-ul web, trebuie să tastați codul de bare de adresă al browserului astfel:
javascript: alert („Executat!”);
Dacă apare o fereastră pop-up cu mesajul „Executat!”, Atunci site-ul web este vulnerabil la JS Injection.
Apoi, în bara de adrese a site-ului web, puteți încerca diverse comenzi Javascript.
Trebuie menționat faptul că JS Injection nu este posibilă doar din bara de adrese a site-ului web. Există diverse alte elemente ale site-ului web, care pot fi vulnerabile la JS Injection. Cel mai important lucru este să cunoașteți cu exactitate părțile site-ului care pot fi afectate de Javascript Injection și cum să le verificați.
Țintele tipice de injecție JS sunt:
- Diverse forumuri
- Câmpurile de comentarii ale articolului
- Cărți de oaspeți
- Orice alte forme în care textul poate fi inserat.
Pentru a testa dacă acest atac este posibil pentru formularul de salvare a textului, în ciuda furnizării de text normal, tastați codul Javascript așa cum se menționează mai jos și salvați textul în formular și reîmprospătați pagina.
javascript: alert („Executat!”);
Dacă în pagina nou deschisă include o casetă de text cu mesajul „Executat!”, Atunci acest tip de atac de injecție este posibil pentru formularul testat.
Dacă în ambele moduri apare o casetă de text cu mesajul, puteți încerca să spargeți site-ul web cu metode de injecție JS mai dificile. Apoi, puteți încerca diferite tipuri de injecție - modificarea parametrilor sau modificarea proiectului.
Desigur, modificarea parametrilor este considerată ca fiind una mai riscantă decât modificarea proiectului. Prin urmare, în timpul testării, trebuie acordată mai multă atenție modificării parametrilor.
De asemenea, trebuie reținut că părțile site-ului web mai vulnerabile pentru Javascript Injection sunt câmpuri de intrare, în care se salvează orice tip de date.
Modificarea parametrilor
Așa cum am menționat mai devreme, una dintre posibilele daune cu injecția Javascript este modificarea parametrilor.
În timpul acestui atac de injecție, un utilizator rău intenționat poate obține informații despre parametri sau poate modifica orice valoare a parametrilor( Exemplu ,setări cookie). Acest lucru poate provoca riscuri destul de grave, deoarece un utilizator rău intenționat poate câștiga conținut sensibil. Un astfel de tip de injecție poate fi efectuat folosind unele comenzi Javascript.
Să ne amintim, că comanda Javascript care returnează cookie-ul de sesiune curent este scrisă în consecință:
javascript: alert (document.cookie);
Introdus în bara URL a browserului, va afișa o fereastră pop-up cu cookie-uri de sesiune curente.
Dacă site-ul web utilizează cookie-uri, putem citi informații precum ID-ul sesiunii serverului sau alte date de utilizator stocate în cookie-uri.
Trebuie menționat faptul că în loc de alert () poate fi utilizată orice altă funcție Javascript.
De exemplu ,dacă am găsit un site web vulnerabil, care stochează ID-ul sesiunii în parametrul cookie „session_id”. Apoi putem scrie o funcție care modifică ID-ul sesiunii curente:
javascript: void (document.cookie = „session_id =<>');
În acest fel, valoarea ID-ului sesiunii va fi modificată. De asemenea, sunt posibile orice alte modalități de modificare a parametrilor.
De exemplu, un utilizator rău intenționat vrea să se conecteze ca și alte persoane. Pentru a efectua conectarea, utilizatorul rău intenționat va schimba mai întâi setările cookie-urilor de autorizare în true. Dacă setările cookie-urilor nu sunt setate ca „adevărat“, atunci valoarea cookie-ului poate fi returnată ca „nedefinită“.
arhitectura calculatoarelor întrebări și răspunsuri la interviu pdf
Pentru a modifica aceste valori ale cookie-urilor, un utilizator rău intenționat va efectua conform comenzii Javascript din bara URL din browser:
javascript: void (document.cookie = „autorizare = adevărat“);
În rezultat, parametrul cookie actual autorizare = fals va fi schimbat în autorizare = adevărat. În acest fel, un utilizator rău intenționat va putea avea acces la conținutul sensibil.
De asemenea, trebuie menționat faptul că uneori codul Javascript returnează informații destul de sensibile.
javascript: alert (document.cookie);
De exemplu, dacă dezvoltatorul unui site web nu a fost suficient de precaut, acesta poate returna numele și valorile parametrilor de nume de utilizator și parolă. Apoi, astfel de informații pot fi folosite pentru piratarea site-ului web sau doar pentru schimbarea valorii parametrului sensibil.
De exemplu, cu codul de mai jos putem modifica valoarea numelui de utilizator:
javascript: void (document.cookie = ”nume utilizator = altUtilizator”);
În acest fel, orice altă valoare a parametrilor poate fi de asemenea modificată.
Modificarea proiectării site-ului web
Javascript poate fi, de asemenea, utilizat pentru a modifica orice formă a site-ului web și, în general, designul site-ului web.
De exemplu, cu Javascript puteți modifica orice informații afișate pe site:
- Text afișat.
- Fundalul site-ului web.
- Aspectul formularului site-ului web.
- Aspectul ferestrei pop-up.
- Aspectul oricărui alt element de site.
De exemplu, pentru a schimba adresa de e-mail afișată pe site, trebuie utilizată comanda Javascript corespunzătoare:
javascript: void (document.forms [0] .email.value = ”Test@test.com”) ;
Sunt posibile și alte câteva manipulări complicate cu designul site-ului web. Cu acest atac putem accesa și modifica și clasa CSS a site-ului web.
De exemplu, dacă dorim să schimbăm imaginea de fundal a site-ului web cu JS Injection, atunci comanda trebuie executată în consecință:
javascript: nul (document. background-image: url („other-image.jpg“);
De asemenea, un utilizator rău intenționat poate scrie codul de injecție Javascript care este menționat mai jos în formularul de inserare a textului și îl poate salva.
javascript: void (alertă („Bună ziua!“));
Apoi, de fiecare dată când se deschide o pagină, va apărea o casetă de text cu mesajul „Bună ziua!”.
Designul site-ului web modificat cu Javascript Injection este mai puțin riscant decât modificarea parametrilor. Cu toate acestea, dacă designul site-ului web va fi modificat într-un mod rău intenționat, atunci acesta poate costa reputația companiei.
Cum se testează împotriva injecției JavaScript
Poate fi testat în următoarele moduri:
- Manual
- Cu instrumente de testare
- Cu pluginuri pentru browser
Posibile vulnerabilități Javascript pot fi verificate manual dacă aveți cunoștințe bune despre cum ar trebui să fie efectuate. De asemenea, poate fi testat cu diverse instrumente de automatizare.
De exemplu, dacă v-ați automatizat testele la nivel API cu instrumentul SOAP UI, atunci este de asemenea posibil să rulați teste de injecție Javascript cu SOAP UI .
Cu toate acestea, pot să comentez doar din propria mea experiență, că ar fi trebuit să aveți cunoștințe bune despre instrumentul SOAP UI pentru a testa cu el JS Injection, deoarece toți pașii de testare ar trebui să fie scrise fără greșeli. Dacă un pas de testare este scris incorect, acesta poate provoca și rezultate greșite ale testelor de securitate.
De asemenea, puteți găsi diverse pluginuri ale browserului pentru a verifica dacă există un atac. Cu toate acestea, este recomandat să nu uitați să vă verificați manual împotriva acestui atac, deoarece de obicei oferă rezultate mai precise.
Aș vrea să spun că testarea manuală împotriva Javascript Injection mă face să mă simt mai încrezător și mai sigur cu privire la securitatea site-ului web. În acest fel puteți fi siguri că niciun formular nu a fost ratat în timpul testării și toate rezultatele vă sunt vizibile.
Pentru a testa împotriva Javascript Injection, ar trebui să aveți cunoștințe generale despre Javascript și trebuie să știți ce părți ale site-ului sunt mai vulnerabile. De asemenea, trebuie să vă amintiți că site-ul web poate fi protejat împotriva JS Injection și, în timpul testării, ar trebui să încercați să rupeți această protecție.
Astfel veți fi siguri dacă protecția împotriva acestui atac este suficient de puternică sau nu.
Posibilă protecție împotriva acestui atac
În primul rând, pentru a preveni acest atac, fiecare intrare primită ar trebui validată. Introducerea ar trebui validată de fiecare dată și nu doar atunci când datele sunt acceptate inițial.
Este foarte recomandat să nu vă bazați pe validarea partea clientului. De asemenea, se recomandă efectuarea unei logici importante în partea serverului.
Mulți încearcă să se protejeze împotriva injecției Javascript schimbând ghilimelele în dublu, iar codul Javascript nu ar trebui să fie efectuat în acest fel.
De exemplu, dacă ați scrie în câmpul de comentarii orice cu ghilimele ..., acele ghilimele vor fi înlocuite cu dublu -<>...<>. În acest fel, codul Javascript introdus nu va fi executat.
Am observat că înlocuirea ghilimelelor cu ghilimele duble este o practică destul de obișnuită pentru a evita posibilele atacuri JS Injection. Cu toate acestea, există câteva modalități de codificare a ghilimelelor pentru a efectua codul de injecție JS. Prin urmare, schimbarea ghilimelelor în dublu nu este o modalitate perfectă de a vă proteja împotriva acestui atac.
Concluzie
Trebuie întotdeauna avut în vedere faptul că Javascript Injection este unul dintre posibilele atacuri împotriva site-urilor web, deoarece Javascript este una dintre cele mai utilizate tehnologii pentru site-uri web. Prin urmare, în timp ce testați site-uri web sau orice alte tehnologii web, nu trebuie uitat să testați împotriva acestui atac.
Când efectuați teste de securitate, JS Injection nu trebuie uitat. Unii oameni consideră că acest test este un atac mai puțin riscant, deoarece este efectuat de partea clientului.
Cu toate acestea, este o abordare greșită și ar trebui să ne amintim întotdeauna că Javascript Injection poate provoca daune grave site-ului web, cum ar fi scurgeri de informații sensibile, modificarea parametrilor sau piratarea conturilor de utilizator.
Prin urmare, ar trebui să considerăm acest lucru ca o parte importantă a testării și este o parte a investiției pentru o bună reputație a produsului și a companiei.
Testarea injecției JS nu este foarte dificilă. În primul rând, ar trebui să aveți cunoștințe generale despre Javascript și trebuie să știți cum să verificați dacă acest atac este posibil pentru soluția web curentă sau nu.
De asemenea, în timpul testării, trebuie să vă amintiți că un site web poate avea protecție împotriva acestui tip de atac, dar poate fi prea slab - ar trebui, de asemenea, verificat. Un alt lucru important de reținut este că există diferite tipuri de atacuri cu injecție Javascript și niciunul dintre ele nu trebuie uitat să testeze.
Ați efectuat testarea injecției Javascript ?? Ne-ar face plăcere să auzim de la dvs., nu ezitați să împărtășiți experiențele dvs. în secțiunea de comentarii de mai jos.
Lectură recomandată
- Tutoriale detaliate pentru eclipsă pentru începători
- Cum se configurează cadrul de testare Node.js: Tutorial Node.js
- Tutorial de injecție HTML: tipuri și prevenire cu exemple
- Tutorial SQL Testing Injection (Exemplu și prevenirea atacului SQL Injection)
- Tutorial de reflecție Java cu exemple
- Tutorial SVN: Gestionarea codului sursă folosind Subversion
- Tutorial Python DateTime cu exemple
- Tutorial SVN Tortoise: Revizuiri în depozitul de coduri