Cross-Site-Scripting Grundlagen: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „=XSS/Cross-Site-Scripting= *Ausnutzen von Sicherheitslücken in Webanwendungen *Schädliche Skripte werden dabei in einen vertrauenswürdigen Kontext eingespei…“) |
|||
| Zeile 12: | Zeile 12: | ||
=Es gibt 3 Arten des Cross-Site-Scripting/XSS= | =Es gibt 3 Arten des Cross-Site-Scripting/XSS= | ||
==Reflektiertes Cross-Site-Scripting/XSS== | ==Reflektiertes Cross-Site-Scripting/XSS== | ||
| − | + | *Schädliches Skript an den Webserver gesendet durch: | |
| + | **Aufruf einer manipulierten URL | ||
| + | **Absenden eines präparierten Formulars wird das | ||
| + | *Webserver gibt Datenohne Überprüfung an den Client zurück | ||
| + | *Schadcode wird nicht auf dem Server gespeichert | ||
| + | *Beliebte Angriffsziele sind dynamische Websites | ||
Beispiel: Bei dieser XSS-Variante bringt der Angreifer sein Skript in einem präparierten Link unter. Im Anschluss versucht er den Link – bevorzugt über E-Mails – weiterzuleiten. Der enthaltene Schadcode wird nur ausgelöst, wenn der Benutzer den erhaltenen Link aufruft. Tut er dies, wird ihm beispielsweise ein imitierter Anmeldebildschirm seines Online-Bankings präsentiert. Anstatt die eingegebenen Daten an den Webserver der Bank zu senden, sorgt das Skript jedoch für eine Umleitung auf die Adresse, die der Angreifer zuvor bestimmt hat. | Beispiel: Bei dieser XSS-Variante bringt der Angreifer sein Skript in einem präparierten Link unter. Im Anschluss versucht er den Link – bevorzugt über E-Mails – weiterzuleiten. Der enthaltene Schadcode wird nur ausgelöst, wenn der Benutzer den erhaltenen Link aufruft. Tut er dies, wird ihm beispielsweise ein imitierter Anmeldebildschirm seines Online-Bankings präsentiert. Anstatt die eingegebenen Daten an den Webserver der Bank zu senden, sorgt das Skript jedoch für eine Umleitung auf die Adresse, die der Angreifer zuvor bestimmt hat. | ||
| − | Persistentes Cross-DockerSite-Scripting/XSS | + | ==Persistentes Cross-DockerSite-Scripting/XSS== |
Beim persistenten bzw. beständigen XSS werden die schädlichen Skripte auf dem Webserver gespeichert und bei jedem Aufruf durch einen Client ausgeliefert. Zu diesem Zweck werden solche Webanwendungen für den Angriff ausgewählt, die Benutzerdaten serverseitig speichern und anschließend ohne Überprüfung oder Codierung ausgeben. Besonders anfällig für diese Scripting-Art sind Blogs und Foren. | Beim persistenten bzw. beständigen XSS werden die schädlichen Skripte auf dem Webserver gespeichert und bei jedem Aufruf durch einen Client ausgeliefert. Zu diesem Zweck werden solche Webanwendungen für den Angriff ausgewählt, die Benutzerdaten serverseitig speichern und anschließend ohne Überprüfung oder Codierung ausgeben. Besonders anfällig für diese Scripting-Art sind Blogs und Foren. | ||
Version vom 11. Juni 2021, 09:10 Uhr
XSS/Cross-Site-Scripting
- Ausnutzen von Sicherheitslücken in Webanwendungen
- Schädliche Skripte werden dabei in einen vertrauenswürdigen Kontext eingespeist
- System der Nutzer kann angeriffen werden
- Meist in JavaScript und/oder Quelltextdatei programmiert werden.
- harmlosen Varianten beispielsweise aufpoppende Fenster
- Worst Case - Zugriff auf vertrauliche Informationen
Gefahr
- Gefahr besteht wenn Benutzerdaten ohne Überprüfung an den Webbrowser weiterleitet werden
- Über XSS-Löcher gelangen die schädlichen Skripte zu den betroffenen Clients.
- Dort kommt es zur manipulieren serverseitige Skripte zur Benutzeranmeldung.
Es gibt 3 Arten des Cross-Site-Scripting/XSS
Reflektiertes Cross-Site-Scripting/XSS
- Schädliches Skript an den Webserver gesendet durch:
- Aufruf einer manipulierten URL
- Absenden eines präparierten Formulars wird das
- Webserver gibt Datenohne Überprüfung an den Client zurück
- Schadcode wird nicht auf dem Server gespeichert
- Beliebte Angriffsziele sind dynamische Websites
Beispiel: Bei dieser XSS-Variante bringt der Angreifer sein Skript in einem präparierten Link unter. Im Anschluss versucht er den Link – bevorzugt über E-Mails – weiterzuleiten. Der enthaltene Schadcode wird nur ausgelöst, wenn der Benutzer den erhaltenen Link aufruft. Tut er dies, wird ihm beispielsweise ein imitierter Anmeldebildschirm seines Online-Bankings präsentiert. Anstatt die eingegebenen Daten an den Webserver der Bank zu senden, sorgt das Skript jedoch für eine Umleitung auf die Adresse, die der Angreifer zuvor bestimmt hat.
Persistentes Cross-DockerSite-Scripting/XSS
Beim persistenten bzw. beständigen XSS werden die schädlichen Skripte auf dem Webserver gespeichert und bei jedem Aufruf durch einen Client ausgeliefert. Zu diesem Zweck werden solche Webanwendungen für den Angriff ausgewählt, die Benutzerdaten serverseitig speichern und anschließend ohne Überprüfung oder Codierung ausgeben. Besonders anfällig für diese Scripting-Art sind Blogs und Foren.
Beispiel: In einem Forum werden von Usern geschriebene Beiträge in einer Datenbank gespeichert. Dabei werden diese oftmals weder überprüft noch verschlüsselt hinterlegt. Diese Chance machen sich die Angreifer zunutze und fügen einem ganz normalen Forenpost ihr schädliches Skript hinzu. Nichtsahnende User erhalten den jeweiligen Link zu dem Post per E-Mail oder gelangen zufällig zu dem entsprechenden Eintrag und führen das Skript mit dem Aufruf aus.
DOM-basiertes Cross-Site-Scripting/XSS Diese Angriffsart wDockerird auch lokales XSS genannt. Über das Aufrufen einer manipulierten URL wird der Schadcode durch eine Lücke in einem clientseitigen Skript ohne Überprüfung ausgeführt. Im Gegensatz zu persistentem und reflektiertem XSS ist der Webserver nicht an dem Prozess beteiligt. Entsprechend sind auch statische Websites, welche die jeweilige Skript-Sprache unterstützen, durch diese Scripting-Variante gefährdet.
Beispiel: Das DOM-basierte setzt wie das reflektierte Cross-Site-Scripting voraus, dass zunächst ein Link vom Benutzer geöffnet wird. Nach dem Öffnen des Links wird das enthaltene Skript direkt in ein clientseitiges Skript wie JavaScript integriert. Selbiges liest den Argumentwert der URL aus und startet dadurch die Website inklusive der schädlichen Anwendung.
So schützen Sie sich vor XSS-Angriffen Die negativen Folgen, die Cross-Site-Scripting für Website-Nutzer und -Betreiber hat, sind nicht zu unterschätzen: AlsDocker User riskieren Sie den Verlust Ihrer Daten oder fungieren unbemerkt als unfreiwilliger Komplize der Angreifer. Als Website-Betreiber sind sie für die Daten Ihrer Kunden bzw. Besucher verantwortlich und können zudem direkt durch Angriffe getroffen werden: Schädliche Inhalte und Serverabstürze mindern die Besucherzahlen, und auf lange Sicht reagieren Suchmaschinen wie Google mit Abstrafungen und potentielle Kunden mit Misstrauen. Das führt letztlich auch zu finanziellen Einbußen. Daher sollten Sie als Website-Betreiber, aber auch als Nutzer unbedingt Maßnahmen einleiten, um Cross-Site-Scripting zu verhindern.
Schutzmaßnahmen für Internet-User Die einfachste Möglichkeit, clientseitiges Cross-Site-Scripting zu verhindern, ist das Ausschalten der JavaScript-Unterstützung im Browser. Ist dieses sogenannte Active Scripting deaktiviert, haben DOM-basierte XSS, die auf JavaScript abzielen, keine Wirkung, da die schädliche Anwendung erst gar nicht gestartet wird. Für einige Browser existieren außerdem Add-ons, die Sie vor XSS-Angriffen schützen können. So gibt es für Mozilla Firefox beispielsweise die Erweiterung NoScript. In den Standardeinstellungen sind alle aktiven Inhalte von Websites, wie z. B. JavaScript, Java-Applets, Adobe Flash oder Microsoft Silverlight, automatisch gesperrt. Auf Wunsch können Sie die Bloenschutzbeauftragter rlpenschutzbeauftragter rlpenschutzbeauftragter rlpckierung temporär aufheben oder die jeweilige Seite auf die Whitelist setzen, wenn Sie sich sicher sind, dass jene zu 100 Prozent vertrauenswürdig ist. Ein letzter Tipp, den Sie nicht nur in Zusammenhang mit den Gefahren des Cross-Site-Scriptings unbedingt beherzigen sollten: Fremddaten wie Links sollten Sie stets skeptisch gegenüber sein und vor der Verwendung gründlich unter die Lupe nehmen.
Das können Sie als Website-Betreiber gegen XSS-Attacken unternehmen Damit Ihre Webanwendungen keine Basis für XSS-Angriffe bieten, müssen Sie zunächst alle eingehenden Eingabewerte als unsicher betrachten. Bevor diese also vom Webserver in Empfang genommen werden, sollten sie entsprechend geprüft werden. Die sicherste Methode ist hier wieder – wie beim Browser-Add-on NoScript für Clients – das Anlegen einer Whitelist. Sofern es die Kapazitäten erlauben, die Eingaben auf Ihrer Website zu scannen und nur vertrauenswürdige Inhalte zuzulassen, erzeugen Sie auf diese Weise einen exzellenten Schutz gegen Cross-Site-Scripting.
Zusätzlich zu den Eingabedaten sollte allerdings auch die Datenausgabe abgesichert werden. Hierzu ist es notwendig, dass die problematischen HTML-Metazeichen durch entsprechende Zeichenreferenzen ersetzt werden; dadurch werden die Metazeichen als normale Zeichen gewertet und potenziell eingeschleuste Skripte können nicht gestartet werden. Die meisten Programmier- und Skriptsprachen wie Perl, JavaScript oder PHP besitzen zu diesem Zweck bereits vordefinierte Funktionen zur Zeichenersetzung bzw. -maskierung, die Sie bedenkenlos verwenden können.
Einfache XSS-Attacken wehren Sie außerdem durch den Einsatz von Web-Application-Firewalls ab.
Cross-Site-Scripting bildet oftmals nur die Vorstufe für schwerwiegendere Angriffe, die Sie mit einem umfassenden Schutz der ein- und ausgehenden Dateneingabe Ihres Webservers also schon in der Entstehung vereiteln können.