cross site scripting attack tutorial with examples
Комплетан водич за напад на више локација (КССС), како то спречити и КССС тестирање.
Цросс Сите Сцриптинг (КССС) је један од најпопуларнијих и најрањивијих напада којег познаје сваки напредни тестер. Сматра се једним од најризичнијих напада за веб апликације и такође може донијети штетне посљедице.
КССС се често упоређује са сличним нападима на страни клијента, јер се током овог напада углавном користе језици на страни клијента. Међутим, КССС напад се сматра ризичнијим због своје способности да оштети још мање рањиве технологије.
У овом упутству за КССС нападе дат ћемо вам потпун преглед његових врста, алата и превентивних мера са савршеним примерима у једноставним терминима за ваше лако разумевање.
Шта ћете научити:
- Увод у КССС Аттацк
- Како се изводи КССС?
- Врсте напада преко скрипти на више локација
- Како тестирати против КССС-а?
- КССС Алати за тестирање
- Поређење са другим нападима
- Начини за спречавање КССС-а
- Превенција према технологијама
- КССС варалице
- Закључак
- Препоручено читање
Увод у КССС Аттацк
Цросс Сите Сцриптинг напад је убризгавање злонамерног кода, које ће се извршити у прегледачу жртве. Злонамерна скрипта се може сачувати на веб серверу и извршити сваки пут када корисник позове одговарајућу функционалност. Може се извршити и другим методама - без икаквих сачуваних скрипти на веб серверу.
Главна сврха овог напада је крађа података о идентитету другог корисника - колачића, токена сесије и других информација. У већини случајева овај напад се користи за крађу колачића друге особе. Као што знамо, колачићи нам помажу да се аутоматски пријавимо. Стога се украденим колачићима можемо пријавити са осталим идентитетима. И то је један од разлога зашто се овај напад сматра једним од најризичнијих напада.
КССС напад се изводи на страни клијента. Може се изводити са различитим програмским језицима на страни клијента. Међутим, најчешће се овај напад врши помоћу Јавасцрипта и ХТМЛ-а.
Препоручено читање=> Водич за ХТМЛ ињекције
Како се изводи КССС?
Цросс Сите Сцриптинг напад значи слање и убризгавање злонамерног кода или скрипте. Злонамерни код се обично пише на клијентским програмским језицима као што су Јавасцрипт, ХТМЛ, ВБСцрипт , Фласх итд. Међутим, Јавасцрипт и ХТМЛ се углавном користе за извођење овог напада.
Овај напад се може извести на различите начине. У зависности од врсте КССС напада, злонамерна скрипта се може одразити на жртвином прегледачу или сместити у базу података и извршити сваки пут када корисник позове одговарајућу функцију.
Главни разлог овог напада је неодговарајућа провера корисничког уноса, где злонамерни унос може ући у излаз. Злонамерни корисник може да унесе скрипту која ће се убризгати у код веб локације. Тада прегледач не може да зна да ли је извршени код злонамерни или није.
Стога се злонамерна скрипта извршава у жртвином прегледачу или се за кориснике приказује било који лажни образац. Постоји неколико облика у којима се може догодити КССС напад.
Главни облици скриптирања на више локација су следећи:
- Цросс Сите Сцриптинг може се појавити на злонамерној скрипти која се извршава на клијентској страни.
- Лажна страница или образац који се приказују кориснику (где жртва уписује акредитиве или кликће на злонамерну везу).
- На веб локацијама са приказаним огласима.
- Злонамерни имејлови послати жртви.
До овог напада долази када злонамерни корисник пронађе рањиве делове веб локације и пошаље их као одговарајући злонамерни унос. Злонамерна скрипта се убризгава у код и затим шаље као излаз крајњем кориснику.
Анализирајмо једноставан пример: Узмимо у обзир да имамо веб страницу са пољем за претрагу.
Ако је поље за претрагу рањиво, када корисник унесе било коју скрипту, извршиће се.
Размислите, корисник уноси врло једноставну скрипту као што је приказано доле:
alert(‘XSS’)
Затим након клика на 'Претрага' дугме извршиће се унета скрипта.
Као што видимо у Пример ,скрипта откуцана у поље за претрагу се извршава. Ово само показује рањивост КССС напада. Међутим, може се откуцати и штетнија скрипта.
Многи тестери мешају Цросс Сите Сцриптинг напад са Јавасцрипт Ињецтион , која се такође изводи на страни клијента. У оба се убацује злонамерна скрипта. Међутим, у случају КССС напада ознаке нису потребне за извршавање скрипте.
На пример :
;
Такође, то може бити скрипта која се извршава на другом догађају.
На пример:На мишем лебдите.
Анализирајмо још један пример:Узмите у обзир да имамо страницу на којој се на веб локацији приказује најновији приказ књиге.
Код ове странице ће изгледати како је приказано доле:
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
Овај код ће променити ХТМЛ избегавање за целу апликацију.
Ако желите да промените ХТМЛ избегавање за одговарајуће обрасце странице, онда би код требало написати на следећи начин:
Постоји много спремних КССС филтера у облику .јар датотеке. Подсетио бих да се .јар датотека мора додати вашем пројекту и тек тада се могу користити њене библиотеке. Један такав КССС филтер је кссфлт.јар, који је филтер сервлета. Ову .јар датотеку можете лако преузети са Интернета и додати у свој пројекат.
Овај филтер проверава сваки захтев који се пошаље апликацији и чисти је од потенцијалног убризгавања.
за шта се користи програмирање на ц ++
Када се у пројекат дода датотека ектернал.јар, она такође мора бити описана у датотеци веб.кмл:
XSSFilter com.cj.xss.XSSFilter
Друго могуће решење је ЕСАПИ библиотека. ЕСАПИ библиотека је компатибилна са многим програмским језицима. Можете пронаћи ЕСАПИ библиотеке за програмске језике Јава и ПХП. То је бесплатна библиотека отвореног кода, која помаже у контроли безбедности апликације.
КССС варалице
КССС Цхеат Схеетс могу бити врло корисни за превенцију скриптирања на више локација. То је смерница за програмере о томе како да спрече КССС нападе. Правила су врло корисна и не треба их заборавити током развоја. КССС Цхеат Схеетс се могу наћи у интернет заједницама као што је ОВАСП (Тхе Опен Веб Апплицатион Сецурити Пројецт).
Различите врсте варалица:
- КССС Превентион Цхеат Схеет
- ДОМ КССС Цхеат Схеет
- КССС Филтер Евасион Цхеат Схеет
Главна смјерница би била КССС Превентион Цхеат Схеет, јер пружа заједничка правила за превенцију КССС напада. Ако бисте се придржавали правила за ДОМ КССС Цхеат Схеет и КССС Филтер Евасион Цхеат Схеет, и даље бисте морали да следите КССС Превентион Цхеат Схеет.
Као што је наведено, КССС Превентион Цхеат Схеет се може наћи у заједници ОВАСП. Овај Цхеат Схеет пружа нам листу правила која ће нам помоћи да смањимо ризике од могућих КССС напада. Нису само правила кодирања већ и сигурносне рањивости на превентивној основи.
Неколико правила укључује:
- Непоуздани подаци се не смеју уметати.
- ХТМЛ треба избећи пре него што убаците неповерљиве податке.
- Атрибут треба избећи пре него што убаците неповерљиве податке итд.
Стога, Цхеат Схеет може бити од велике помоћи у спречавању ове врсте напада.
Закључак
Током тестирања, топло се препоручује процена ризика који доносе могуће КССС нападе. КССС напад може утицати на веб апликације, које изгледају такође безбедне.
Сматра се једним од најштетнијих и најризичнијих напада. Стога не бисмо требали заборавити ову врсту тестирања. Током извођења тестирања против КССС-а, важно је имати добро знање о овом нападу. И ово је основа за исправну анализу резултата испитивања и одабир одговарајућих алата за тестирање.
Да ли сте тестер који се бавио КССС нападима скриптирања на више локација? Да ли имате неке занимљиве чињенице о КССС нападима које би помогле и нашим читаоцима? Слободно поделите своја искуства са нама у одељку за коментаре испод !!
Препоручено читање
- Дубински водичи за помрачење за почетнике
- Водич за ХТМЛ ињекције: типови и превенција са примерима
- Водич за тестирање СКЛ убризгавања (Пример и спречавање напада СКЛ убризгавањем)
- Шта је ДДоС напад и како ДДоС?
- Водич за селенску мрежу: Постављање и пример тестирања више прегледача
- Водич за Јава рефлексију са примерима
- Водич за СВН: Управљање изворним кодом помоћу Субверзије
- Питхон ДатеТиме Водич са примерима