cross site scripting attack tutorial with examples
Un ghid complet pentru atacul Cross Site Scripting (XSS), modul de prevenire și testarea XSS.
Cross Site Scripting (XSS) este unul dintre cele mai populare și vulnerabile atacuri cunoscute de fiecare tester avansat. Este considerat unul dintre cele mai riscante atacuri pentru aplicațiile web și poate aduce și consecințe nocive.
XSS este adesea comparat cu atacuri similare din partea clientului, deoarece limbajele din partea clientului sunt utilizate în cea mai mare parte în timpul acestui atac. Cu toate acestea, atacul XSS este considerat mai riscant, datorită capacității sale de a deteriora tehnologiile și mai puțin vulnerabile.
Acest tutorial de atac XSS, vă vom oferi o prezentare completă a tipurilor, instrumentelor și măsurilor preventive ale acestuia, cu exemple perfecte în termeni simpli pentru înțelegerea dvs. ușoară.
Ce veți învăța:
- Introducere în XSS Attack
- Cum se efectuează XSS?
- Tipuri de atacuri de scriptare între site-uri
- Cum se testează împotriva XSS?
- Instrumente de testare XSS
- Comparație cu alte atacuri
- Modalități de prevenire a XSS
- Prevenirea conform tehnologiilor
- Foi de cheat XSS
- Concluzie
- Lectură recomandată
Introducere în XSS Attack
Atacul Cross Site Scripting este o injecție de cod rău intenționată, care va fi executată în browserul victimei. Scriptul rău intenționat poate fi salvat pe serverul web și executat de fiecare dată când utilizatorul apelează funcționalitatea corespunzătoare. Poate fi realizat și cu alte metode - fără niciun script salvat pe serverul web.
Scopul principal al acestui atac este de a fura datele de identitate ale celuilalt utilizator - cookie-uri, jetoane de sesiune și alte informații. În majoritatea cazurilor, acest atac este folosit pentru a fura cookie-urile celeilalte persoane. După cum știm, cookie-urile ne ajută să ne conectăm automat. Prin urmare, cu cookie-uri furate, ne putem autentifica cu celelalte identități. Și acesta este unul dintre motivele pentru care acest atac este considerat unul dintre cele mai riscante atacuri.
Atacul XSS este efectuat din partea clientului. Poate fi realizat cu diferite limbaje de programare din partea clientului. Cu toate acestea, cel mai adesea acest atac este efectuat cu Javascript și HTML.
Citire recomandată=> Tutorial de injecție HTML
Cum se efectuează XSS?
Atacul Cross Site Scripting înseamnă trimiterea și injectarea de cod sau script rău intenționat. Codul rău intenționat este de obicei scris cu limbaje de programare pentru partea clientului, cum ar fi Javascript, HTML, VBScript , Flash etc. Cu toate acestea, Javascript și HTML sunt utilizate în principal pentru a efectua acest atac.
Acest atac poate fi efectuat în moduri diferite. În funcție de tipul de atac XSS, scriptul rău intenționat poate fi reflectat în browserul victimei sau stocat în baza de date și executat de fiecare dată, când utilizatorul apelează funcția corespunzătoare.
Motivul principal al acestui atac este validarea inadecvată a intrării utilizatorului, unde intrarea rău intenționată poate intra în ieșire. Un utilizator rău intenționat poate introduce un script, care va fi injectat în codul site-ului web. Apoi browserul nu poate ști dacă codul executat este rău intenționat sau nu.
Prin urmare, scriptul rău intenționat este executat pe browserul victimei sau orice formă falsificată este afișată pentru utilizatori. Există mai multe forme în care poate apărea atacul XSS.
Principalele forme de Cross Site Scripting sunt după cum urmează:
- Cross Site Scripting poate apărea pe scriptul rău intenționat executat în partea clientului.
- Pagină falsă sau formular afișat utilizatorului (unde victima tastează acreditări sau face clic pe un link rău intenționat).
- Pe site-urile cu reclame afișate.
- E-mailuri rău intenționate trimise victimei.
Acest atac apare atunci când utilizatorul rău intenționat găsește părțile vulnerabile ale site-ului web și îl trimite ca intrare rău intenționată adecvată. Scriptul rău intenționat este injectat în cod și apoi trimis ca rezultat utilizatorului final.
Să analizăm un exemplu simplu: Luați în considerare că avem un site web cu un câmp de căutare.
Dacă câmpul de căutare este vulnerabil, atunci când utilizatorul introduce orice script, atunci acesta va fi executat.
Luați în considerare, un utilizator introduce un script foarte simplu, așa cum se arată mai jos:
alert(‘XSS’)
Apoi, după ce faceți clic pe 'Căutare' butonul, scriptul introdus va fi executat.
După cum vedem în Exemplu ,scriptul introdus în câmpul de căutare este executat. Aceasta arată doar vulnerabilitatea atacului XSS. Cu toate acestea, poate fi tastat și un script mai dăunător.
Mulți testeri amestecă atacul Cross Site Scripting cu Injecție Javascript , care se efectuează și din partea clientului. În ambele, se injectează un script rău intenționat. Cu toate acestea, în cazul de atac XSS nu sunt necesare etichete pentru a executa scriptul.
De exemplu :
;
De asemenea, poate fi un script executat pe celălalt eveniment.
De exemplu:Pe un mouse plasați.
Să analizăm un alt exemplu:Luați în considerare, avem o pagină în care se afișează cea mai recentă recenzie de carte pe site.
Codul acestei pagini va arăta așa cum se arată mai jos:
print '' print '. If this vulnerability is present in the web application, an indicated text will be inserted intags. Trying to pass some code through HTTP request as this is also a method to check if this attack is possible.
Generally, while testing for possible XSS attack, input validation should be checked and the tester should be conscious while checking the website’s output. Also if a code review is being performed, it is important to find how input can get into the output.
XSS Testing Tools
As Cross Site Scripting attack is one of the most popular risky attacks, there are a plenty of tools to test it automatically. We can find various scanners to check for possible XSS attack vulnerabilities – like, Nesus and Nikto. Both of which are considered as quite reliable.
From my software testing career, I would like to mention SOAP UI tool. SOAP UI can be considered as a quite strong tool for checking against the possible XSS attacks. It contains ready templates for checking against this attack. It really simplifies the testing process.
However, in order to test for this vulnerability with SOAP UI tool, API level testing should already be automated with that tool. Another solution to test against XSS can be browser plugins. However, plugins are considered as quite a weak tool to check against this type of attack.
Even while testing automatically, the tester should have good knowledge of this attack type and should be able to analyze the results appropriately.
Good knowledge is also helpful while selecting the testing tool. Also, it is important to know, that while performing scanning for security vulnerabilities with an automatic tool, testing manually is also a good practice and this way the tester will be able to see the results and analyze them.
Recommended Tool:
#1) Kiuwan

