Passwort-Krake und Traffic-Booster – DOM Based XSS

Hacker Manipulieren Steffen Lippke Hacking Series
Hacker Manipulieren Steffen Lippke Hacking Series

Deine Features – als Waffe gegen Deine Webseite?

Hacker nutzen Formulare, URLs und Suchen auf Deiner Webseite, um diese zu manipulieren.

… und Deine Besucher leiden darunter.

Wie kann ein Hacker auf meiner Webseite Inhalte verändern?

Aufgabe: JavaScript als Passwort-Krake

Um was geht’s? – DOM Based XSS

DOM Based XSS ist eine Art des Cross Site Scripting, welches in der DOM sichtbar wird. Dabei bleibt der grundlegend HTML-Code gleich, während der Angreifer versucht die DOM zu manipulieren und zu verändern.

Knappe Einordnung

DOM Based XSS gehört zu den Cross Site Scripting Arten, welche zum Ziel hat bösartigen Code auf einer fremden Webseite darstellen zu können.

Mögliche Schlupflöcher können die Formulare, die Suchfelder oder Deine URL mit GET-Parameter auf Deiner Webseite sein. „Professioneller“ Schadcode kann bis zu den Datenbanken vordringen. Wenn anderen Besucher die Webseite aufrufen, da führt Deiner Webseite den Schadcode aus.

Injection über die GET Parameter
Injection über die GET Parameter

Zusammengefasst: Hacker können viel Mist damit betreiben.

Grundlagen: HTML und JavaScript

XSS + DOM einfach erklärt

DOM – Document Object Model beschreibt einen Baum für HTML-Objekte. Der Zugriff auf die DOM ermöglicht den Aufruf / Ansprechen einzelner Elemente z.B. einem Link, einen Textblock oder einer div-Box.

Exemplarische DOM in HTML
Exemplarische DOM in HTML

Das W3C definiert die DOM, sodass wie heute eine einheitliche Struktur auf allen „gültigen“ Webseiten haben. Der Begriff DOM ist fehl am Platz: Eigentlich müsst die DOM „Webseiten-Interface“ bedeuten.

Persistente und nicht-Persistente XSS – Persistente XSS basiert darauf, dass der Server permanent die Script Datei speichert und bei Aufruf der richtigen Webseite führt das XSS sich selbst aus.

Persistente XSS ist findbar in Datenbanken
Persistente XSS ist findbar in Datenbanken

Das führt dazu, dass andere ahnungslose Nutzer ungewollte Aktionen bei Aufruf ausführen. Nicht-persistente XSS ist direkt im Link oder in der HTML-Seite eingebettet.

 

Hack IT: Mit JavaScript Unfug machen

Blick in den JS- Code

Die Programmiersprache JavaScript ermöglicht Hackern Deine Webseite in Form und Inhalt zu ändern. Z.B. kann JavaScript ganze HMTL-Code Bestandteile einfügen, in dem wir document.wirte() Funktion nutzen. document.getElementById(„“) kann ein bestimmtes Objekt auf der Webseite ansprechen und verändern. So können Hacker z.B. eine Fake-Login zu dem echten Login erstellen:

Dieser Login kann mit XSS generiert sein
Dieser Login kann mit XSS generiert sein

Document.write() generiert auf der Seite des Opfers einen HTML-Formular. Die eingegebenen Login Daten vergleicht das Formular nicht echten Passwörtern, sondern speichert die Daten in Klartext auf unserer Datenbank.

11 Kostenlose Exklusive App Dev Tipps

Deine Mail für Zugang zu praxisnahe App Entwicklung Tipps zu erhalten

Wenn der Nutzer auf einer „gekaperten“ Webseite den Nutzernamen und das Passwort im Fake-Login absendet, gibt unser Fake Login die Nachricht aus: „Wir sind im Wartungsmodus! Versuchen sie die Anmeldung später noch einmal.“ Die Zugangsdaten sind aber schon weg.

Fake-Logins geht noch besser

Eine Steigerung vom diesem Fake-Login ist das Auslesen des „echten Logins“.

JavaScript legt eine Click-Listener auf den Anmeldebutton. Nach Eingabe des Benutzernamens und Passworts liest der JS Code die Inhalte aus und sendet diese an unseren Server. Der Nutzer merkt davon nichts, weil er sich „ganz normal“ in das bekannte System einloggen konnte

Mehr Traffic von Hackern

Auf manchen Plattformen kannst Du Dir Traffic für Deine Webseite „einkaufen“. Viel Traffic sollte nach Google nur der bekommen, der guten Content produziert. „Die Black Hat“ – SEO nutzen die schlechte SEO Agentur:

