ChristophTutorials - (Video)Tutorialseite und IT-Blog

Zitat der Woche

Früher hatten wir die spanische Inquisition. Jetzt haben wir die Kompatibilität.
- Herbert Klaeren

Letzte Artikel

Zufällige Artikel

Verzeichnisse

Blogverzeichnis - Blog Verzeichnis bloggerei.de Blogverzeichnis Blog Verzeichnis Blog Top Liste - by TopBlogs.de Blog Button
Datenschutzerklärung
Impressum
Cross-Site Scripting - 13.05.2011
In diesem Tutorial wird erklärt, was Cross-Site Scripting allgemein ist, welche verschiedene Formen von Cross-Site Scripting es gibt und wie man sich dagegen schützen kann.
Die Schwachstelle
Bei Cross-Site Scripting (XSS) geht es immer darum eine Schwachstelle einer Website auszunutzen, die darauf basiert, dass Eingaben nicht darauf geprüft werden, ob sie Befehle enthalten, die zum Beispiel beim Aufruf der Seite ausgeführt werden. Das ersetzen dieser Befehle durch einfachen Text heißt maskieren. So kann man zum Beispiel das <-Zeichen, dass in HTML den Anfang eines Befehls bedeutet, als Text darstellen lassen, indem man &lt; schreibt und so wird aus den HTML-Befehlen einfacher Text, der keinen Schaden anrichten kann.
Nicht-persistentes XSS
Beim nicht-persistenten Cross-Site Scripting gelangt der Schadcode nur temporär auf den Server. Es wird zum Beispiel HTML- oder JavaScript-Code in das Suchfeld einer Website eingegeben. Häufig wird nun der Suchstring wieder ausgegeben (z.B. in einem "Sie suchten nach '...'") und wenn der eingegebene HTML- oder JavaScript-Code nicht so umgeschrieben wurde, dass er nur als Text angezeigt wird, so wird dieser ausgeführt. Auf der Seite http://testasp.vulnweb.com/Search.asp ist es möglich, das einmal auszuprobieren. Zunächst geben wir in das Suchfeld einfach einen ganz normalen Text ein, zum Beispiel "test". Wir sehen nun, dass die Webseite uns die Rückmeldung "You searched for 'test'" gibt. Geben wir nun folgenden HTML-Code ein, welcher eine kleines Anmeldeformular anzeigt (welches in diesem Fall nur als Test dient und nirgendwo hinführt):
<form style="font-size:1.5em;margin:1em 0 30em 3em">Bitte geben sie ihre Zugangsdaten ein, um fortzufahren:<br><br><table><tr><td>Name:</td><td><input type="text"></td></tr><tr><td>Passwort:</td><td><input type="password"></td></tr><tr><td> </td><td><input type="submit" value="Anmelden"></td></tr></table></form>
Eigentlich sollte hinter dem "You searched for '" der oben gezeigte HTML-Code in dieser Form angezeigt werden, doch mangels Maskierung wird er ausgeführt:
Das Formular wurde ausgeführt und auf der Seite angezeigt.
Das "You searched for '" und die Suchergebnisse rücken dank großer Schrift und viel Anstand in den Hintergrund und mit ein wenig JavaScript könnte man sie auch ganz unsichtbar machen. Wenn das Suchformular eines Onlineshops oder einer anderen Seite die Eingaben nicht entschärft, so kann man eine Perfekte Kopie des Login-Formulars erstellen und das ist dann auch noch auf der richtigen Domain. Den Link zu der manipulierten Seite kann man dann per E-Mail verschicken und behaupten, etwas sei mit dem Konto nicht in Ordnung und man solle doch bitte auf den folgenden Link klicken und sich anmelden. In unserem Beispiel ist der Link folgender:
http://testasp.vulnweb.com/Search.asp?tfSearch=%3Cform+style%3D%22font-size%3A1.5em%3Bmargin%3A1em+0+30em+3em%22%3EBitte+geben+sie+ihre+Zugangsdaten+ein%2C+um+fortzufahren%3A%3Cbr%3E%3Cbr%3E%3Ctable%3E%3Ctr%3E%3Ctd%3EName%3A%3C%2Ftd%3E%3Ctd%3E%3Cinput+type%3D%22text%22%3E%3C%2Ftd%3E%3C%2Ftr%3E%3Ctr%3E%3Ctd%3EPasswort%3A%3C%2Ftd%3E%3Ctd%3E%3Cinput+type%3D%22password%22%3E%3C%2Ftd%3E%3C%2Ftr%3E%3Ctr%3E%3Ctd%3E%26nbsp%3B%3C%2Ftd%3E%3Ctd%3E%3Cinput+type%3D%22submit%22+value%3D%22Anmelden%22%3E%3C%2Ftd%3E%3C%2Ftr%3E%3C%2Ftable%3E%3C%2Fform%3E
Persistenter Angriff
Bei einem Persistenten Angriff bleibt der Schadcode dauerhaft auf dem Server. Das kann zum Beispiel bei einem Gästebuch passieren, das nicht abgesichert ist. Der Code wird dann bei jedem Aufruf der Seite ausgeführt und wenn die Datei, die zum Beispiel die Gästebucheinträge enthält, serverseitig ausgeführt wird, kann man über die serverseitige Sprache weiteren schädlichen Code hochladen und die Dateien auf dem Server sogar fast beliebig bearbeiten, so kann man den hochgeladenen Code gut verstecken. Eine Beispielseite kann es hier natürlich nicht geben, da es viel zu gefährlich für den Betreiber wäre, da die Seite zum Beispiel zum verschicken von Spam-Mails oder als Downloadseite für illegale Programme verwendet werden könnte.
Der lokale Angriff
Beim lokalen oder auch DOM-basierten Angriff ist der Server überhaupt nicht beteiligt. Der Angriff erfolgt durch die Übergabe von Parametern an lokale Skriptsprachen. Werden die Parameter nicht entschärft bevor sie ausgegeben werden, so ist es auch hier möglich dem Benutzer beispielsweise eine Aufforderung zum Einloggen vorzugaukeln.
Schutz
Als Nutzer hat man nicht viele Möglichkeiten sich vor XSS zu schützen. Man kann kann lediglich ein wenig aufpassen und sich nicht über irgendwelche Links in E-Mails auf einer Seite anmelden, sondern indem man direkt auf die Seite geht. Als Schreiber der Seite sollte man immer darauf achten, dass möglichst alle Eingaben entschärft werden indem zum Beispiel die Spitzen Klammern ("<" und ">") maskiert, also durch ("&lt;" und &gt;") ersetzt werden. Wird der Code ausgeführt oder in eine Datenbank geschrieben, müssen auch noch weitere Zeichen, die in diesen Bereichen Schaden anrichten können, durch Maskierungen ersetzt werden.

Bei allen drei Angriffen ist es übrigens natürlich möglich Schwachstellen des Browsers oder eines Add-ons auszunutzen um den Computer eines Besuchers zu infizieren. Dagegen helfen bloß die üblichen Mittel.

Kommentare:

- kein Kommentar -
Um einen Kommentar zu schreiben ist eine Anmeldung nötig.