Skip to content

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':

  1. Ein unsichtbarer iframe wird am Mauszeiger befestigt, so dass er den Mausbewegungen folgt.
  2. Das gewünschte Dokument wird so im iframe positioniert, dass sich die Maus über den Anfang des gewünschten Textbereichs befindet.
  3. Jetzt wird der Benutzer dazu gebracht, eine Verschiebe-Operation zu beginnen, d.h. die Maustaste zu drücken.
  4. Das Dokument wird so im iframe positioniert, dass sich die Maus über dem Ende des gewünschten Textbereichs befindet.
  5. Der Benutzer muss die Maus nun zumindest um einige Pixel bewegen, um den gewünschten (unsichtbaren) Text auszuwählen.
  6. Jetzt muss der Benutzer zum Loslassen der Maustaste (Drop) und dem Verlassen des iframe gebracht werden.
  7. Das Dokument wird so im iframe positioniert, dass sich die Maus über dem nun selektierten Text befindet.
  8. 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.
  9. 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.

Carsten Eilers

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
Ich habe soeben die Präsentationen zu meinen Vorträgen auf der WebTech Conference hochgeladen. Sie finden Sie auf www.ceilers-it.de/konferenzen/ sowie auch hier: Client Security im Web 2.0 und mit HTML5 Beschreibung: Schwachstel

Dipl.-Inform. Carsten Eilers am : Neues zur Sicherheit von Clients, nicht nur im Web

Vorschau anzeigen
Auch in dieser Folge gibt es einen Überblick über die 2011 auf Sicherheitskonferenzen vorgestellten neuen Angriffe und mögliche Schutzmaßnahmen. Den Anfang macht noch einmal der Web-Client, bevor wir dann zu vom Web unabhän

Dipl.-Inform. Carsten Eilers am : HTML5 Security - Weitere Angriffe

Vorschau anzeigen
Einige Angriffe mit bzw. über HTML5 bilden den (vorläufigen) Abschluss des Themas "HTML5 Security". Los geht es mit dem Missbrauch des Fullscreen API: Phishing mit vollem Bild Wie sich das Fullscreen API von HTML5 für Phishing

Dipl.-Inform. Carsten Eilers am : Drucksache: PHP Magazin 2.2014 - Angriffsziel Webbrowser

Vorschau anzeigen
Im PHP Magazin 2.2014 ist ein Artikel über den aktuellen Stand der Sicherheit von HTML5 und JavaScript erschienen. Im PHP Magazin 3 und 4/2012 wurden zuletzt Artikel über die Sicherheit von HTML5 veröffentlicht. Da drängt s