cross site scripting attack tutorial with examples
Eine vollständige Anleitung zum Cross Site Scripting (XSS) -Angriff, zur Verhinderung und zum XSS-Testen.
Cross Site Scripting (XSS) ist einer der beliebtesten und anfälligsten Angriffe, die jedem fortgeschrittenen Tester bekannt sind. Es gilt als einer der riskantesten Angriffe für die Webanwendungen und kann auch schädliche Folgen haben.
XSS wird häufig mit ähnlichen clientseitigen Angriffen verglichen, da bei diesem Angriff meistens clientseitige Sprachen verwendet werden. XSS-Angriffe gelten jedoch als riskanter, da sie noch weniger anfällige Technologien beschädigen können.
In diesem Tutorial zu XSS-Angriffen geben wir Ihnen einen vollständigen Überblick über seine Typen, Tools und vorbeugenden Maßnahmen mit perfekten Beispielen in einfachen Worten, damit Sie sie leichter verstehen.
Was du lernen wirst:
- Einführung in XSS Attack
- Wie wird XSS durchgeführt?
- Arten von Cross Site Scripting-Angriffen
- Wie teste ich gegen XSS?
- XSS-Testwerkzeuge
- Vergleich mit anderen Angriffen
- Möglichkeiten, XSS zu verhindern
- Prävention nach Technologien
- XSS Spickzettel
- Fazit
- Literatur-Empfehlungen
Einführung in XSS Attack
Cross Site Scripting-Angriff ist eine bösartige Code-Injektion, die im Browser des Opfers ausgeführt wird. Schädliches Skript kann auf dem Webserver gespeichert und jedes Mal ausgeführt werden, wenn der Benutzer die entsprechende Funktionalität aufruft. Es kann auch mit den anderen Methoden ausgeführt werden - ohne dass ein Skript auf dem Webserver gespeichert ist.
Der Hauptzweck dieses Angriffs besteht darin, die Identitätsdaten des anderen Benutzers zu stehlen - Cookies, Sitzungstoken und andere Informationen. In den meisten Fällen wird dieser Angriff verwendet, um die Cookies der anderen Person zu stehlen. Wie wir wissen, helfen uns Cookies, uns automatisch anzumelden. Daher können wir uns bei gestohlenen Cookies mit den anderen Identitäten anmelden. Und dies ist einer der Gründe, warum dieser Angriff als einer der riskantesten Angriffe angesehen wird.
Ein XSS-Angriff wird auf der Clientseite ausgeführt. Es kann mit verschiedenen clientseitigen Programmiersprachen durchgeführt werden. Meistens wird dieser Angriff jedoch mit Javascript und HTML ausgeführt.
Empfohlene Lektüre=> HTML Injection Tutorial
Wie wird XSS durchgeführt?
Cross Site Scripting-Angriff bedeutet das Senden und Injizieren von schädlichem Code oder Skript. Schädlicher Code wird normalerweise mit clientseitigen Programmiersprachen wie Javascript, HTML, geschrieben. VBScript , Flash usw. Für diesen Angriff werden jedoch meistens Javascript und HTML verwendet.
Dieser Angriff kann auf verschiedene Arten ausgeführt werden. Abhängig von der Art des XSS-Angriffs wird das schädliche Skript möglicherweise im Browser des Opfers angezeigt oder in der Datenbank gespeichert und jedes Mal ausgeführt, wenn der Benutzer die entsprechende Funktion aufruft.
Der Hauptgrund für diesen Angriff ist die unangemessene Überprüfung der Benutzereingaben, bei der böswillige Eingaben in die Ausgabe gelangen können. Ein böswilliger Benutzer kann ein Skript eingeben, das in den Code der Website eingefügt wird. Dann kann der Browser nicht erkennen, ob der ausgeführte Code böswillig ist oder nicht.
Daher wird im Browser des Opfers ein bösartiges Skript ausgeführt oder den Benutzern wird ein gefälschtes Formular angezeigt. Es gibt verschiedene Formen, in denen XSS-Angriffe auftreten können.
Die wichtigsten Formen von Cross Site Scripting sind:
- Cross Site Scripting kann für das auf der Clientseite ausgeführte schädliche Skript auftreten.
- Dem Benutzer wird eine gefälschte Seite oder ein gefälschtes Formular angezeigt (wobei das Opfer Anmeldeinformationen eingibt oder auf einen böswilligen Link klickt).
- Auf den Websites mit angezeigten Anzeigen.
- An das Opfer gesendete böswillige E-Mails.
Dieser Angriff tritt auf, wenn der böswillige Benutzer die anfälligen Teile der Website findet und sie als entsprechende böswillige Eingabe sendet. Schädliches Skript wird in den Code eingefügt und dann als Ausgabe an den Endbenutzer gesendet.
Lassen Sie uns ein einfaches Beispiel analysieren: Stellen Sie sich vor, wir haben eine Website mit einem Suchfeld.
Wenn das Suchfeld anfällig ist und der Benutzer ein Skript eingibt, wird es ausgeführt.
Bedenken Sie, dass ein Benutzer ein sehr einfaches Skript eingibt, wie unten gezeigt:
alert(‘XSS’)
Dann nach dem Klicken auf die 'Suche' Schaltfläche wird das eingegebene Skript ausgeführt.
Wie wir in der sehen Beispiel ,Das in das Suchfeld eingegebene Skript wird ausgeführt. Dies zeigt nur die Verwundbarkeit des XSS-Angriffs. Es kann jedoch auch ein schädlicheres Skript eingegeben werden.
Viele Tester verwechseln Cross Site Scripting-Angriffe mit Javascript-Injektion , die auch auf der Client-Seite durchgeführt wird. In beiden Fällen wird das bösartige Skript für Angriffe injiziert. Im XSS-Angriffsfall sind jedoch keine Tags erforderlich, um das Skript auszuführen.
Zum Beispiel ::
;
Es kann sich auch um ein Skript handeln, das für das andere Ereignis ausgeführt wird.
Zum Beispiel:Auf einem Mauszeiger schweben.
Lassen Sie uns ein anderes Beispiel analysieren:Bedenken Sie, wir haben eine Seite, auf der die neueste Buchbesprechung auf der Website angezeigt wird.
Der Code dieser Seite sieht wie folgt aus:
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
Dieser Code schaltet das HTML-Escape für die gesamte Anwendung um.
Wenn Sie HTML-Escape für die entsprechenden Seitenformulare ändern möchten, sollte der Code wie folgt geschrieben werden:
Es gibt viele fertige XSS-Filter in Form einer JAR-Datei. Ich möchte daran erinnern, dass die JAR-Datei zu Ihrem Projekt hinzugefügt werden muss und nur dann die Bibliotheken verwendet werden können. Ein solcher XSS-Filter ist xssflt.jar, ein Servlet-Filter. Diese JAR-Datei kann einfach aus dem Internet heruntergeladen und Ihrem Projekt hinzugefügt werden.
Dieser Filter überprüft jede Anforderung, die an die Anwendung gesendet wird, und bereinigt sie von einer möglichen Injektion.
SQL Test Fragen und Antworten pdf
Wenn dem Projekt eine external.jar-Datei hinzugefügt wird, muss diese auch in der Datei web.xml beschrieben werden:
XSSFilter com.cj.xss.XSSFilter
Eine andere mögliche Lösung ist die ESAPI-Bibliothek. Die ESAPI-Bibliothek ist mit vielen Programmiersprachen kompatibel. Sie finden ESAPI-Bibliotheken für Java- und PHP-Programmiersprachen. Es handelt sich um eine Open Source- und kostenlose Bibliothek, mit deren Hilfe die Sicherheit der Anwendung gesteuert werden kann.
XSS Spickzettel
XSS-Spickzettel können sehr hilfreich sein, um Cross-Site-Scripting zu verhindern. Dies ist eine Richtlinie für Entwickler, wie XSS-Angriffe verhindert werden können. Die Regeln sind sehr hilfreich und sollten bei der Entwicklung nicht vergessen werden. XSS-Spickzettel finden Sie in Internet-Communities wie OWASP (The Open Web Application Security Project).
Verschiedene Arten von Spickzettel:
- XSS Prevention Spickzettel
- DOM XSS Spickzettel
- XSS Filter Evasion Spickzettel
Die wichtigste Richtlinie wäre das XSS Prevention Cheat Sheet, da es allgemeine Regeln für die XSS-Angriffsprävention enthält. Wenn Sie die Regeln für DOM XSS Cheat Sheet und XSS Filter Evasion Cheat Sheet befolgen würden, müssten Sie trotzdem das XSS Prevention Cheat Sheet befolgen.
Wie bereits erwähnt, befindet sich das XSS Prevention Cheat Sheet in der OWASP-Community. Dieses Spickzettel enthält eine Liste von Regeln, mit denen wir das Risiko möglicher XSS-Angriffe verringern können. Es sind nicht nur die Codierungsregeln, sondern auch die Sicherheitslücken auf Präventionsbasis.
Einige der Regeln beinhalten:
- Nicht vertrauenswürdige Daten sollten nicht eingefügt werden.
- HTML sollte maskiert werden, bevor nicht vertrauenswürdige Daten eingefügt werden.
- Das Attribut sollte maskiert werden, bevor die nicht vertrauenswürdigen Daten usw. eingefügt werden.
Daher kann Cheat Sheet sehr hilfreich sein, um diese Art von Angriffen zu verhindern.
Fazit
Während des Testens wird dringend empfohlen, die Risiken zu bewerten, die mögliche XSS-Angriffe mit sich bringen. XSS-Angriffe können sich auf Webanwendungen auswirken, die ebenfalls sicher zu sein scheinen.
Es gilt als einer der schädlichsten und riskantesten Angriffe. Daher sollten wir diese Art von Tests nicht vergessen. Bei der Durchführung von Tests gegen XSS ist es wichtig, über gute Kenntnisse über diesen Angriff zu verfügen. Und dies ist die Basis, um die Testergebnisse korrekt zu analysieren und die geeigneten Testwerkzeuge auszuwählen.
Sind Sie ein Tester, der sich mit Cross Site Scripting XSS-Angriffen befasst hat? Haben Sie interessante Fakten zu XSS-Angriffen, die auch unseren Lesern helfen würden? Fühlen Sie sich frei, Ihre Erfahrungen mit uns in den Kommentaren unten zu teilen!
Literatur-Empfehlungen
- Ausführliche Eclipse-Tutorials für Anfänger
- HTML Injection Tutorial: Typen & Prävention mit Beispielen
- Tutorial zum Testen von SQL-Injektionen (Beispiel und Verhinderung von SQL-Injektionsangriffen)
- Was ist DDoS Attack und wie wird DDoS?
- Selenium Grid Tutorial: Setup und Beispiel für Cross-Browser-Tests
- Java Reflection Tutorial mit Beispielen
- SVN Tutorial: Quellcodeverwaltung mit Subversion
- Python DateTime Tutorial mit Beispielen