![]() |
|
URL dieser Newsmeldung:
19.06.2008
About Security #160: Schwachstellensuche: XSS findenIn dieser Folge geht es um kompliziertere XSS-Schwachstellen im Vergleich zu den einfachen Fällen, die in About Security #158 vorgestellt wurden. In About Security #159 erfuhren Sie, wie man genauer zu untersuchende Parameter in einer Webanwendung findet. Ab dieser Folge dreht sich alles um die Frage, ob die gefundenen Parameter XSS-Angriffe erlauben oder nicht. Beispiel 1: Normaler Text
Das eingegebene Testmuster, z.B.
In diesem Fall kann der gewünschte Schadcode, z.B.
direkt eingegeben werden:
Beim Rendern der Seite wird die Alertbox geöffnet. N E U ! Security
aktuell Der Angriff wird schwieriger, wenn z.B. script-Tags ausgefiltert werden. Dann muss entweder ein Angriff gewählt werden, der ohne script-Tags auskommt, oder die script-Tags müssen an der Filterfunktion vorbeigeschleust werden.
Oft reagieren Filter nur auf "normale" Tags wie
Auch die Schachtelung von Tags kann einfache Filter überlisten: Wird die Eingabe nur einmal durchsucht und dabei jeder gefundene script-Tag gelöscht, würde eine Eingabe wie z.B.
nach der Filterung, bei der die zur Tarnung eingefügten
vollständigen Tags Das XSS Cheat Sheet enthält eine ganze Reihe möglicher Alternativen, um Filter zu umgehen. Beispiel 2: input-TagsDas eingegebene Testmuster erscheint in einem input-Tag:
Einfach nur den XSS-Code, z.B.
zum Öffnen einer Alertbox, einzuschleusen, funktioniert an dieser Stelle nicht. Trotzdem ist ein XSS-Angriff möglich: Die doppelten Anführungszeichen um das Testmuster sowie das input-Tag werden geschlossen und der gewünschte XSS-Code angehängt:
Die abschließende Zeichenkette
Werden
als eingeschleuster XSS-Code ergibt
Wenn der onfocus-Event ausgelöst wird, wird der eingeschleuste Code ausgeführt. Beispiel 3: img-TagsDas eingegebene Testmuster erscheint im src-Attribut eines img-Tags:
In einigen Browsern darf das Attribut einen URL mit dem javascript:-Protokoll enthalten, sodass die Schwachstelle direkt ausgenutzt werden kann:
ergibt
wodurch der eingeschleuste Code beim Auswerten des img-Tags ausgeführt wird. Soll der Angriff in jedem Browser funktionieren, kann ein nicht existierendes Bild angegeben und ein onerror-Eventhandler mit dem gewünschten Code eingefügt werden:
ergibt
Beispiel 4: JavaScriptDas Testmuster erscheint in einem JavaScript-Skript der Webseite:
Um darüber Code einzuschleusen, wird das einfache Anführungszeichen und danach mit einem Semikolon der Ausdruck beendet und dann der Schadcode eingefügt:
Das angehängte
Der Schadcode wird zusammen mit dem Skript ausgeführt. ZusammenfassungUm mögliche XSS-Schwachstellen zu finden, müssen zuerst die Parameter ermittelt werden, die in der von der Webanwendung erstellten Seite ausgegeben werden. Dazu wird für jeden Parameter ein Testmuster eingegeben und dies in der erzeugten Seite gesucht. Jedes Auftreten des Testmusters in der Webseite muss dann daraufhin überprüft werden, ob darüber Scriptcode eingeschleust werden kann. Dabei sind zwei Punkte zu beachten: Ist an der jeweiligen Stelle das Einschleusen von Code prinzipiell möglich und wenn ja, können eventuell vorhandene Schutzfunktionen umgangen werden? Während bei der Suche nach XSS-Schwachstellen alle Parameter geprüft werden müssen, reichen zur Verhinderung von XSS-Angriffen wenige Schritte aus. Wie Sie XSS-Angriffe verhindern, erfahren Sie in der nächsten Folge. Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen! About Security – Übersicht zum aktuellen Thema "Schwachstellensuche – III. Angriffe über vom Benutzer gelieferte Daten: XSS"
|
||
|