Ein paar Zeilen JavaScript Code leitet den gesamten Traffic von der Opfer-Seite direkt auf die Kundenseite um. Dazu legen wir über die gesamte Seite einen durchsichtigen Button.

Der Nutzer möchte auf einen darunterliegenden Link klicken, landet aber auf eine völlig andere Webseite – Nach Google ist diese Art von Traffic nicht vorteilhaft für das Ranking, da die Absprungquote überdurchschnittlich hoch ist (bzw. das ist Hacking).

 

Sicherung: Eine Welt ohne JavaScript?

Sicherungsmaßnahme – Segen und Fluch

Im Jahr 1995 entwickelte Brendan Eich den Vorläufer von JavaScript.

Seitdem diskutiert die Online-Community, ob die Sprache eine riesige Sicherheitslücke im Web darstellt oder ob die Sprache unverzichtbar ist. Einzelne „Internet Explorer“ Versionen deaktivierten JavaScript zwischen zeitlich komplett – Die Realität ist anderes:

Internet Explorer akzeptiert inzwischen JavaScript
Internet Explorer akzeptiert inzwischen JavaScript

Heute basieren viele Firmen-Homepages auf dem Konzept der „Single-Page-Application“. Diese entwickeln Programmierer auf der Grundlage eines Frameworks wie Ionic (Einsteiger Tutorial) und Angular Apps. Ohne JavaScript läuft hier nichts mehr.

Umwandlung von Code in Text

Viele Foren unterdrücken die Kompilierung von JavaScript bei der Erstellung von Posts komplett. Die meisten Eingabefelder und URL-Parameter wandeln „bösen“ JavaScript Code in einen „harmlosen“ Klartext um. Das erhöht die Sicherheit vor XSS enorm.

Formulare sind der XSS Klassiker
Formulare sind der XSS Klassiker

Die Umwandlung von Script-Code in Fließtext basiert auf der Konvertierung der Typen Script-Zeichen:

  • Alle & ändern zu &
  • Alle < ändern zu &lt;
  • Alle > ändern zu &gt;
  • Alle “ ändern zu &quot;
  • Alle ‚ — ändern zu > &#x27;

Diese Zeichenkette kann z. B. PHP innerhalb eins div oder span Tags einfügen. Wenn Du in Deinem Code JavaScript nutzt und Strings von einem Inputfeld stammen, sollten PHP diese vorher konvertieren.

Das Gleiche gilt bei URLs. Die GET-Parameter kann ein Hacker für JavaScript Injections missbrauchen.

<script>var eineVarible = “BOSER CODE KANN HIER REIN?!“;:</script>

Selbst bei CSS sollt ein aufmerksamer Programmierer vorsichtig sein. Wenn Daten von außen kommen, kann der Aufruf der CSS den JavaScript Code ausführen:

  • { background-url : "javascript:alert(‘Das ist boese XSS’)"; }
  • { text-size: "expression(alert(‘Das ist boese XSS’))"; }

 

XSS in CSS ist etwas spezieller
XSS in CSS ist etwas spezieller

Der nächste Schritt

Eine Content Security Policy erstellt eine Whitelist mit den Ressourcen, die auf einer Domain aufgerufen werden dürfen. Entfernte Scripts haben somit keine Chance mehr. Der Browser wir mit der Policy nur noch die Ressourcen laden, die auf Deiner Webseite befinden.

11 Kostenlose Exklusive App Dev Tipps

Deine Mail für Zugang zu praxisnahe App Entwicklung Tipps zu erhalten

 

Credits

Icons made by Gregor Cresnar from www.flaticon.com is licensed by CC 3.0 BY  – Icons made by dDara from www.flaticon.com is licensed by CC 3.0 BY – Icons made by Icomoon from www.flaticon.com is licensed by CC 3.0 BY –Icons made by Those Icons from www.flaticon.com is licensed by CC 3.0 BY

Sichere Dir den kompletten
Fundamental Ionic Course

Die kostenlosen Tutorials sind ein Ausschnitt
aus dem Fudamental Ionic Course by Steffen Lippke.

Schon 4832 erfolgreiche Absolventen

  • Code Downloads + umfangreiche Lösungen + Dateien für Grundlagen zum Coden
  • Visuelle Beschreibungen mit HD+ Screenshots und Hilfen
  • Steffen's Clean Code - Erweiterung - Verbesserungs - Tipps
 

100 h Kurslänge | 100 % Geld-Zurück-Garantie | Live-Support

 
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.