cross site scripting attack tutorial with examples
Kompletný sprievodca útokom Cross Site Scripting (XSS), ako tomu zabrániť, a testovanie XSS.
Cross Site Scripting (XSS) je jeden z najpopulárnejších a najzraniteľnejších útokov, ktorý pozná každý pokročilý tester. Považuje sa za jeden z najrizikovejších útokov na webové aplikácie a môže mať tiež škodlivé následky.
XSS sa často porovnáva s podobnými útokmi na strane klienta, pretože pri tomto útoku sa väčšinou používajú jazyky na strane klienta. Útok XSS sa však považuje za rizikovejší kvôli jeho schopnosti poškodiť aj menej zraniteľné technológie.
V tomto výučbovom útoku na XSS vám poskytneme kompletný prehľad o jeho typoch, nástrojoch a preventívnych opatreniach s dokonalými príkladmi v jednoduchom zmysle pre vaše ľahké pochopenie.
Čo sa dozviete:
- Úvod do XSS Attack
- Ako sa vykonáva XSS?
- Typy útokov skriptovania medzi stránkami
- Ako testovať proti XSS?
- Nástroje na testovanie XSS
- Porovnanie s inými útokmi
- Spôsoby, ako zabrániť XSS
- Prevencia podľa technológií
- Podvádzacie listy XSS
- Záver
- Odporúčané čítanie
Úvod do XSS Attack
Cross Site Scripting attack je injekcia škodlivého kódu, ktorá sa vykoná v prehliadači obete. Škodlivý skript je možné uložiť na webový server a vykonať ho vždy, keď používateľ zavolá príslušnú funkčnosť. Môže sa tiež vykonať inými metódami - bez uloženého skriptu na webovom serveri.
Hlavným účelom tohto útoku je ukradnúť údaje o totožnosti druhého používateľa - súbory cookie, tokeny relácií a ďalšie informácie. Vo väčšine prípadov sa tento útok používa na odcudzenie súborov cookie inej osoby. Ako vieme, súbory cookie nám pomáhajú automaticky sa prihlásiť. Preto sa pomocou odcudzených súborov cookie môžeme prihlásiť pomocou iných identít. A to je jeden z dôvodov, prečo sa tento útok považuje za jeden z najrizikovejších.
Na strane klienta sa vykonáva útok XSS. Môže sa vykonávať s rôznymi programovacími jazykmi na strane klienta. Najčastejšie sa však tento útok uskutočňuje pomocou Javascriptov a HTML.
Odporúčané čítanie=> Výukový program pre HTML Injection
Ako sa vykonáva XSS?
Cross Site Scripting attack znamená zasielanie a vkladanie škodlivého kódu alebo skriptu. Škodlivý kód sa zvyčajne píše v programovacích jazykoch na strane klienta, ako sú Javascript, HTML, VBScript , Flash atď. Na vykonanie tohto útoku sa však väčšinou používajú Javascript a HTML.
Tento útok je možné vykonať rôznymi spôsobmi. V závislosti od typu útoku XSS sa môže škodlivý skript prejaviť v prehliadači obete alebo uložiť do databázy a vykonať zakaždým, keď používateľ zavolá príslušnú funkciu.
Hlavným dôvodom tohto útoku je nevhodné overenie vstupu používateľa, pri ktorom sa môže nebezpečný vstup dostať do výstupu. Používateľ so zlým úmyslom môže zadať skript, ktorý sa vloží do kódu webovej stránky. Prehliadač potom nie je schopný zistiť, či je spustený kód škodlivý alebo nie.
Preto sa v prehliadači obete spúšťa škodlivý skript alebo sa používateľom zobrazuje akákoľvek fingovaná forma. Existuje niekoľko foriem, v ktorých môže dôjsť k útoku XSS.
Hlavné formy skriptovania medzi servermi sú tieto:
- Cross-Site Script sa môže vyskytnúť v škodlivom skripte vykonanom na strane klienta.
- Falošná stránka alebo formulár zobrazený používateľovi (kde obeť zadá poverenia alebo klikne na škodlivý odkaz).
- Na webových stránkach so zobrazenými reklamami.
- Škodlivé e-maily odoslané obeti.
K tomuto útoku dôjde, keď používateľ so zlým úmyslom nájde zraniteľné časti webovej stránky a odošle ju ako vhodný škodlivý údaj. Škodlivý skript sa vloží do kódu a potom sa odošle ako výstup konečnému používateľovi.
Poďme analyzovať jednoduchý príklad: Zvážte, že máme webovú stránku s vyhľadávacím poľom.
Ak je vyhľadávacie pole zraniteľné, vykoná sa po zadaní ľubovoľného skriptu používateľom.
Zvážte, že používateľ zadá veľmi jednoduchý skript, ako je uvedené nižšie:
alert(‘XSS’)
Potom po kliknutí na ikonu 'Vyhľadávanie' tlačidlo, zadaný skript sa vykoná.
Ako vidíme v Príklad ,skript napísaný do vyhľadávacieho poľa sa vykoná. To len ukazuje zraniteľnosť útoku XSS. Môže byť však napísaný aj škodlivejší skript.
Mnoho testerov kombinuje útok Cross Site Scripting s Injekcia Javascript , ktorá sa vykonáva aj na strane klienta. Do oboch sa vkladá škodlivý skript. V prípade útoku XSS však na vykonanie skriptu nie sú potrebné značky.
Napríklad :
;
Môže to byť tiež skript spustený pri inej udalosti.
Napríklad:Umiestnite kurzor myši.
Poďme analyzovať ďalší príklad:Zvážte, že máme stránku, kde sa na webe zobrazuje najnovšia recenzia knihy.
Kód tejto stránky bude vyzerať takto:
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
Tento kód prepne únik kódu HTML pre celú aplikáciu.
Ak chcete prepnúť kódovanie HTML na príslušné formuláre príslušnej stránky, kód by mal byť napísaný takto:
Existuje veľa pripravených filtrov XSS vo forme súboru .jar. Pripomínam, že do vášho projektu je potrebné pridať súbor .jar a až potom bude možné používať jeho knižnice. Jedným z takýchto filtrov XSS je xssflt.jar, čo je filter servletov. Tento súbor .jar je možné ľahko stiahnuť z internetu a pridať do vášho projektu.
Tento filter kontroluje každú požiadavku odoslanú do aplikácie a čistí ju od potenciálnej injekcie.
c ++ základné otázky na pohovor
Keď sa do projektu pridá súbor external.jar, musí sa to popísať aj v súbore web.xml:
XSSFilter com.cj.xss.XSSFilter
Ďalším možným riešením je knižnica ESAPI. Knižnica ESAPI je kompatibilná s mnohými programovacími jazykmi. Nájdete knižnice ESAPI pre programovacie jazyky Java a PHP. Je to open source a bezplatná knižnica, ktorá pomáha riadiť zabezpečenie aplikácie.
Podvádzacie listy XSS
Podvádzacie listy XSS môžu byť veľmi užitočné pri prevencii skriptov medzi stránkami. Je to usmernenie pre vývojárov, ako zabrániť útokom XSS. Pravidlá sú veľmi užitočné a nemali by sa na ne zabúdať pri vývoji. Cheat Sheets XSS možno nájsť v internetových komunitách, ako je OWASP (The Open Web Application Security Project).
Rôzne typy podvodných hárkov:
- Cheat Sheet pre prevenciu XSS
- Cheat Sheet DOM XSS
- Cheat Sheet XSS Filter Evasion
Hlavným pokynom by bol cheat sheet XSS Prevention, pretože poskytuje spoločné pravidlá prevencie útokov XSS. Ak by ste postupovali podľa cheatov DOM XSS a Cheat Sheet XSS Filter Evasion, stále by ste museli dodržiavať Cheat Sheet pre prevenciu XSS.
Ako už bolo uvedené, cheat sheet XSS Prevention možno nájsť v komunite OWASP. Tento podvodník poskytuje zoznam pravidiel, ktoré by nám pomohli znížiť riziko možných útokov XSS. Nie sú to iba pravidlá kódovania, ale aj preventívne bezpečnostné chyby.
Niektoré z týchto pravidiel zahŕňajú:
- Nedôveryhodné údaje by sa nemali vkladať.
- Pred vložením nedôveryhodných údajov by mal byť kód HTML uniknutý.
- Pred vložením nedôveryhodných údajov atď. By sa malo atribútu uniknúť.
Cheat Sheet preto môže byť veľmi užitočný pri predchádzaní tomuto typu útokov.
Záver
Počas testovania sa dôrazne odporúča vyhodnotiť riziká, ktoré prinášajú možné útoky XSS. Útok XSS môže mať vplyv na webové aplikácie, ktoré sa tiež zdajú byť bezpečné.
Je považovaný za jeden z najškodlivejších a najrizikovejších útokov. Preto by sme nemali zabudnúť na tento typ testovania. Pri testovaní na XSS je dôležité mať o tomto útoku dobré vedomosti. A toto je základ pre správnu analýzu výsledkov testovania a výber vhodných testovacích nástrojov.
Ste tester, ktorý sa zaoberal útokmi XSS na skriptovanie medzi stránkami? Máte nejaké zaujímavé fakty o útokoch XSS, ktoré by pomohli aj našim čitateľom? Neváhajte a podeľte sa s nami o svoje skúsenosti v sekcii komentárov nižšie !!
Odporúčané čítanie
- Hĺbkové návody pre zatmenie pre začiatočníkov
- Výukový program pre vstrekovanie HTML: Typy a prevencia s príkladmi
- Výukový program na testovanie injekcie SQL (príklad a zabránenie útoku SQL Injection)
- Čo je DDoS Attack a ako DDoS?
- Výukový program pre selenovú mriežku: Nastavenie a príklad testovania medzi prehliadačmi
- Výukový program Java Reflection s príkladmi
- Výukový program SVN: Správa zdrojového kódu pomocou subverzie
- Výukový program pre Python DateTime s príkladmi