Find and fix vulnerabilities in your code at every stage of the SDLC.
Kiuwan is compliant with the most stringent security standards including OWASP, CWE, SANS 25, HIPPA, and more. Integrate Kiuwan in your IDE for instant feedback during development.
Kiuwan supports all major programming languages and integrates with leading DevOps tools.
=> Scan your code for free
Comparison with Other Attacks
XSS is considered to be one of the riskiest attacks, as its main purpose is to steal the website’s or system’s user identities. Also, XSS attack can be performed with different client-side languages like Javascript, HTML, VBScript, Flash, etc. And this makes it more harmful and widespread than the other possible attacks.
Testing for XSS attack is quite similar to testing for the other possible client-side attacks. However, it is important to remember what additional cases should be checked while testing for XSS.
Another thing, that makes this attack riskier is the possibility to be stored in the web service – this way it can affect many users for a longer period of time. XSS sometimes can be performed to even less vulnerable systems and its vulnerabilities are sometimes difficult to be found.
Also, while comparing with the other attacks, XSS has many ways to be performed and affect the website as well.
Ways to Prevent XSS
Though this type of attack is considered to be one of the most dangerous and risky one, still a preventing plan should be prepared. Because of the popularity of this attack, there are quite many ways to prevent it.
Commonly used main prevention methods include:
- Data validation
- Filtering
- Escaping
The first step in the prevention of this attack is Input validation . Everything, that is entered by the user should be precisely validated, because the user’s input may find its way to the output. Data validation can be named as the basis for ensuring the system’s security. I would remind, that the idea of validation is not to allow inappropriate input.
Therefore it just helps to reduce the risks, but may not be enough to prevent the possible XSS vulnerability.
Another good prevention method is user’s input filtering. The idea of the filtering is to search for risky keywords in the user’s input and remove them or replace them by empty strings.
Those keywords may be:
- tags
- Javascript commands
- HTML markup
Input filtering is quite easy to practice. It can be performed in different ways too.
Like:
- By developers who have written server-side code.
- Appropriate programming language’s library is being used.
In this case, some developers write their own code to search for appropriate keywords and remove them. However, the easier way would be to select appropriate programming languages library to filter the user’s input. I would like to comment, that using libraries is a more reliable way, as those libraries were used and tested by many developers.
Another possible prevention method is characters escaping . In this practice, appropriate characters are being changed by special codes. For Example, Meanwhile, good testing should not be forgotten as well. It should be invested in good software testers knowledge and reliable software testing tools. This way good software quality will be better assured.
Prevention According to Technologies
As already discussed, filtering and characters escaping are the main prevention methods. However, it can be performed differently in different programming languages. Some programming languages have appropriate filtering libraries and some do not.
It should be mentioned, that filtering can be performed quite easily in Java and PHP programming languages, as they have appropriate libraries for it.
Java technology is quite widely used, therefore there are many solutions to it. If you are using Spring technology and if you would like to escape HTML for the whole application, then you have to write the appropriate code in the project’s web.xml file.
defaultHtmlEscape true
Acest cod va comuta scăparea HTML pentru întreaga aplicație.
Dacă doriți să comutați scăparea HTML pentru formularele corespunzătoare paginii, atunci codul ar trebui să fie scris după cum urmează:
Există multe filtre XSS gata sub forma unui fișier .jar. Aș reaminti că fișierul .jar trebuie adăugat la proiectul dvs. și abia apoi pot fi utilizate bibliotecile sale. Un astfel de filtru XSS este xssflt.jar, care este un filtru servlet. Acest fișier .jar poate fi descărcat cu ușurință de pe internet și adăugat la proiectul dvs.
Acest filtru verifică fiecare cerere trimisă aplicației și o curăță de o injecție potențială.
testarea bazelor de date întrebări și răspunsuri pentru interviuri cu experiență
Când un fișier external.jar este adăugat la proiect, acesta trebuie descris și în fișierul web.xml:
XSSFilter com.cj.xss.XSSFilter
O altă soluție posibilă este biblioteca ESAPI. Biblioteca ESAPI este compatibilă cu multe limbaje de programare. Puteți găsi biblioteci ESAPI pentru limbaje de programare Java și PHP. Este o bibliotecă open source și gratuită, care ajută la controlul securității aplicației.
Foi de cheat XSS
Foi de cheat XSS pot fi foarte utile pentru prevenirea scripturilor pe site-uri. Este un ghid pentru dezvoltatori cu privire la modul de prevenire a atacurilor XSS. Regulile sunt foarte utile și nu trebuie uitate în timpul dezvoltării. XSS Cheat Sheets pot fi găsite în comunități de internet, cum ar fi OWASP (The Open Web Application Security Project).
Diferite tipuri de foi de cheat:
- Foaie de trucuri pentru prevenirea XSS
- Foaie de cheat DOM XSS
- Foaie de înșelăciune XSS Filter Evasion
Principalul ghid ar fi foaia de înșelăciune XSS Prevention, deoarece oferă reguli comune pentru prevenirea atacurilor XSS. Dacă urmați regulile DOM XSS Cheat Sheet și XSS Filter Evasion Cheat Sheet reguli, trebuie totuși să urmați XSS Prevention Cheat Sheet.
După cum sa menționat, foaia de înșelăciune XSS Prevention poate fi găsită în comunitatea OWASP. Această cheat Sheet ne oferă o listă de reguli, care ne-ar ajuta să reducem riscurile posibilelor atacuri XSS. Nu sunt doar regulile de codificare, ci și vulnerabilitățile de securitate pe bază de prevenire.
Puține dintre reguli includ:
- Datele care nu au încredere nu trebuie inserate.
- HTML trebuie scăpat înainte de a insera orice date de încredere.
- Atributul trebuie scăpat înainte de a insera datele de încredere etc.
Prin urmare, Cheat Sheet poate fi foarte util în prevenirea acestui tip de atacuri.
Concluzie
În timpul testării, este foarte recomandat să evaluați riscurile care aduc posibile atacuri XSS. Atacul XSS poate afecta aplicațiile web, care par să fie și ele sigure.
Este considerat a fi unul dintre cele mai dăunătoare și riscante atacuri. Prin urmare, nu ar trebui să uităm acest tip de testare. În timp ce efectuați teste împotriva XSS, este important să aveți cunoștințe bune despre acest atac. Și aceasta este baza pentru a analiza corect rezultatele testării și pentru a alege instrumentele de testare adecvate.
Sunteți un tester care s-a ocupat de atacuri XSS de cross site scripting? Aveți vreo informație interesantă despre atacurile XSS care ar putea ajuta și cititorii noștri? Simțiți-vă liber să ne împărtășiți experiențele dvs. în secțiunea de comentarii de mai jos !!
Lectură recomandată
- Tutoriale detaliate pentru eclipsă pentru începători
- Tutorial de injecție HTML: tipuri și prevenire cu exemple
- Tutorial SQL Testing Injection (Exemplu și prevenirea atacului SQL Injection)
- Ce este DDoS Attack și cum se DDoS?
- Selenium Grid Tutorial: Configurare și exemplu de testare a browserului încrucișat
- Tutorial de reflecție Java cu exemple
- Tutorial SVN: Gestionarea codului sursă folosind Subversion
- Tutorial Python DateTime cu exemple