Clickjacking - Drag&Drop-Angriffe und weitere Neuigkeiten
In der vorherigen Folge erfuhren Sie, wie sich über Clickjacking Texte in Textfelder einfügen lassen. Ein Angreifer kann so Formulare auf fremden Seiten mit Texten seiner Wahl füllen. Es ist aber auch möglich, Texte von fremden Seiten in die eigene Seite kopieren zu lassen und dadurch sensitive Informationen auszuspähen:
Texte mit Clickjacking kopieren
Die Same-Origin-Policy verhindert, dass eine Seite den Inhalt eines von einer anderen Domain eingebundenen iframes liest. Mittels Drag&Drop und Clickjacking ist es trotzdem möglich, Daten aus einen fremden iframe zu kopieren - sofern die verschoben werden können. Das trifft insbesondere auf Links und Bilder zu, aus denen nach dem Fallen lassen auf der Seite des Angreifers ein URL wird, der u.U. vertrauliche Informationen enthält. Oft sind aber die Texte auf der fremden Seite interessanter als Links und Bilder. Um sie verschiebbar zu machen, müssen sie selektiert werden. Das passiert genau so wie eine Drag&Drop-Operation: Die Maustaste wird am Anfang des gewünschten Bereichs gedrückt und die Maus bis zum Ende des gewünschten Bereichs geführt, wo die Maustaste wieder losgelassen wird. In Verbindung mit Clickjacking und dem in der vorherigen Folge beschriebenen Einfügen von Texten in Textfelder können beliebige Texte aus einer Webseite kopiert werden: In einem ersten Durchlauf wird der gewünschte Text selektiert, in einem zweiten in ein Formular auf der Seite des Angreifers geschoben. Paul Stone bezeichnet das in seinem Paper als 'content extraction':
- Ein unsichtbarer iframe wird am Mauszeiger befestigt, so dass er den Mausbewegungen folgt.
- Das gewünschte Dokument wird so im iframe positioniert, dass sich die Maus über den Anfang des gewünschten Textbereichs befindet.
- Jetzt wird der Benutzer dazu gebracht, eine Verschiebe-Operation zu beginnen, d.h. die Maustaste zu drücken.
- Das Dokument wird so im iframe positioniert, dass sich die Maus über dem Ende des gewünschten Textbereichs befindet.
- Der Benutzer muss die Maus nun zumindest um einige Pixel bewegen, um den gewünschten (unsichtbaren) Text auszuwählen.
- Jetzt muss der Benutzer zum Loslassen der Maustaste (Drop) und dem Verlassen des iframe gebracht werden.
- Das Dokument wird so im iframe positioniert, dass sich die Maus über dem nun selektierten Text befindet.
- Jetzt muss der Benutzer zu einer zweiten Drag&Drop-Operation verleitet werden, bei der er wie im ersten Beispiel den selektierten Text auf die Seite des Angreifers schiebt.
- Das Skript des Angreifers kann den Text mit der
getData()
-Methode lesen oder über ein Formular an den Angreifer schicken.
Wie schon im Fall des in der vorherigen Folge beschriebenen 'Text-Field Injection'-Angriffs kann der Angreifer wieder die Positionen des iframes und des Dokuments darin bestimmen, so dass zwei beliebige Drag&Drop-Operationen ausreichen, die z.B. als Spiel getarnt werden können. Es ist übrigens nicht notwendig, dass der Angreifer wie beim Clickjacking den Aufbau der Seite kennt, auch unbekannte Seiten können so kopiert werden - der Angreifer selektiert dann einfach die komplette Seite. Ebenso können Daten aus Browser-Plugins, z.B. angezeigte PDF-Dateien, kopiert werden.
Nachtrag 11.8.2011:
Eine Schwachstelle im Internet Explorer erlaubt in Verbindung mit der
'content extraction' einen neuen Angriff:
Cookiejacking.
Ende Nachtrag
HTML-Quelltext mit Clickjacking kopieren
Oft ist der HTML-Quelltext für einen Angreifer noch interessanter als
die sichtbaren Inhalte der Seite, enthält er doch z.B. Token zum
Schutz vor Cross-Site-Request-Forgery-Angriffen oder andere Informationen.
Die meisten Browser stellen Editorfunktionen bereit, die das Bearbeiten des
HTML-Codes erlauben und die z.B. durch Setzen des in HTML5 spezifizierten
contentEditable
-Attributs eines Objekts aktiviert werden
können. Um den HTML-Quelltext auszuspähen, wird die Seite in so
einen editierbaren Bereich auf der Seite des Angreifers geschoben. Je nach
verwendeten Browser werden dabei unterschiedlich viele Teile des Quelltexts
kopiert: Im Internet Explorer und Firefox wird alles zwischen dem ersten
und letzen sichtbaren Element kopiert, in Webkit-Browsern wie Google Chrome
nur sichtbare Elemente, wobei allerdings Attribute wie IDs, Klassen und URL
enthalten sind.
In Firefox kann der HTML-Quelltext auch über das Pseudo-Protokoll
"view-source" geladen werden: Statt http://www.opfer.example/
wird im iframe dann view-source://www.opfer.example/
geladen.
Das hat den Vorteil, dass zum einen der gesamte HTML-Quelltext samt
Head-Bereich ausgespäht werden kann, zum anderen enthaltener
JavaScript-Code nicht ausgeführt wird, da es sich um einen statischen Text
handelt. Die Same-Origin-Policy verhindert zwar den Zugriff auf diesen
Text, aber die lässt sich ja mit dem 'content extraction'-Angriff umgehen.
JavaScript ist gut, Java ist besser
Bei den in der vorherigen Folge und oben vorgestellten Drag&Drop-Angriffen muss das Opfer mindestens 3 Aktionen durchführen: Die Maustaste drücken, die Maus bewegen und die Maustaste loslassen. Die weitaus mächtigere Drag&Drop-API von Java erlaubt es, diese notwendigen Aktionen weiter zu minimieren, so dass der 'text-field injection'-Angriff mit einfachen Mausklicks durchgeführt werden kann. Außerdem ist es möglich, eine Drag&Drop-Aktion ohne Zutun des Benutzers auszulösen. Ist die Maustaste dabei nicht gedrückt, wird der zugehörige Drop sofort ausgeführt. Damit ist es einem Java-Applet möglich, verschiedene Formularfelder automatisch auszufüllen, lediglich zum Abschicken wird dann noch ein über Clickjacking umgeleiteter Mausklick des Benutzers benötigt.
Clickjacking ohne bösartigen Server
Normalerweise benötigt ein Angreifer für einen Clickjacking-Angriff eine Möglichkeit, ein oder zwei eigene Webseiten irgendwo zu speichern. Robert 'RSnake' Hansen hat nun eine Möglichkeit beschrieben, wie Clickjacking auch ohne eigenen Speicherplatz möglich ist: Der Angreifer kann seine bösartigen Inhalte über eine normale Cross-Site-Scripting-Schwachstelle in eine fremde Seite einschleusen. Dazu wird erst aus einer reflektiven XSS-Schwachstelle DOM-basiertes XSS gemacht, indem XSS-Code eingeschleust wird, der einen übergebenen Fragmentbezeichner als XSS-Code auswertet, und dann darüber der Clickjacking-Angriff eingefügt.
Mit der Vorstellung der neuesten Angriffstechniken ist das Thema "Clickjacking" zumindest vorerst abgeschlossen. Ich fürchte, wir werden in Zukunft noch oft davon hören, und wahrscheinlich werden auch noch weitere mögliche Angriffe entdeckt werden. Thema der nächsten Folge ist ein neuer Ansatz für Phishing-Angriffe: Tabnabbing.
Update 13.5.2015
Aus Anlass des 5jährigen Blog-Jubiläums habe ich alle
Clickjacking-Artikel zusammengefasst, überarbeitet, ergänzt und
auf den aktuellen Stand gebracht. Das Ergebnis ist ein (natürlich
kostenloses) eBook im ePub- und PDF-Format:
5 Jahre Blog - Als Special: "Clickjacking"-eBook
Ende des Updates vom 13.5.2015
Übersicht über alle Artikel zum Thema
- Clickjacking - Angriffe auf Seiten ohne Schwachstellen
- Clickjacking - Auch komplizierte Aktionen sind möglich
- Clickjacking - Framebuster oder HTTP-Header verhindern Angriffe
- Der Angriff der Clickjacking-Würmer, "Likejacking" und "Buttonjacking"
- Clickjacking - "Likejacking" unter die Haube geguckt
- Clickjacking - The next Generation
- Clickjacking - Drag&Drop-Angriffe und weitere Neuigkeiten
- Cookiejacking - Keksdiebe im Internet Explorer
- Likejacking - Facebook im Visier der Cyberkriminellen
- Clickjacking - Gute und Schlechte Nachrichten
- Standpunkt: Clickjacking gegen Flash, urchin.js und Duqu - nichts als Wiederholungen!
- Neue Angriffe auf Webanwendungen über Clickjacking und Cookies
- Clickjacking-Angriffe verhindern - der aktuelle Stand der Dinge
- Clickjacking: Cross Origin Resource Jacking und ein Clickjacking-BeEF-PlugIn
- Clickjacking: "Zaubertricks" ermöglichen Likejacking und mehr
- Dieses und Jenes zum Clickjacking
- 5 Jahre Blog - Als Special: "Clickjacking"-eBook
Trackbacks
Dipl.-Inform. Carsten Eilers am : Präsentationen und Links zu meinen #wtc11-Vorträgen sind online
Vorschau anzeigen
Dipl.-Inform. Carsten Eilers am : Neues zur Sicherheit von Clients, nicht nur im Web
Vorschau anzeigen
Dipl.-Inform. Carsten Eilers am : HTML5 Security - Weitere Angriffe
Vorschau anzeigen
Dipl.-Inform. Carsten Eilers am : Drucksache: PHP Magazin 2.2014 - Angriffsziel Webbrowser
Vorschau anzeigen