cross site scripting attack tutorial with examples
Popoln vodnik za napad na večstransko skriptiranje (XSS), kako to preprečiti in testiranje XSS.
Cross Site Scripting (XSS) je eden najbolj priljubljenih in ranljivih napadov, ki ga pozna vsak napredni preizkuševalec. Šteje se za enega najbolj tveganih napadov na spletne aplikacije in lahko povzroči tudi škodljive posledice.
XSS se pogosto primerja s podobnimi napadi na strani odjemalca, saj se med tem napadom večinoma uporabljajo jeziki na strani odjemalca. Vendar napad XSS velja za bolj tveganega zaradi svoje sposobnosti, da poškoduje še manj ranljive tehnologije.
V tej vadnici za napade XSS vam bomo dali popoln pregled njegovih vrst, orodij in preventivnih ukrepov s preprostimi primeri v preprostih izrazih za lažje razumevanje.
Kaj se boste naučili:
- Uvod v XSS Attack
- Kako se izvaja XSS?
- Vrste napadov na skriptne skripte
- Kako testirati proti XSS?
- Orodja za testiranje XSS
- Primerjava z drugimi napadi
- Načini za preprečevanje XSS
- Preprečevanje po tehnologijah
- XSS Cheat Sheets
- Zaključek
- Priporočeno branje
Uvod v XSS Attack
Napad »Cross Site Scripting« je vbrizgavanje zlonamerne kode, ki se izvede v brskalniku žrtve. Zlonamerni skript lahko shranite na spletni strežnik in ga izvedete vsakič, ko uporabnik pokliče ustrezno funkcionalnost. Izvede se lahko tudi z drugimi metodami - brez shranjenega skripta v spletnem strežniku.
Glavni namen tega napada je ukrasti identitetne podatke drugega uporabnika - piškotke, žetone sej in druge informacije. V večini primerov se ta napad uporablja za krajo piškotkov druge osebe. Kot vemo, nam piškotki pomagajo pri samodejni prijavi. Z ukradenimi piškotki se torej lahko prijavimo z drugimi identitetami. In to je eden od razlogov, zakaj se ta napad šteje za enega najbolj tveganih napadov.
XSS napad se izvaja na strani odjemalca. Izvaja se lahko z različnimi programskimi jeziki na strani odjemalca. Vendar se ta napad najpogosteje izvaja z Javascriptom in HTML-jem.
Priporočeno branje=> Vadnica za vbrizgavanje HTML
Kako se izvaja XSS?
Napad »Cross Site Scripting« pomeni pošiljanje in vbrizgavanje zlonamerne kode ali skripta. Zlonamerna koda je običajno napisana s programskimi jeziki na strani odjemalca, kot so Javascript, HTML, VBScript , Flash itd. Za izvajanje tega napada se večinoma uporabljata Javascript in HTML.
Ta napad lahko izvedemo na različne načine. Odvisno od vrste napada XSS se zlonamerni skript lahko odraža v brskalniku žrtve ali shrani v bazo podatkov in se vsakič izvede, ko uporabnik pokliče ustrezno funkcijo.
Glavni razlog za ta napad je neustrezno preverjanje uporabnikovega vnosa, kjer lahko zlonamerni vhod pride v izhod. Zlonamerni uporabnik lahko vnese skript, ki se vbrizga v kodo spletnega mesta. Potem brskalnik ne more vedeti, ali je izvedena koda zlonamerna ali ne.
Zato se v brskalniku žrtve izvaja zlonamerni skript ali pa se uporabnikom prikaže kakršen koli ponarejen obrazec. Obstaja več oblik, v katerih se lahko zgodi napad XSS.
Glavne oblike skriptnega skriptnega spletnega mesta so naslednje:
- Vzročno skriptiranje se lahko zgodi na zlonamernem skriptu, ki se izvaja na strani odjemalca.
- Lažna stran ali obrazec, prikazan uporabniku (kjer žrtev vnese poverilnice ali klikne zlonamerno povezavo).
- Na spletnih straneh z razstavljenimi oglasi.
- Zlonamerna e-poštna sporočila, poslana žrtvi.
Ta napad se zgodi, ko zlonamerni uporabnik najde ranljive dele spletnega mesta in ga pošlje kot ustrezen zlonamerni vnos. Zlonamerni skript se vbrizga v kodo in nato pošlje kot izhod končnemu uporabniku.
Analizirajmo preprost primer: Razmislimo, da imamo spletno mesto z iskalnim poljem.
Če je iskalno polje ranljivo, se bo, ko uporabnik vnese kateri koli skript, izvedlo.
Uporabnik vnese zelo preprost skript, kot je prikazano spodaj:
alert(‘XSS’)
Nato po kliku na 'Iskanje' gumb, se vneseni skript izvede.
Kot vidimo v Primer ,skript, vpisan v iskalno polje, se izvede. To samo kaže ranljivost napada XSS. Lahko pa se vnese tudi bolj škodljiv skript.
Številni preizkuševalci mešajo napad na skriptne skripte Javascript Injection , ki se izvaja tudi na strani stranke. V obeh se vbrizga zlonamerni skript. Vendar v primeru primera XSS oznake za izvajanje skripta niso potrebne.
Na primer :
;
Lahko je tudi skript, izveden ob drugem dogodku.
Na primer:Na lebdenju miške.
Analizirajmo še en primer:Razmislite, imamo stran, kjer je na spletnem mestu prikazana zadnja kritika knjige.
Koda te strani bo videti, kot je prikazano spodaj:
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
Ta koda bo zamenjala HTML pobeg za celotno aplikacijo.
Če želite spremeniti pobeg HTML za ustrezne obrazce strani, potem je treba kodo napisati tako:
Obstaja veliko pripravljenih filtrov XSS v obliki datoteke .jar. Spomnil bi, da je treba datoteko .jar dodati vašemu projektu in šele nato lahko uporabljate njegove knjižnice. Takšen filter XSS je xssflt.jar, ki je filter strežnika. To datoteko .jar lahko enostavno prenesete z interneta in jo dodate v svoj projekt.
Ta filter preveri vsako zahtevo, ki je poslana aplikaciji, in jo očisti pred morebitnim vbrizgom.
katera je najboljša programska oprema za čiščenje računalnika
Ko je projektu dodana datoteka external.jar, jo je treba opisati tudi v datoteki web.xml:
XSSFilter com.cj.xss.XSSFilter
Druga možna rešitev je knjižnica ESAPI. Knjižnica ESAPI je združljiva s številnimi programskimi jeziki. Najdete knjižnici ESAPI za programska jezika Java in PHP. Je odprtokodna in brezplačna knjižnica, ki pomaga nadzirati varnost aplikacije.
XSS Cheat Sheets
XSS Cheat Sheets so lahko v veliko pomoč pri preprečevanju skriptiranja na spletnih straneh. To je vodilo za razvijalce, kako preprečiti napade XSS. Pravila so zelo koristna in jih pri razvoju ne smemo pozabiti. XSS Cheat Sheets lahko najdete v internetnih skupnostih, kot je OWASP (The Open Web Application Security Project).
Različne vrste varalnic:
- XSS Prevention Cheat Sheet
- DOM XSS Cheat Sheet
- XSS Filter Evasion Cheat Sheet
Glavno vodilo bi bilo XSS Prevention Cheat Sheet, saj vsebuje skupna pravila za preprečevanje napadov XSS. Če bi sledili pravilom DOM XSS Cheat Sheet in XSS Filter Evasion Cheat Sheet, bi še vedno morali upoštevati XSS Prevention Cheat Sheet.
Kot že rečeno, XSS Prevention Cheat Sheet lahko najdete v skupnosti OWASP. Ta Cheat Sheet nam ponuja seznam pravil, ki bi nam pomagala zmanjšati tveganje za morebitne napade XSS. Ne gre samo za pravila kodiranja, temveč tudi za varnostne ranljivosti na preventivni osnovi.
Nekaj pravil vključuje:
- Nezaupljivih podatkov ne smete vstavljati.
- HTML je treba izogniti pred vstavljanjem nezaupnih podatkov.
- Atribut je treba umakniti, preden vstavite nezaupljive podatke itd.
Zato vam lahko Cheat Sheet zelo pomaga pri preprečevanju tovrstnih napadov.
Zaključek
Med testiranjem je zelo priporočljivo oceniti tveganja, ki prinašajo morebitne napade XSS. Napad XSS lahko vpliva na spletne aplikacije, ki se zdijo tudi varne.
Velja za enega najbolj škodljivih in tveganih napadov. Zato ne smemo pozabiti na to vrsto testiranja. Med izvajanjem testiranja proti XSS je pomembno dobro poznavanje tega napada. To je osnova za pravilno analizo rezultatov testiranja in izbiro ustreznih orodij za testiranje.
Ste preizkuševalec, ki se je ukvarjal z napadi XSS za skriptiranje med spletnimi mesti? Ali imate kakšna zanimiva dejstva o napadih XSS, ki bi pomagala tudi našim bralcem? Svoje izkušnje lahko delite z nami v spodnjem oddelku za komentarje !!
Priporočeno branje
- Vadnice za globinsko zasenčenje za začetnike
- Vadnica za vbrizgavanje HTML: Vrste in preprečevanje s primeri
- Vadnica za testiranje vbrizgavanja SQL (primer in preprečevanje napada vbrizgavanja SQL)
- Kaj je DDoS Attack in kako DDoS?
- Vadnica za mrežo selena: namestitev in primer preskušanja med brskalniki
- Vadnica za odsev Java s primeri
- Vadnica za SVN: Upravljanje izvorne kode z uporabo Subverzije
- Vadnica Python DateTime s primeri