Cross-Site-Scripting? Alles halb so wild?

Unterschätzte Gefahr – XSS Angriffe im Netz

Ein wesentlicher Teil der von HackerWerkstatt entdeckten Lücken in Web-Anwendungen stellen die sogenannten Cross-Site-Scripting (XSS) Schwachstellen dar. Doch was bedeutet es, wenn die eigene Webseite durch so eine Sicherheitslücke angreifbar ist?

Grundlage für eine XSS Schwachstelle ist das nicht ausreichend gefilterte Input der Besucher. Ob in Webseiten-Suchen, in Datenbankeinträgen oder bei der Übernahme anderer übermittelter Daten wie Formulareingaben, Cookies oder GET-Parametern, die Daten werden ohne eine [ausreichende] Prüfung wieder ausgeben.

Dabei gelangt der potentielle Schadcode in den Quellcode der Webseite und wird unter Umständen auf dem Rechner des Benutzers ausgeführt.

Ein Beispiel

Ein typischer Fehler ist die nicht abgesicherte Suche. Auf der Webseite wird ein Formular zur Suche bereit gestellt. In der Regel wird die Suche dann durch einen Get Parameter in der Webadresse ausgeführt und der gewünschte Suchparameter übergeben.

https://beispiel.com/suche.php?q=[suchbegriff]

An einer anderen Stelle wird bei der Auswertung der Suche dem Besucher noch einmal jener Suchbegriff ausgegeben:

<p>Ihre Suche nach [suchbegriff] war erfolgreich</p>

Und genau an jenem Punkt besteht die Gefahr der Code-Einschleusung. Schauen wir uns einmal an, wie es sich verhalten würde, würde der Angreifer den ganz normalen JavaScript Code <script>alert(‘Hallo Welt’;)</script> an die Adresse übergeben.

https://beispiel.com/suche.php?q=<script>alert('Hallo Welt';)</script>

An der entsprechenden Stelle würde jener Code beim Besucher ausgeführt werden.

<p>Ihre Suche nach <script>alert('Hallo Welt';)</script> war erfolgreich</p>

Auswirkungen?

Ein so gestarteter Cross-Site-Scripting-Angriff auf Webseiten-Besucher kann vielschichtige Probleme mit sich bringen. Besteht die Lücke in einem Bereich, wo der Benutzer sich eingeloggt hat, können die Session-Daten abgegriffen und der Benutzer-Account übernommen werden. Ist das Opfer der Admin höchst persönlich, gelangen die Angreifer so in den Adminstrationsbereich.

Aber auch eine Weiterleitung der Kunden und Besucher auf Fishing-Webseiten, Seiten mit Schadcode und andere Szenarien sind denkbar.

Wie wird Cross-Site-Scripting ausgenutzt?

Persistente XSS

Bei der persistenten Cross-Site-Scripting Schwachstelle, wird der Code in einer Datenbank gespeichert und immer wieder ausgeführt. Zum Beispiel könnte eine ungeprüfte Kommentarfunktion einen Schadcode beinhalten, sobald jemand die Seite mit dem Kommentar aufruft, wird der Schadcode ausgeführt. Der Schadcode bleibt also auf der Webseite erhalten.

Reflektierte (nicht persistente) XSS

Bei dieser Attacke wird dem Benutzer durch eine manipulierte Webseite, einer manipulierten Internetadresse der Schadcode untergeschoben, und dieser dann auf der Webseite ausgeführt. Die Ausnutzung der reflektierten XSS bedarf auf der einen Seite einen ausgeklügelten Angriff und auf der anderen Seite meist eine Interaktion des Benutzers. [ Zum Beispiel durch das Anklicken eines Links ] Hier ist vor allem das Thema Social Engeneering von Bedeutung.

Wie verhindern?

In der Programmiersprache PHP steht die Funktion htmlspecialchars() zur Bereinigung der Eingaben bereit. Sollen also von Besuchern übermittelte Werte auf der Webseite ausgegeben werden, ist eine vorherige Absicherung mit genanntem Befehl dringend erforderlich.

Die Gefahr eigener Filter

Als nicht sicher hingegen dürfen selbst geschriebene Filter betrachtet werden. Immer wieder gelingt es Angreifern diese zu überlisten. So zeigt das folgende Beispiel die mögliche Gefahr.

Gefiltert wird das Wort script. Bei einem String wie dem folgenden, wäre das hilfreich:

<script>

Mit angewandtem Filter ergäbe das:

<>

Doch wie verarbeitet der Filter den folgenden String?

<SCRIscriptPT>

Der bereinigte String sieht dann genau so aus, wie es nicht beabsichtigt war:

<SCRIPT>

Da der Filterbegriff vorkommt, wird dieser entfernt, am Ende “überlebt” der eigentlich unerwünschte JavaScript-Code und wird verarbeitet.

Weiterführende Informationen

Wir helfen!

Das Team der HackerWerkstatt steht Ihnen natürlich zur Verfügung und prüft Ihre Webseiten auch auf Cross-Site-Scripting Lücken.